-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | GLib bindings
--   
--   Bindings for GLib, autogenerated by haskell-gi.
@package gi-glib
@version 2.0.27


-- | Build time configuration used during code generation.
module GI.GLib.Config

-- | Overrides used when generating these bindings.
overrides :: Text


module GI.GLib.Constants

-- | <i>No description available in the introspection data.</i>
pattern WIN32_MSG_HANDLE :: Int32

-- | A macro that should be defined by the user prior to including the
--   glib.h header. The definition should be one of the predefined GLib
--   version macros: <tt><i>GLIB_VERSION_2_26</i></tt>,
--   <tt><i>GLIB_VERSION_2_28</i></tt>,...
--   
--   This macro defines the earliest version of GLib that the package is
--   required to be able to compile against.
--   
--   If the compiler is configured to warn about the use of deprecated
--   functions, then using functions that were deprecated in version
--   <a>VERSION_MIN_REQUIRED</a> or earlier will cause warnings (but using
--   functions deprecated in later releases will not).
--   
--   <i>Since: 2.32</i>
pattern VERSION_MIN_REQUIRED :: Int32

-- | <i>No description available in the introspection data.</i>
pattern VA_COPY_AS_ARRAY :: Int32

-- | Number of microseconds in one second (1 million). This macro is
--   provided for code readability.
pattern USEC_PER_SEC :: Int32

-- | Subcomponent delimiter characters as defined in <a>RFC 3986</a>.
--   Includes <tt>!$&amp;'()*+,;=</tt>.
--   
--   <i>Since: 2.16</i>
pattern URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS :: Text

-- | Generic delimiters characters as defined in <a>RFC 3986</a>. Includes
--   <tt>:/?#[]@</tt>.
--   
--   <i>Since: 2.16</i>
pattern URI_RESERVED_CHARS_GENERIC_DELIMITERS :: Text

-- | The maximum length (in codepoints) of a compatibility or canonical
--   decomposition of a single Unicode character.
--   
--   This is as defined by Unicode 6.1.
--   
--   <i>Since: 2.32</i>
pattern UNICHAR_MAX_DECOMPOSITION_LENGTH :: Int32

-- | Evaluates to a time span of one second.
--   
--   <i>Since: 2.26</i>
pattern TIME_SPAN_SECOND :: Int64

-- | Evaluates to a time span of one minute.
--   
--   <i>Since: 2.26</i>
pattern TIME_SPAN_MINUTE :: Int64

-- | Evaluates to a time span of one millisecond.
--   
--   <i>Since: 2.26</i>
pattern TIME_SPAN_MILLISECOND :: Int64

-- | Evaluates to a time span of one hour.
--   
--   <i>Since: 2.26</i>
pattern TIME_SPAN_HOUR :: Int64

-- | Evaluates to a time span of one day.
--   
--   <i>Since: 2.26</i>
pattern TIME_SPAN_DAY :: Int64

-- | Creates a unique temporary directory for each unit test and uses
--   <tt><i>g_set_user_dirs()</i></tt> to set XDG directories to point into
--   subdirectories of it for the duration of the unit test. The directory
--   tree is cleaned up after the test finishes successfully. Note that
--   this doesn’t take effect until <a>testRun</a> is called, so calls to
--   (for example) <tt><i>g_get_user_home_dir()</i></tt> will return the
--   system-wide value when made in a test program’s <tt><i>main()</i></tt>
--   function.
--   
--   The following functions will return subdirectories of the temporary
--   directory when this option is used. The specific subdirectory paths in
--   use are not guaranteed to be stable API — always use a getter function
--   to retrieve them.
--   
--   <ul>
--   <li><a>getHomeDir</a></li>
--   <li><a>getUserCacheDir</a></li>
--   <li><a>getSystemConfigDirs</a></li>
--   <li><a>getUserConfigDir</a></li>
--   <li><a>getSystemDataDirs</a></li>
--   <li><a>getUserDataDir</a></li>
--   <li><a>getUserStateDir</a></li>
--   <li><a>getUserRuntimeDir</a></li>
--   </ul>
--   
--   The subdirectories may not be created by the test harness; as with
--   normal calls to functions like <a>getUserCacheDir</a>, the caller must
--   be prepared to create the directory if it doesn’t exist.
--   
--   <i>Since: 2.60</i>
pattern TEST_OPTION_ISOLATE_DIRS :: Text

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_MSG_PEEK :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_MSG_OOB :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_MSG_DONTROUTE :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_AF_UNIX :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_AF_INET6 :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SYSDEF_AF_INET :: Int32

-- | The standard delimiters, used in <a>strdelimit</a>.
pattern STR_DELIMITERS :: Text

-- | The square root of two.
pattern SQRT2 :: Double

-- | Use this macro as the return value of a <a>SourceFunc</a> to remove
--   the <a>Source</a> from the main loop.
--   
--   <i>Since: 2.32</i>
pattern SOURCE_REMOVE :: Bool

-- | Use this macro as the return value of a <a>SourceFunc</a> to leave the
--   <a>Source</a> in the main loop.
--   
--   <i>Since: 2.32</i>
pattern SOURCE_CONTINUE :: Bool

-- | <i>No description available in the introspection data.</i>
pattern SIZEOF_VOID_P :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SIZEOF_SSIZE_T :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SIZEOF_SIZE_T :: Int32

-- | <i>No description available in the introspection data.</i>
pattern SIZEOF_LONG :: Int32

-- | The search path separator as a string. This is ":" on UNIX machines
--   and ";" under Windows.
pattern SEARCHPATH_SEPARATOR_S :: Text

-- | The search path separator character. This is ':' on UNIX machines and
--   ';' under Windows.
pattern SEARCHPATH_SEPARATOR :: Int32

-- | Use this for very low priority background tasks.
--   
--   It is not used within GLib or GTK+.
pattern PRIORITY_LOW :: Int32

-- | Use this for high priority idle functions.
--   
--   GTK+ uses <a>PRIORITY_HIGH_IDLE</a> + 10 for resizing operations, and
--   <a>PRIORITY_HIGH_IDLE</a> + 20 for redrawing operations. (This is done
--   to ensure that any pending resizes are processed before any pending
--   redraws, so that widgets are not redrawn twice unnecessarily.)
pattern PRIORITY_HIGH_IDLE :: Int32

-- | Use this for high priority event sources.
--   
--   It is not used within GLib or GTK+.
pattern PRIORITY_HIGH :: Int32

-- | Use this for default priority idle functions.
--   
--   In GLib this priority is used when adding idle functions with
--   <tt><i>g_idle_add()</i></tt>.
pattern PRIORITY_DEFAULT_IDLE :: Int32

-- | Use this for default priority event sources.
--   
--   In GLib this priority is used when adding timeout functions with
--   <tt><i>g_timeout_add()</i></tt>. In GDK this priority is used for
--   events from the X server.
pattern PRIORITY_DEFAULT :: Int32

-- | A format specifier that can be used in <tt><i>printf()</i></tt>-style
--   format strings when printing the <i><tt>fd</tt></i> member of a
--   <a>PollFD</a>.
pattern POLLFD_FORMAT :: Text

-- | Pi divided by 4.
pattern PI_4 :: Double

-- | Pi divided by 2.
pattern PI_2 :: Double

-- | A format specifier that can be used in <tt><i>printf()</i></tt>-style
--   format strings when printing a <tt><i>GPid</i></tt>.
--   
--   <i>Since: 2.50</i>
pattern PID_FORMAT :: Text

-- | The value of pi (ratio of circle's circumference to its diameter).
pattern PI :: Double

-- | Specifies one of the possible types of byte order (currently unused).
--   See <tt><i>G_BYTE_ORDER</i></tt>.
pattern PDP_ENDIAN :: Int32

-- | If a long option in the main group has this name, it is not treated as
--   a regular option. Instead it collects all non-option arguments which
--   would otherwise be left in <tt>argv</tt>. The option must be of type
--   <a>OptionArgCallback</a>, <a>OptionArgStringArray</a> or
--   <a>OptionArgFilenameArray</a>.
--   
--   Using <a>OPTION_REMAINING</a> instead of simply scanning <tt>argv</tt>
--   for leftover arguments has the advantage that GOption takes care of
--   necessary encoding conversions for strings or filenames.
--   
--   <i>Since: 2.6</i>
pattern OPTION_REMAINING :: Text

-- | <i>No description available in the introspection data.</i>
pattern MODULE_SUFFIX :: Text

-- | The minor version number of the GLib library.
--   
--   Like <tt><i>gtk_minor_version</i></tt>, but from the headers used at
--   application compile time, rather than from the library linked against
--   at application run time.
pattern MINOR_VERSION :: Int32

-- | The minimum value which can be held in a <tt><i>gint8</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MININT8 :: Int8

-- | The minimum value which can be held in a <tt><i>gint64</i></tt>.
pattern MININT64 :: Int64

-- | The minimum value which can be held in a <tt><i>gint32</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MININT32 :: Int32

-- | The minimum value which can be held in a <tt><i>gint16</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MININT16 :: Int16

-- | The micro version number of the GLib library.
--   
--   Like <tt><i>gtk_micro_version</i></tt>, but from the headers used at
--   application compile time, rather than from the library linked against
--   at application run time.
pattern MICRO_VERSION :: Int32

-- | The maximum value which can be held in a <tt><i>guint8</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXUINT8 :: Word8

-- | The maximum value which can be held in a <tt><i>guint64</i></tt>.
pattern MAXUINT64 :: Word64

-- | The maximum value which can be held in a <tt><i>guint32</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXUINT32 :: Word32

-- | The maximum value which can be held in a <tt><i>guint16</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXUINT16 :: Word16

-- | The maximum value which can be held in a <tt><i>gint8</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXINT8 :: Int8

-- | The maximum value which can be held in a <tt><i>gint64</i></tt>.
pattern MAXINT64 :: Int64

-- | The maximum value which can be held in a <tt><i>gint32</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXINT32 :: Int32

-- | The maximum value which can be held in a <tt><i>gint16</i></tt>.
--   
--   <i>Since: 2.4</i>
pattern MAXINT16 :: Int16

-- | The major version number of the GLib library.
--   
--   Like <tt><i>glib_major_version</i></tt>, but from the headers used at
--   application compile time, rather than from the library linked against
--   at application run time.
pattern MAJOR_VERSION :: Int32

-- | Log levels below 1&lt;&lt;G_LOG_LEVEL_USER_SHIFT are used by GLib.
--   Higher bits can be used for user-defined log levels.
pattern LOG_LEVEL_USER_SHIFT :: Int32

-- | GLib log levels that are considered fatal by default.
--   
--   This is not used if structured logging is enabled; see [Using
--   Structured Logging][using-structured-logging].
pattern LOG_FATAL_MASK :: Int32

-- | Defines the log domain. See <a>Log Domains</a>.
--   
--   Libraries should define this so that any messages which they log can
--   be differentiated from messages from other libraries and application
--   code. But be careful not to define it in any public header files.
--   
--   Log domains must be unique, and it is recommended that they are the
--   application or library name, optionally followed by a hyphen and a
--   sub-domain name. For example, <tt>bloatpad</tt> or
--   <tt>bloatpad-io</tt>.
--   
--   If undefined, it defaults to the default <a>Nothing</a> (or
--   <tt>""</tt>) log domain; this is not advisable, as it cannot be
--   filtered against using the <tt>G_MESSAGES_DEBUG</tt> environment
--   variable.
--   
--   For example, GTK+ uses this in its <tt>Makefile.am</tt>: &gt;
--   &gt;AM_CPPFLAGS = -DG_LOG_DOMAIN="Gtk"
--   
--   Applications can choose to leave it as the default <a>Nothing</a> (or
--   <tt>""</tt>) domain. However, defining the domain offers the same
--   advantages as above.
pattern LOG_DOMAIN :: Int8

-- | Multiplying the base 2 exponent by this number yields the base 10
--   exponent.
pattern LOG_2_BASE_10 :: Double

-- | The natural logarithm of 2.
pattern LN2 :: Double

-- | The natural logarithm of 10.
pattern LN10 :: Double

-- | Specifies one of the possible types of byte order. See
--   <tt><i>G_BYTE_ORDER</i></tt>.
pattern LITTLE_ENDIAN :: Int32

-- | The value of the <a>KEY_FILE_DESKTOP_KEY_TYPE</a>, key for desktop
--   entries representing links to documents.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_TYPE_LINK :: Text

-- | The value of the <a>KEY_FILE_DESKTOP_KEY_TYPE</a>, key for desktop
--   entries representing directories.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_TYPE_DIRECTORY :: Text

-- | The value of the <a>KEY_FILE_DESKTOP_KEY_TYPE</a>, key for desktop
--   entries representing applications.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_TYPE_APPLICATION :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   giving the version of the Desktop Entry Specification used for the
--   desktop entry file.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_VERSION :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   giving the URL to access. It is only valid for desktop entries with
--   the <tt>Link</tt> type.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_URL :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   giving the type of the desktop entry.
--   
--   Usually <a>KEY_FILE_DESKTOP_TYPE_APPLICATION</a>,
--   <a>KEY_FILE_DESKTOP_TYPE_LINK</a>, or
--   <a>KEY_FILE_DESKTOP_TYPE_DIRECTORY</a>.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_TYPE :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   giving the file name of a binary on disk used to determine if the
--   program is actually installed. It is only valid for desktop entries
--   with the <tt>Application</tt> type.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_TRY_EXEC :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a boolean
--   stating whether the program should be run in a terminal window.
--   
--   It is only valid for desktop entries with the <tt>Application</tt>
--   type.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_TERMINAL :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is string
--   identifying the WM class or name hint of a window that the application
--   will create, which can be used to emulate Startup Notification with
--   older applications.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a boolean
--   stating whether the application supports the <a>Startup Notification
--   Protocol Specification</a>.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   containing the working directory to run the program in. It is only
--   valid for desktop entries with the <tt>Application</tt> type.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_PATH :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a list of
--   strings identifying the environments that should display the desktop
--   entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a boolean
--   stating whether the desktop entry should be shown in menus.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_NO_DISPLAY :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a list of
--   strings identifying the environments that should not display the
--   desktop entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a localized
--   string giving the specific name of the desktop entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_NAME :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a list of
--   strings giving the MIME types supported by this desktop entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_MIME_TYPE :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a localized
--   string giving the name of the icon to be displayed for the desktop
--   entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_ICON :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a boolean
--   stating whether the desktop entry has been deleted by the user.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_HIDDEN :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a localized
--   string giving the generic name of the desktop entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_GENERIC_NAME :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   giving the command line to execute. It is only valid for desktop
--   entries with the <tt>Application</tt> type.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_EXEC :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a boolean
--   set to true if the application is D-Bus activatable.
--   
--   <i>Since: 2.38</i>
pattern KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a localized
--   string giving the tooltip for the desktop entry.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_COMMENT :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a list of
--   strings giving the categories in which the desktop entry should be
--   shown in a menu.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_KEY_CATEGORIES :: Text

-- | A key under <a>KEY_FILE_DESKTOP_GROUP</a>, whose value is a string
--   list giving the available application actions.
--   
--   <i>Since: 2.38</i>
pattern KEY_FILE_DESKTOP_KEY_ACTIONS :: Text

-- | The name of the main group of a desktop entry file, as defined in the
--   <a>Desktop Entry Specification</a>. Consult the specification for more
--   details about the meanings of the keys below.
--   
--   <i>Since: 2.14</i>
pattern KEY_FILE_DESKTOP_GROUP :: Text

-- | The bias by which exponents in single-precision floats are offset.
pattern IEEE754_FLOAT_BIAS :: Int32

-- | The bias by which exponents in double-precision floats are offset.
pattern IEEE754_DOUBLE_BIAS :: Int32

-- | The position of the first bit which is not reserved for internal use
--   be the <a>Hook</a> implementation, i.e. <tt>1 &lt;&lt;
--   G_HOOK_FLAG_USER_SHIFT</tt> is the first bit which can be used for
--   application-defined flags.
pattern HOOK_FLAG_USER_SHIFT :: Int32

-- | <i>No description available in the introspection data.</i>
pattern HAVE_ISO_VARARGS :: Int32

-- | <i>No description available in the introspection data.</i>
pattern HAVE_GROWING_STACK :: Int32

-- | Defined to 1 if gcc-style visibility handling is supported.
pattern HAVE_GNUC_VISIBILITY :: Int32

-- | <i>No description available in the introspection data.</i>
pattern HAVE_GNUC_VARARGS :: Int32

-- | <i>No description available in the introspection data.</i>
pattern HAVE_GINT64 :: Int32

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>guintptr</i></tt>.
--   
--   <i>Since: 2.22</i>
pattern GUINTPTR_FORMAT :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>guint64</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
--   
--   Some platforms do not support scanning and printing 64-bit integers,
--   even though the types are supported. On such platforms
--   <a>GUINT64_FORMAT</a> is not defined. Note that
--   <tt><i>scanf()</i></tt> may not support 64-bit integers, even if
--   <a>GINT64_FORMAT</a> is defined. Due to its weak error handling,
--   <tt><i>scanf()</i></tt> is not recommended for parsing anyway;
--   consider using <a>asciiStrtoull</a> instead.
pattern GUINT64_FORMAT :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>guint32</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
pattern GUINT32_FORMAT :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>guint16</i></tt>. See also
--   <a>GINT16_FORMAT</a>
pattern GUINT16_FORMAT :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gssize</i></tt>. It is a
--   string literal.
--   
--   <i>Since: 2.6</i>
pattern GSSIZE_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gssize</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
--   
--   <i>Since: 2.6</i>
pattern GSSIZE_FORMAT :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gsize</i></tt>. It is a
--   string literal.
--   
--   <i>Since: 2.6</i>
pattern GSIZE_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gsize</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
--   
--   <i>Since: 2.6</i>
pattern GSIZE_FORMAT :: Text

-- | Expands to "" on all modern compilers, and to <b>PRETTY_FUNCTION</b>
--   on gcc version 2.x. Don't use it.

-- | <i>Deprecated: (Since version 2.16)Use <tt><i>G_STRFUNC()</i></tt>
--   instead</i>
pattern GNUC_PRETTY_FUNCTION :: Text

-- | Expands to "" on all modern compilers, and to <b>FUNCTION</b> on gcc
--   version 2.x. Don't use it.

-- | <i>Deprecated: (Since version 2.16)Use <tt><i>G_STRFUNC()</i></tt>
--   instead</i>
pattern GNUC_FUNCTION :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gintptr</i></tt> or
--   <tt><i>guintptr</i></tt>. It is a string literal.
--   
--   <i>Since: 2.22</i>
pattern GINTPTR_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gintptr</i></tt>.
--   
--   <i>Since: 2.22</i>
pattern GINTPTR_FORMAT :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gint64</i></tt> or
--   <tt><i>guint64</i></tt>. It is a string literal.
--   
--   Some platforms do not support printing 64-bit integers, even though
--   the types are supported. On such platforms <a>GINT64_MODIFIER</a> is
--   not defined.
--   
--   <i>Since: 2.4</i>
pattern GINT64_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gint64</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
--   
--   Some platforms do not support scanning and printing 64-bit integers,
--   even though the types are supported. On such platforms
--   <a>GINT64_FORMAT</a> is not defined. Note that <tt><i>scanf()</i></tt>
--   may not support 64-bit integers, even if <a>GINT64_FORMAT</a> is
--   defined. Due to its weak error handling, <tt><i>scanf()</i></tt> is
--   not recommended for parsing anyway; consider using
--   <a>asciiStrtoull</a> instead.
pattern GINT64_FORMAT :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gint32</i></tt> or
--   <tt><i>guint32</i></tt>. It is a string literal. See also
--   <a>GINT16_MODIFIER</a>.
--   
--   <i>Since: 2.4</i>
pattern GINT32_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gint32</i></tt>. See also
--   <a>GINT16_FORMAT</a>.
pattern GINT32_FORMAT :: Text

-- | The platform dependent length modifier for conversion specifiers for
--   scanning and printing values of type <tt><i>gint16</i></tt> or
--   <tt><i>guint16</i></tt>. It is a string literal, but doesn't include
--   the percent-sign, such that you can add precision and length modifiers
--   between percent-sign and conversion specifier and append a conversion
--   specifier.
--   
--   The following example prints "0x7b";
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   gint16 value = 123;
--   g_print ("%#" G_GINT16_MODIFIER "x", value);
--   </pre>
--   
--   <i>Since: 2.4</i>
pattern GINT16_MODIFIER :: Text

-- | This is the platform dependent conversion specifier for scanning and
--   printing values of type <tt><i>gint16</i></tt>. It is a string
--   literal, but doesn't include the percent-sign, such that you can add
--   precision and length modifiers between percent-sign and conversion
--   specifier.
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   gint16 in;
--   gint32 out;
--   sscanf ("42", "%" G_GINT16_FORMAT, &amp;in)
--   out = in * 1000;
--   g_print ("%" G_GINT32_FORMAT, out);
--   </pre>
pattern GINT16_FORMAT :: Text

-- | The base of natural logarithms.
pattern E :: Double

-- | The directory separator as a string. This is "/" on UNIX machines and
--   "\" under Windows.
pattern DIR_SEPARATOR_S :: Text

-- | The directory separator character. This is '/' on UNIX machines and
--   '\' under Windows.
pattern DIR_SEPARATOR :: Int32

-- | Represents an invalid year.
pattern DATE_BAD_YEAR :: Int32

-- | Represents an invalid Julian day number.
pattern DATE_BAD_JULIAN :: Int32

-- | Represents an invalid <tt><i>GDateDay</i></tt>.
pattern DATE_BAD_DAY :: Int32

-- | A bitmask that restricts the possible flags passed to
--   <a>datalistSetFlags</a>. Passing a flags value where flags &amp;
--   ~G_DATALIST_FLAGS_MASK != 0 is an error.
pattern DATALIST_FLAGS_MASK :: Int32

-- | The set of lowercase ASCII alphabet characters. Used for specifying
--   valid identifier characters in <a>ScannerConfig</a>.
pattern CSET_a_2_z :: Text

-- | The set of ASCII digits. Used for specifying valid identifier
--   characters in <a>ScannerConfig</a>.
pattern CSET_DIGITS :: Text

-- | The set of uppercase ASCII alphabet characters. Used for specifying
--   valid identifier characters in <a>ScannerConfig</a>.
pattern CSET_A_2_Z :: Text

-- | <i>No description available in the introspection data.</i>
pattern C'macro__has_attribute___noreturn__ :: Int32

-- | Specifies one of the possible types of byte order. See
--   <tt><i>G_BYTE_ORDER</i></tt>.
pattern BIG_ENDIAN :: Int32

-- | A good size for a buffer to be passed into <a>asciiDtostr</a>. It is
--   guaranteed to be enough for all output of that function on systems
--   with 64bit IEEE-compatible doubles.
--   
--   The typical usage would be something like:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   char buf[G_ASCII_DTOSTR_BUF_SIZE];
--   
--   fprintf (out, "value=%s\n", g_ascii_dtostr (buf, sizeof (buf), value));
--   </pre>
pattern ASCII_DTOSTR_BUF_SIZE :: Int32

-- | <i>No description available in the introspection data.</i>
pattern ANALYZER_ANALYZING :: Int32


module GI.GLib.Enums

-- | Error codes returned by bookmark file parsing.
data BookmarkFileError

-- | URI was ill-formed
BookmarkFileErrorInvalidUri :: BookmarkFileError

-- | a requested field was not found
BookmarkFileErrorInvalidValue :: BookmarkFileError

-- | a requested application did not register a bookmark
BookmarkFileErrorAppNotRegistered :: BookmarkFileError

-- | a requested URI was not found
BookmarkFileErrorUriNotFound :: BookmarkFileError

-- | document was ill formed
BookmarkFileErrorRead :: BookmarkFileError

-- | the text being parsed was in an unknown encoding
BookmarkFileErrorUnknownEncoding :: BookmarkFileError

-- | an error occurred while writing
BookmarkFileErrorWrite :: BookmarkFileError

-- | requested file was not found
BookmarkFileErrorFileNotFound :: BookmarkFileError

-- | Catch-all for unknown values
AnotherBookmarkFileError :: Int -> BookmarkFileError

-- | Catch exceptions of type <a>BookmarkFileError</a>. This is a
--   specialized version of <a>catchGErrorJustDomain</a>.
catchBookmarkFileError :: IO a -> (BookmarkFileError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>BookmarkFileError</a>. This is a
--   specialized version of <a>handleGErrorJustDomain</a>.
handleBookmarkFileError :: (BookmarkFileError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | The hashing algorithm to be used by <a>Checksum</a> when performing
--   the digest of some data.
--   
--   Note that the <a>ChecksumType</a> enumeration may be extended at a
--   later date to include new hashing algorithm types.
--   
--   <i>Since: 2.16</i>
data ChecksumType

-- | Use the MD5 hashing algorithm
ChecksumTypeMd5 :: ChecksumType

-- | Use the SHA-1 hashing algorithm
ChecksumTypeSha1 :: ChecksumType

-- | Use the SHA-256 hashing algorithm
ChecksumTypeSha256 :: ChecksumType

-- | Use the SHA-512 hashing algorithm (Since: 2.36)
ChecksumTypeSha512 :: ChecksumType

-- | Use the SHA-384 hashing algorithm (Since: 2.51)
ChecksumTypeSha384 :: ChecksumType

-- | Catch-all for unknown values
AnotherChecksumType :: Int -> ChecksumType

-- | Error codes returned by character set conversion routines.
data ConvertError

-- | Conversion between the requested character sets is not supported.
ConvertErrorNoConversion :: ConvertError

-- | Invalid byte sequence in conversion input; or the character sequence
--   could not be represented in the target character set.
ConvertErrorIllegalSequence :: ConvertError

-- | Conversion failed for some reason.
ConvertErrorFailed :: ConvertError

-- | Partial character sequence at end of input.
ConvertErrorPartialInput :: ConvertError

-- | URI is invalid.
ConvertErrorBadUri :: ConvertError

-- | Pathname is not an absolute path.
ConvertErrorNotAbsolutePath :: ConvertError

-- | No memory available. Since: 2.40
ConvertErrorNoMemory :: ConvertError

-- | An embedded NUL character is present in conversion output where a
--   NUL-terminated string is expected. Since: 2.56
ConvertErrorEmbeddedNul :: ConvertError

-- | Catch-all for unknown values
AnotherConvertError :: Int -> ConvertError

-- | Catch exceptions of type <a>ConvertError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchConvertError :: IO a -> (ConvertError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>ConvertError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleConvertError :: (ConvertError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | This enumeration isn't used in the API, but may be useful if you need
--   to mark a number as a day, month, or year.
data DateDMY

-- | a day
DateDMYDay :: DateDMY

-- | a month
DateDMYMonth :: DateDMY

-- | a year
DateDMYYear :: DateDMY

-- | Catch-all for unknown values
AnotherDateDMY :: Int -> DateDMY

-- | Enumeration representing a month; values are <a>DateMonthJanuary</a>,
--   <a>DateMonthFebruary</a>, etc. <a>DateMonthBadMonth</a> is the invalid
--   value.
data DateMonth

-- | invalid value
DateMonthBadMonth :: DateMonth

-- | January
DateMonthJanuary :: DateMonth

-- | February
DateMonthFebruary :: DateMonth

-- | March
DateMonthMarch :: DateMonth

-- | April
DateMonthApril :: DateMonth

-- | May
DateMonthMay :: DateMonth

-- | June
DateMonthJune :: DateMonth

-- | July
DateMonthJuly :: DateMonth

-- | August
DateMonthAugust :: DateMonth

-- | September
DateMonthSeptember :: DateMonth

-- | October
DateMonthOctober :: DateMonth

-- | November
DateMonthNovember :: DateMonth

-- | December
DateMonthDecember :: DateMonth

-- | Catch-all for unknown values
AnotherDateMonth :: Int -> DateMonth

-- | Enumeration representing a day of the week; <a>DateWeekdayMonday</a>,
--   <a>DateWeekdayTuesday</a>, etc. <a>DateWeekdayBadWeekday</a> is an
--   invalid weekday.
data DateWeekday

-- | invalid value
DateWeekdayBadWeekday :: DateWeekday

-- | Monday
DateWeekdayMonday :: DateWeekday

-- | Tuesday
DateWeekdayTuesday :: DateWeekday

-- | Wednesday
DateWeekdayWednesday :: DateWeekday

-- | Thursday
DateWeekdayThursday :: DateWeekday

-- | Friday
DateWeekdayFriday :: DateWeekday

-- | Saturday
DateWeekdaySaturday :: DateWeekday

-- | Sunday
DateWeekdaySunday :: DateWeekday

-- | Catch-all for unknown values
AnotherDateWeekday :: Int -> DateWeekday

-- | The possible errors, used in the <i><tt>vError</tt></i> field of
--   <a>TokenValue</a>, when the token is a <a>TokenTypeError</a>.
data ErrorType

-- | unknown error
ErrorTypeUnknown :: ErrorType

-- | unexpected end of file
ErrorTypeUnexpEof :: ErrorType

-- | unterminated string constant
ErrorTypeUnexpEofInString :: ErrorType

-- | unterminated comment
ErrorTypeUnexpEofInComment :: ErrorType

-- | non-digit character in a number
ErrorTypeNonDigitInConst :: ErrorType

-- | digit beyond radix in a number
ErrorTypeDigitRadix :: ErrorType

-- | non-decimal floating point number
ErrorTypeFloatRadix :: ErrorType

-- | malformed floating point number
ErrorTypeFloatMalformed :: ErrorType

-- | Catch-all for unknown values
AnotherErrorType :: Int -> ErrorType

-- | Values corresponding to <i><tt>errno</tt></i> codes returned from file
--   operations on UNIX. Unlike <i><tt>errno</tt></i> codes, GFileError
--   values are available on all systems, even Windows. The exact meaning
--   of each code depends on what sort of file operation you were
--   performing; the UNIX documentation gives more details. The following
--   error code descriptions come from the GNU C Library manual, and are
--   under the copyright of that manual.
--   
--   It's not very portable to make detailed assumptions about exactly
--   which errors will be returned from a given operation. Some errors
--   don't occur on some systems, etc., sometimes there are subtle
--   differences in when a system will report a given error, etc.
data FileError

-- | Operation not permitted; only the owner of the file (or other
--   resource) or processes with special privileges can perform the
--   operation.
FileErrorExist :: FileError

-- | File is a directory; you cannot open a directory for writing, or
--   create or remove hard links to it.
FileErrorIsdir :: FileError

-- | Permission denied; the file permissions do not allow the attempted
--   operation.
FileErrorAcces :: FileError

-- | Filename too long.
FileErrorNametoolong :: FileError

-- | No such file or directory. This is a "file doesn't exist" error for
--   ordinary files that are referenced in contexts where they are expected
--   to already exist.
FileErrorNoent :: FileError

-- | A file that isn't a directory was specified when a directory is
--   required.
FileErrorNotdir :: FileError

-- | No such device or address. The system tried to use the device
--   represented by a file you specified, and it couldn't find the device.
--   This can mean that the device file was installed incorrectly, or that
--   the physical device is missing or not correctly attached to the
--   computer.
FileErrorNxio :: FileError

-- | The underlying file system of the specified file does not support
--   memory mapping.
FileErrorNodev :: FileError

-- | The directory containing the new link can't be modified because it's
--   on a read-only file system.
FileErrorRofs :: FileError

-- | Text file busy.
FileErrorTxtbsy :: FileError

-- | You passed in a pointer to bad memory. (GLib won't reliably return
--   this, don't pass in pointers to bad memory.)
FileErrorFault :: FileError

-- | Too many levels of symbolic links were encountered in looking up a
--   file name. This often indicates a cycle of symbolic links.
FileErrorLoop :: FileError

-- | No space left on device; write operation on a file failed because the
--   disk is full.
FileErrorNospc :: FileError

-- | No memory available. The system cannot allocate more virtual memory
--   because its capacity is full.
FileErrorNomem :: FileError

-- | The current process has too many files open and can't open any more.
--   Duplicate descriptors do count toward this limit.
FileErrorMfile :: FileError

-- | There are too many distinct file openings in the entire system.
FileErrorNfile :: FileError

-- | Bad file descriptor; for example, I/O on a descriptor that has been
--   closed or reading from a descriptor open only for writing (or vice
--   versa).
FileErrorBadf :: FileError

-- | Invalid argument. This is used to indicate various kinds of problems
--   with passing the wrong argument to a library function.
FileErrorInval :: FileError

-- | Broken pipe; there is no process reading from the other end of a pipe.
--   Every library function that returns this error code also generates a
--   'SIGPIPE' signal; this signal terminates the program if not handled or
--   blocked. Thus, your program will never actually see this code unless
--   it has handled or blocked 'SIGPIPE'.
FileErrorPipe :: FileError

-- | Resource temporarily unavailable; the call might work if you try again
--   later.
FileErrorAgain :: FileError

-- | Interrupted function call; an asynchronous signal occurred and
--   prevented completion of the call. When this happens, you should try
--   the call again.
FileErrorIntr :: FileError

-- | Input/output error; usually used for physical read or write errors.
--   i.e. the disk or other physical device hardware is returning errors.
FileErrorIo :: FileError

-- | Operation not permitted; only the owner of the file (or other
--   resource) or processes with special privileges can perform the
--   operation.
FileErrorPerm :: FileError

-- | Function not implemented; this indicates that the system is missing
--   some functionality.
FileErrorNosys :: FileError

-- | Does not correspond to a UNIX error code; this is the standard "failed
--   for unspecified reason" error code present in all <a>GError</a> error
--   code enumerations. Returned if no specific code applies.
FileErrorFailed :: FileError

-- | Catch-all for unknown values
AnotherFileError :: Int -> FileError

-- | Catch exceptions of type <a>FileError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchFileError :: IO a -> (FileError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>FileError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleFileError :: (FileError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Error codes returned by <a>IOChannel</a> operations.
data IOChannelError

-- | File too large.
IOChannelErrorFbig :: IOChannelError

-- | Invalid argument.
IOChannelErrorInval :: IOChannelError

-- | IO error.
IOChannelErrorIo :: IOChannelError

-- | File is a directory.
IOChannelErrorIsdir :: IOChannelError

-- | No space left on device.
IOChannelErrorNospc :: IOChannelError

-- | No such device or address.
IOChannelErrorNxio :: IOChannelError

-- | Value too large for defined datatype.
IOChannelErrorOverflow :: IOChannelError

-- | Broken pipe.
IOChannelErrorPipe :: IOChannelError

-- | Some other error.
IOChannelErrorFailed :: IOChannelError

-- | Catch-all for unknown values
AnotherIOChannelError :: Int -> IOChannelError

-- | Catch exceptions of type <a>IOChannelError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchIOChannelError :: IO a -> (IOChannelError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>IOChannelError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleIOChannelError :: (IOChannelError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | <a>IOError</a> is only used by the deprecated functions
--   <a>iOChannelRead</a>, <a>iOChannelWrite</a>, and <a>iOChannelSeek</a>.
data IOError

-- | no error
IOErrorNone :: IOError

-- | an EAGAIN error occurred
IOErrorAgain :: IOError

-- | an EINVAL error occurred
IOErrorInval :: IOError

-- | another error occurred
IOErrorUnknown :: IOError

-- | Catch-all for unknown values
AnotherIOError :: Int -> IOError

-- | Statuses returned by most of the <a>IOFuncs</a> functions.
data IOStatus

-- | An error occurred.
IOStatusError :: IOStatus

-- | Success.
IOStatusNormal :: IOStatus

-- | End of file.
IOStatusEof :: IOStatus

-- | Resource temporarily unavailable.
IOStatusAgain :: IOStatus

-- | Catch-all for unknown values
AnotherIOStatus :: Int -> IOStatus

-- | Error codes returned by key file parsing.
data KeyFileError

-- | the text being parsed was in an unknown encoding
KeyFileErrorUnknownEncoding :: KeyFileError

-- | document was ill-formed
KeyFileErrorParse :: KeyFileError

-- | the file was not found
KeyFileErrorNotFound :: KeyFileError

-- | a requested key was not found
KeyFileErrorKeyNotFound :: KeyFileError

-- | a requested group was not found
KeyFileErrorGroupNotFound :: KeyFileError

-- | a value could not be parsed
KeyFileErrorInvalidValue :: KeyFileError

-- | Catch-all for unknown values
AnotherKeyFileError :: Int -> KeyFileError

-- | Catch exceptions of type <a>KeyFileError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchKeyFileError :: IO a -> (KeyFileError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>KeyFileError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleKeyFileError :: (KeyFileError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Return values from <tt><i>GLogWriterFuncs</i></tt> to indicate whether
--   the given log entry was successfully handled by the writer, or whether
--   there was an error in handling it (and hence a fallback writer should
--   be used).
--   
--   If a <a>LogWriterFunc</a> ignores a log entry, it should return
--   <a>LogWriterOutputHandled</a>.
--   
--   <i>Since: 2.50</i>
data LogWriterOutput

-- | Log writer has handled the log entry.
LogWriterOutputHandled :: LogWriterOutput

-- | Log writer could not handle the log entry.
LogWriterOutputUnhandled :: LogWriterOutput

-- | Catch-all for unknown values
AnotherLogWriterOutput :: Int -> LogWriterOutput

-- | Error codes returned by markup parsing.
data MarkupError

-- | text being parsed was not valid UTF-8
MarkupErrorBadUtf8 :: MarkupError

-- | document contained nothing, or only whitespace
MarkupErrorEmpty :: MarkupError

-- | document was ill-formed
MarkupErrorParse :: MarkupError

-- | error should be set by <a>MarkupParser</a> functions; element wasn't
--   known
MarkupErrorUnknownElement :: MarkupError

-- | error should be set by <a>MarkupParser</a> functions; attribute wasn't
--   known
MarkupErrorUnknownAttribute :: MarkupError

-- | error should be set by <a>MarkupParser</a> functions; content was
--   invalid
MarkupErrorInvalidContent :: MarkupError

-- | error should be set by <a>MarkupParser</a> functions; a required
--   attribute was missing
MarkupErrorMissingAttribute :: MarkupError

-- | Catch-all for unknown values
AnotherMarkupError :: Int -> MarkupError

-- | Catch exceptions of type <a>MarkupError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchMarkupError :: IO a -> (MarkupError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>MarkupError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleMarkupError :: (MarkupError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Defines how a Unicode string is transformed in a canonical form,
--   standardizing such issues as whether a character with an accent is
--   represented as a base character and combining accent or as a single
--   precomposed character. Unicode strings should generally be normalized
--   before comparing them.
data NormalizeMode

-- | standardize differences that do not affect the text content, such as
--   the above-mentioned accent representation
NormalizeModeDefault :: NormalizeMode

-- | another name for <a>NormalizeModeDefault</a>
NormalizeModeNfd :: NormalizeMode

-- | like <a>NormalizeModeDefault</a>, but with composed forms rather than
--   a maximally decomposed form
NormalizeModeDefaultCompose :: NormalizeMode

-- | another name for <a>NormalizeModeDefaultCompose</a>
NormalizeModeNfc :: NormalizeMode

-- | beyond <a>NormalizeModeDefault</a> also standardize the
--   "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
--   the standard forms (in this case DIGIT THREE). Formatting information
--   may be lost but for most text operations such characters should be
--   considered the same
NormalizeModeAll :: NormalizeMode

-- | another name for <a>NormalizeModeAll</a>
NormalizeModeNfkd :: NormalizeMode

-- | like <a>NormalizeModeAll</a>, but with composed forms rather than a
--   maximally decomposed form
NormalizeModeAllCompose :: NormalizeMode

-- | another name for <a>NormalizeModeAllCompose</a>
NormalizeModeNfkc :: NormalizeMode

-- | Catch-all for unknown values
AnotherNormalizeMode :: Int -> NormalizeMode

-- | Error codes returned by functions converting a string to a number.
--   
--   <i>Since: 2.54</i>
data NumberParserError

-- | String was not a valid number.
NumberParserErrorInvalid :: NumberParserError

-- | String was a number, but out of bounds.
NumberParserErrorOutOfBounds :: NumberParserError

-- | Catch-all for unknown values
AnotherNumberParserError :: Int -> NumberParserError

-- | Catch exceptions of type <a>NumberParserError</a>. This is a
--   specialized version of <a>catchGErrorJustDomain</a>.
catchNumberParserError :: IO a -> (NumberParserError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>NumberParserError</a>. This is a
--   specialized version of <a>handleGErrorJustDomain</a>.
handleNumberParserError :: (NumberParserError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | The possible statuses of a one-time initialization function controlled
--   by a <a>Once</a> struct.
--   
--   <i>Since: 2.4</i>
data OnceStatus

-- | the function has not been called yet.
OnceStatusNotcalled :: OnceStatus

-- | the function call is currently in progress.
OnceStatusProgress :: OnceStatus

-- | the function has been called.
OnceStatusReady :: OnceStatus

-- | Catch-all for unknown values
AnotherOnceStatus :: Int -> OnceStatus

-- | The <a>OptionArg</a> enum values determine which type of extra
--   argument the options expect to find. If an option expects an extra
--   argument, it can be specified in several ways; with a short option:
--   <tt>-x arg</tt>, with a long option: <tt>--name arg</tt> or combined
--   in a single argument: <tt>--name=arg</tt>.
data OptionArg

-- | No extra argument. This is useful for simple flags or booleans.
OptionArgNone :: OptionArg

-- | The option takes a UTF-8 string argument.
OptionArgString :: OptionArg

-- | The option takes an integer argument.
OptionArgInt :: OptionArg

-- | The option provides a callback (of type <a>OptionArgFunc</a>) to parse
--   the extra argument.
OptionArgCallback :: OptionArg

-- | The option takes a filename as argument, which will be in the GLib
--   filename encoding rather than UTF-8.
OptionArgFilename :: OptionArg

-- | The option takes a string argument, multiple uses of the option are
--   collected into an array of strings.
OptionArgStringArray :: OptionArg

-- | The option takes a filename as argument, multiple uses of the option
--   are collected into an array of strings.
OptionArgFilenameArray :: OptionArg

-- | The option takes a double argument. The argument can be formatted
--   either for the user's locale or for the "C" locale. Since 2.12
OptionArgDouble :: OptionArg

-- | The option takes a 64-bit integer. Like <a>OptionArgInt</a> but for
--   larger numbers. The number can be in decimal base, or in hexadecimal
--   (when prefixed with <tt>0x</tt>, for example, <tt>0xffffffff</tt>).
--   Since 2.12
OptionArgInt64 :: OptionArg

-- | Catch-all for unknown values
AnotherOptionArg :: Int -> OptionArg

-- | Error codes returned by option parsing.
data OptionError

-- | An option was not known to the parser. This error will only be
--   reported, if the parser hasn't been instructed to ignore unknown
--   options, see <a>optionContextSetIgnoreUnknownOptions</a>.
OptionErrorUnknownOption :: OptionError

-- | A value couldn't be parsed.
OptionErrorBadValue :: OptionError

-- | A <a>OptionArgFunc</a> callback failed.
OptionErrorFailed :: OptionError

-- | Catch-all for unknown values
AnotherOptionError :: Int -> OptionError

-- | Catch exceptions of type <a>OptionError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchOptionError :: IO a -> (OptionError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>OptionError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleOptionError :: (OptionError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Error codes returned by regular expressions functions.
--   
--   <i>Since: 2.14</i>
data RegexError

-- | Compilation of the regular expression failed.
RegexErrorCompile :: RegexError

-- | Optimization of the regular expression failed.
RegexErrorOptimize :: RegexError

-- | Replacement failed due to an ill-formed replacement string.
RegexErrorReplace :: RegexError

-- | The match process failed.
RegexErrorMatch :: RegexError

-- | Internal error of the regular expression engine. Since 2.16
RegexErrorInternal :: RegexError

-- | "\" at end of pattern. Since 2.16
RegexErrorStrayBackslash :: RegexError

-- | "\c" at end of pattern. Since 2.16
RegexErrorMissingControlChar :: RegexError

-- | Unrecognized character follows "\". Since 2.16
RegexErrorUnrecognizedEscape :: RegexError

-- | Numbers out of order in "{}" quantifier. Since 2.16
RegexErrorQuantifiersOutOfOrder :: RegexError

-- | Number too big in "{}" quantifier. Since 2.16
RegexErrorQuantifierTooBig :: RegexError

-- | Missing terminating "]" for character class. Since 2.16
RegexErrorUnterminatedCharacterClass :: RegexError

-- | Invalid escape sequence in character class. Since 2.16
RegexErrorInvalidEscapeInCharacterClass :: RegexError

-- | Range out of order in character class. Since 2.16
RegexErrorRangeOutOfOrder :: RegexError

-- | Nothing to repeat. Since 2.16
RegexErrorNothingToRepeat :: RegexError

-- | Unrecognized character after "(?", "(?&lt;" or "(?P". Since 2.16
RegexErrorUnrecognizedCharacter :: RegexError

-- | POSIX named classes are supported only within a class. Since 2.16
RegexErrorPosixNamedClassOutsideClass :: RegexError

-- | Missing terminating ")" or ")" without opening "(". Since 2.16
RegexErrorUnmatchedParenthesis :: RegexError

-- | Reference to non-existent subpattern. Since 2.16
RegexErrorInexistentSubpatternReference :: RegexError

-- | Missing terminating ")" after comment. Since 2.16
RegexErrorUnterminatedComment :: RegexError

-- | Regular expression too large. Since 2.16
RegexErrorExpressionTooLarge :: RegexError

-- | Failed to get memory. Since 2.16
RegexErrorMemoryError :: RegexError

-- | Lookbehind assertion is not fixed length. Since 2.16
RegexErrorVariableLengthLookbehind :: RegexError

-- | Malformed number or name after "(?(". Since 2.16
RegexErrorMalformedCondition :: RegexError

-- | Conditional group contains more than two branches. Since 2.16
RegexErrorTooManyConditionalBranches :: RegexError

-- | Assertion expected after "(?(". Since 2.16
RegexErrorAssertionExpected :: RegexError

-- | Unknown POSIX class name. Since 2.16
RegexErrorUnknownPosixClassName :: RegexError

-- | POSIX collating elements are not supported. Since 2.16
RegexErrorPosixCollatingElementsNotSupported :: RegexError

-- | Character value in "\x{...}" sequence is too large. Since 2.16
RegexErrorHexCodeTooLarge :: RegexError

-- | Invalid condition "(?(0)". Since 2.16
RegexErrorInvalidCondition :: RegexError

-- | \C not allowed in lookbehind assertion. Since 2.16
RegexErrorSingleByteMatchInLookbehind :: RegexError

-- | Recursive call could loop indefinitely. Since 2.16
RegexErrorInfiniteLoop :: RegexError

-- | Missing terminator in subpattern name. Since 2.16
RegexErrorMissingSubpatternNameTerminator :: RegexError

-- | Two named subpatterns have the same name. Since 2.16
RegexErrorDuplicateSubpatternName :: RegexError

-- | Malformed "\P" or "\p" sequence. Since 2.16
RegexErrorMalformedProperty :: RegexError

-- | Unknown property name after "\P" or "\p". Since 2.16
RegexErrorUnknownProperty :: RegexError

-- | Subpattern name is too long (maximum 32 characters). Since 2.16
RegexErrorSubpatternNameTooLong :: RegexError

-- | Too many named subpatterns (maximum 10,000). Since 2.16
RegexErrorTooManySubpatterns :: RegexError

-- | Octal value is greater than "\377". Since 2.16
RegexErrorInvalidOctalValue :: RegexError

-- | "DEFINE" group contains more than one branch. Since 2.16
RegexErrorTooManyBranchesInDefine :: RegexError

-- | Repeating a "DEFINE" group is not allowed. This error is never raised.
--   Since: 2.16 Deprecated: 2.34
RegexErrorDefineRepetion :: RegexError

-- | Inconsistent newline options. Since 2.16
RegexErrorInconsistentNewlineOptions :: RegexError

-- | "\g" is not followed by a braced, angle-bracketed, or quoted name or
--   number, or by a plain number. Since: 2.16
RegexErrorMissingBackReference :: RegexError

-- | relative reference must not be zero. Since: 2.34
RegexErrorInvalidRelativeReference :: RegexError

-- | the backtracing control verb used does not allow an argument. Since:
--   2.34
RegexErrorBacktrackingControlVerbArgumentForbidden :: RegexError

-- | unknown backtracing control verb. Since: 2.34
RegexErrorUnknownBacktrackingControlVerb :: RegexError

-- | number is too big in escape sequence. Since: 2.34
RegexErrorNumberTooBig :: RegexError

-- | Missing subpattern name. Since: 2.34
RegexErrorMissingSubpatternName :: RegexError

-- | Missing digit. Since 2.34
RegexErrorMissingDigit :: RegexError

-- | In JavaScript compatibility mode, "[" is an invalid data character.
--   Since: 2.34
RegexErrorInvalidDataCharacter :: RegexError

-- | different names for subpatterns of the same number are not allowed.
--   Since: 2.34
RegexErrorExtraSubpatternName :: RegexError

-- | the backtracing control verb requires an argument. Since: 2.34
RegexErrorBacktrackingControlVerbArgumentRequired :: RegexError

-- | "\c" must be followed by an ASCII character. Since: 2.34
RegexErrorInvalidControlChar :: RegexError

-- | "\k" is not followed by a braced, angle-bracketed, or quoted name.
--   Since: 2.34
RegexErrorMissingName :: RegexError

-- | "\N" is not supported in a class. Since: 2.34
RegexErrorNotSupportedInClass :: RegexError

-- | too many forward references. Since: 2.34
RegexErrorTooManyForwardReferences :: RegexError

-- | the name is too long in "(*MARK)", "(*PRUNE)", "(*SKIP)", or
--   "(*THEN)". Since: 2.34
RegexErrorNameTooLong :: RegexError

-- | the character value in the \u sequence is too large. Since: 2.34
RegexErrorCharacterValueTooLarge :: RegexError

-- | Catch-all for unknown values
AnotherRegexError :: Int -> RegexError

-- | Catch exceptions of type <a>RegexError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchRegexError :: IO a -> (RegexError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>RegexError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleRegexError :: (RegexError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | An enumeration specifying the base position for a
--   <a>iOChannelSeekPosition</a> operation.
data SeekType

-- | the current position in the file.
SeekTypeCur :: SeekType

-- | the start of the file.
SeekTypeSet :: SeekType

-- | the end of the file.
SeekTypeEnd :: SeekType

-- | Catch-all for unknown values
AnotherSeekType :: Int -> SeekType

-- | Error codes returned by shell functions.
data ShellError

-- | Mismatched or otherwise mangled quoting.
ShellErrorBadQuoting :: ShellError

-- | String to be parsed was empty.
ShellErrorEmptyString :: ShellError

-- | Some other error.
ShellErrorFailed :: ShellError

-- | Catch-all for unknown values
AnotherShellError :: Int -> ShellError

-- | Catch exceptions of type <a>ShellError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchShellError :: IO a -> (ShellError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>ShellError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleShellError :: (ShellError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | <i>No description available in the introspection data.</i>
data SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigAlwaysMalloc :: SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigBypassMagazines :: SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigWorkingSetMsecs :: SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigColorIncrement :: SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigChunkSizes :: SliceConfig

-- | <i>No description available in the introspection data.</i>
SliceConfigContentionCounter :: SliceConfig

-- | Catch-all for unknown values
AnotherSliceConfig :: Int -> SliceConfig

-- | Error codes returned by spawning processes.
data SpawnError

-- | Fork failed due to lack of memory.
SpawnErrorFork :: SpawnError

-- | Read or select on pipes failed.
SpawnErrorRead :: SpawnError

-- | Changing to working directory failed.
SpawnErrorChdir :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EACCES</tt>
SpawnErrorAcces :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EPERM</tt>
SpawnErrorPerm :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>E2BIG</tt>
SpawnErrorTooBig :: SpawnError

-- | deprecated alias for <a>SpawnErrorTooBig</a> (deprecated since GLib
--   2.32)
SpawnError2big :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENOEXEC</tt>
SpawnErrorNoexec :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENAMETOOLONG</tt>
SpawnErrorNametoolong :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENOENT</tt>
SpawnErrorNoent :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENOMEM</tt>
SpawnErrorNomem :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENOTDIR</tt>
SpawnErrorNotdir :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ELOOP</tt>
SpawnErrorLoop :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ETXTBUSY</tt>
SpawnErrorTxtbusy :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EIO</tt>
SpawnErrorIo :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ENFILE</tt>
SpawnErrorNfile :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EMFILE</tt>
SpawnErrorMfile :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EINVAL</tt>
SpawnErrorInval :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>EISDIR</tt>
SpawnErrorIsdir :: SpawnError

-- | <tt><i>execv()</i></tt> returned <tt>ELIBBAD</tt>
SpawnErrorLibbad :: SpawnError

-- | Some other fatal failure, <tt>error-&gt;message</tt> should explain.
SpawnErrorFailed :: SpawnError

-- | Catch-all for unknown values
AnotherSpawnError :: Int -> SpawnError

-- | Catch exceptions of type <a>SpawnError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchSpawnError :: IO a -> (SpawnError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>SpawnError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleSpawnError :: (SpawnError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | The type of file to return the filename for, when used with
--   <tt><i>g_test_build_filename()</i></tt>.
--   
--   These two options correspond rather directly to the 'dist' and 'built'
--   terminology that automake uses and are explicitly used to distinguish
--   between the 'srcdir' and 'builddir' being separate. All files in your
--   project should either be dist (in the <tt>EXTRA_DIST</tt> or
--   <tt>dist_schema_DATA</tt> sense, in which case they will always be in
--   the srcdir) or built (in the <tt>BUILT_SOURCES</tt> sense, in which
--   case they will always be in the builddir).
--   
--   Note: as a general rule of automake, files that are generated only as
--   part of the build-from-git process (but then are distributed with the
--   tarball) always go in srcdir (even if doing a srcdir != builddir build
--   from git) and are considered as distributed files.
--   
--   <i>Since: 2.38</i>
data TestFileType

-- | a file that was included in the distribution tarball
TestFileTypeDist :: TestFileType

-- | a file that was built on the compiling machine
TestFileTypeBuilt :: TestFileType

-- | Catch-all for unknown values
AnotherTestFileType :: Int -> TestFileType

-- | <i>No description available in the introspection data.</i>
data TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeNone :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeError :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeStartBinary :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeListCase :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeSkipCase :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeStartCase :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeStopCase :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeMinResult :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeMaxResult :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeMessage :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeStartSuite :: TestLogType

-- | <i>No description available in the introspection data.</i>
TestLogTypeStopSuite :: TestLogType

-- | Catch-all for unknown values
AnotherTestLogType :: Int -> TestLogType

-- | <i>No description available in the introspection data.</i>
data TestResult

-- | <i>No description available in the introspection data.</i>
TestResultSuccess :: TestResult

-- | <i>No description available in the introspection data.</i>
TestResultSkipped :: TestResult

-- | <i>No description available in the introspection data.</i>
TestResultFailure :: TestResult

-- | <i>No description available in the introspection data.</i>
TestResultIncomplete :: TestResult

-- | Catch-all for unknown values
AnotherTestResult :: Int -> TestResult

-- | Possible errors of thread related functions.
data ThreadError

-- | a thread couldn't be created due to resource shortage. Try again
--   later.
ThreadErrorThreadErrorAgain :: ThreadError

-- | Catch-all for unknown values
AnotherThreadError :: Int -> ThreadError

-- | Catch exceptions of type <a>ThreadError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchThreadError :: IO a -> (ThreadError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>ThreadError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleThreadError :: (ThreadError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Disambiguates a given time in two ways.
--   
--   First, specifies if the given time is in universal or local time.
--   
--   Second, if the time is in local time, specifies if it is local
--   standard time or local daylight time. This is important for the case
--   where the same local time occurs twice (during daylight savings time
--   transitions, for example).
data TimeType

-- | the time is in local standard time
TimeTypeStandard :: TimeType

-- | the time is in local daylight time
TimeTypeDaylight :: TimeType

-- | the time is in UTC
TimeTypeUniversal :: TimeType

-- | Catch-all for unknown values
AnotherTimeType :: Int -> TimeType

-- | The possible types of token returned from each
--   <a>scannerGetNextToken</a> call.
data TokenType

-- | the end of the file
TokenTypeEof :: TokenType

-- | a '(' character
TokenTypeLeftParen :: TokenType

-- | a ')' character
TokenTypeRightParen :: TokenType

-- | a '{' character
TokenTypeLeftCurly :: TokenType

-- | a '}' character
TokenTypeRightCurly :: TokenType

-- | a '[' character
TokenTypeLeftBrace :: TokenType

-- | a ']' character
TokenTypeRightBrace :: TokenType

-- | a '=' character
TokenTypeEqualSign :: TokenType

-- | a ',' character
TokenTypeComma :: TokenType

-- | not a token
TokenTypeNone :: TokenType

-- | an error occurred
TokenTypeError :: TokenType

-- | a character
TokenTypeChar :: TokenType

-- | a binary integer
TokenTypeBinary :: TokenType

-- | an octal integer
TokenTypeOctal :: TokenType

-- | an integer
TokenTypeInt :: TokenType

-- | a hex integer
TokenTypeHex :: TokenType

-- | a floating point number
TokenTypeFloat :: TokenType

-- | a string
TokenTypeString :: TokenType

-- | a symbol
TokenTypeSymbol :: TokenType

-- | an identifier
TokenTypeIdentifier :: TokenType

-- | a null identifier
TokenTypeIdentifierNull :: TokenType

-- | one line comment
TokenTypeCommentSingle :: TokenType

-- | multi line comment
TokenTypeCommentMulti :: TokenType

-- | Catch-all for unknown values
AnotherTokenType :: Int -> TokenType

-- | Specifies the type of traversal performed by
--   <tt><i>g_tree_traverse()</i></tt>, <tt><i>g_node_traverse()</i></tt>
--   and <tt><i>g_node_find()</i></tt>. The different orders are
--   illustrated here:
--   
--   <ul>
--   <li>In order: A, B, C, D, E, F, G, H, I</li>
--   <li>Pre order: F, B, A, D, C, E, G, I, H</li>
--   <li>Post order: A, C, E, D, B, H, I, G, F</li>
--   <li>Level order: F, B, G, A, D, I, C, E, H</li>
--   </ul>
data TraverseType

-- | vists a node's left child first, then the node itself, then its right
--   child. This is the one to use if you want the output sorted according
--   to the compare function.
TraverseTypeInOrder :: TraverseType

-- | visits a node, then its children.
TraverseTypePreOrder :: TraverseType

-- | visits the node's children, then the node itself.
TraverseTypePostOrder :: TraverseType

-- | is not implemented for [balanced binary
--   trees][glib-Balanced-Binary-Trees]. For [n-ary
--   trees][glib-N-ary-Trees], it vists the root node first, then its
--   children, then its grandchildren, and so on. Note that this is less
--   efficient than the other orders.
TraverseTypeLevelOrder :: TraverseType

-- | Catch-all for unknown values
AnotherTraverseType :: Int -> TraverseType

-- | These are the possible line break classifications.
--   
--   Since new unicode versions may add new types here, applications should
--   be ready to handle unknown values. They may be regarded as
--   <a>UnicodeBreakTypeUnknown</a>.
--   
--   See <a>Unicode Line Breaking Algorithm</a>.
data UnicodeBreakType

-- | Mandatory Break (BK)
UnicodeBreakTypeMandatory :: UnicodeBreakType

-- | Carriage Return (CR)
UnicodeBreakTypeCarriageReturn :: UnicodeBreakType

-- | Line Feed (LF)
UnicodeBreakTypeLineFeed :: UnicodeBreakType

-- | Attached Characters and Combining Marks (CM)
UnicodeBreakTypeCombiningMark :: UnicodeBreakType

-- | Surrogates (SG)
UnicodeBreakTypeSurrogate :: UnicodeBreakType

-- | Zero Width Space (ZW)
UnicodeBreakTypeZeroWidthSpace :: UnicodeBreakType

-- | Inseparable (IN)
UnicodeBreakTypeInseparable :: UnicodeBreakType

-- | Non-breaking ("Glue") (GL)
UnicodeBreakTypeNonBreakingGlue :: UnicodeBreakType

-- | Contingent Break Opportunity (CB)
UnicodeBreakTypeContingent :: UnicodeBreakType

-- | Space (SP)
UnicodeBreakTypeSpace :: UnicodeBreakType

-- | Break Opportunity After (BA)
UnicodeBreakTypeAfter :: UnicodeBreakType

-- | Break Opportunity Before (BB)
UnicodeBreakTypeBefore :: UnicodeBreakType

-- | Break Opportunity Before and After (B2)
UnicodeBreakTypeBeforeAndAfter :: UnicodeBreakType

-- | Hyphen (HY)
UnicodeBreakTypeHyphen :: UnicodeBreakType

-- | Nonstarter (NS)
UnicodeBreakTypeNonStarter :: UnicodeBreakType

-- | Opening Punctuation (OP)
UnicodeBreakTypeOpenPunctuation :: UnicodeBreakType

-- | Closing Punctuation (CL)
UnicodeBreakTypeClosePunctuation :: UnicodeBreakType

-- | Ambiguous Quotation (QU)
UnicodeBreakTypeQuotation :: UnicodeBreakType

-- | Exclamation/Interrogation (EX)
UnicodeBreakTypeExclamation :: UnicodeBreakType

-- | Ideographic (ID)
UnicodeBreakTypeIdeographic :: UnicodeBreakType

-- | Numeric (NU)
UnicodeBreakTypeNumeric :: UnicodeBreakType

-- | Infix Separator (Numeric) (IS)
UnicodeBreakTypeInfixSeparator :: UnicodeBreakType

-- | Symbols Allowing Break After (SY)
UnicodeBreakTypeSymbol :: UnicodeBreakType

-- | Ordinary Alphabetic and Symbol Characters (AL)
UnicodeBreakTypeAlphabetic :: UnicodeBreakType

-- | Prefix (Numeric) (PR)
UnicodeBreakTypePrefix :: UnicodeBreakType

-- | Postfix (Numeric) (PO)
UnicodeBreakTypePostfix :: UnicodeBreakType

-- | Complex Content Dependent (South East Asian) (SA)
UnicodeBreakTypeComplexContext :: UnicodeBreakType

-- | Ambiguous (Alphabetic or Ideographic) (AI)
UnicodeBreakTypeAmbiguous :: UnicodeBreakType

-- | Unknown (XX)
UnicodeBreakTypeUnknown :: UnicodeBreakType

-- | Next Line (NL)
UnicodeBreakTypeNextLine :: UnicodeBreakType

-- | Word Joiner (WJ)
UnicodeBreakTypeWordJoiner :: UnicodeBreakType

-- | Hangul L Jamo (JL)
UnicodeBreakTypeHangulLJamo :: UnicodeBreakType

-- | Hangul V Jamo (JV)
UnicodeBreakTypeHangulVJamo :: UnicodeBreakType

-- | Hangul T Jamo (JT)
UnicodeBreakTypeHangulTJamo :: UnicodeBreakType

-- | Hangul LV Syllable (H2)
UnicodeBreakTypeHangulLvSyllable :: UnicodeBreakType

-- | Hangul LVT Syllable (H3)
UnicodeBreakTypeHangulLvtSyllable :: UnicodeBreakType

-- | Closing Parenthesis (CP). Since 2.28. Deprecated: 2.70: Use
--   <a>UnicodeBreakTypeCloseParenthesis</a> instead.
UnicodeBreakTypeCloseParanthesis :: UnicodeBreakType

-- | Closing Parenthesis (CP). Since 2.70
UnicodeBreakTypeCloseParenthesis :: UnicodeBreakType

-- | Conditional Japanese Starter (CJ). Since: 2.32
UnicodeBreakTypeConditionalJapaneseStarter :: UnicodeBreakType

-- | Hebrew Letter (HL). Since: 2.32
UnicodeBreakTypeHebrewLetter :: UnicodeBreakType

-- | Regional Indicator (RI). Since: 2.36
UnicodeBreakTypeRegionalIndicator :: UnicodeBreakType

-- | Emoji Base (EB). Since: 2.50
UnicodeBreakTypeEmojiBase :: UnicodeBreakType

-- | Emoji Modifier (EM). Since: 2.50
UnicodeBreakTypeEmojiModifier :: UnicodeBreakType

-- | Zero Width Joiner (ZWJ). Since: 2.50
UnicodeBreakTypeZeroWidthJoiner :: UnicodeBreakType

-- | Catch-all for unknown values
AnotherUnicodeBreakType :: Int -> UnicodeBreakType

-- | The <a>UnicodeScript</a> enumeration identifies different writing
--   systems. The values correspond to the names as defined in the Unicode
--   standard. The enumeration has been added in GLib 2.14, and is
--   interchangeable with <tt><i>PangoScript</i></tt>.
--   
--   Note that new types may be added in the future. Applications should be
--   ready to handle unknown values. See <a>Unicode Standard Annex #24:
--   Script names</a>.
data UnicodeScript

-- | a value never returned from <a>unicharGetScript</a>
UnicodeScriptInvalidCode :: UnicodeScript

-- | a character used by multiple different scripts
UnicodeScriptCommon :: UnicodeScript

-- | a mark glyph that takes its script from the base glyph to which it is
--   attached
UnicodeScriptInherited :: UnicodeScript

-- | Arabic
UnicodeScriptArabic :: UnicodeScript

-- | Armenian
UnicodeScriptArmenian :: UnicodeScript

-- | Bengali
UnicodeScriptBengali :: UnicodeScript

-- | Bopomofo
UnicodeScriptBopomofo :: UnicodeScript

-- | Cherokee
UnicodeScriptCherokee :: UnicodeScript

-- | Coptic
UnicodeScriptCoptic :: UnicodeScript

-- | Cyrillic
UnicodeScriptCyrillic :: UnicodeScript

-- | Deseret
UnicodeScriptDeseret :: UnicodeScript

-- | Devanagari
UnicodeScriptDevanagari :: UnicodeScript

-- | Ethiopic
UnicodeScriptEthiopic :: UnicodeScript

-- | Georgian
UnicodeScriptGeorgian :: UnicodeScript

-- | Gothic
UnicodeScriptGothic :: UnicodeScript

-- | Greek
UnicodeScriptGreek :: UnicodeScript

-- | Gujarati
UnicodeScriptGujarati :: UnicodeScript

-- | Gurmukhi
UnicodeScriptGurmukhi :: UnicodeScript

-- | Han
UnicodeScriptHan :: UnicodeScript

-- | Hangul
UnicodeScriptHangul :: UnicodeScript

-- | Hebrew
UnicodeScriptHebrew :: UnicodeScript

-- | Hiragana
UnicodeScriptHiragana :: UnicodeScript

-- | Kannada
UnicodeScriptKannada :: UnicodeScript

-- | Katakana
UnicodeScriptKatakana :: UnicodeScript

-- | Khmer
UnicodeScriptKhmer :: UnicodeScript

-- | Lao
UnicodeScriptLao :: UnicodeScript

-- | Latin
UnicodeScriptLatin :: UnicodeScript

-- | Malayalam
UnicodeScriptMalayalam :: UnicodeScript

-- | Mongolian
UnicodeScriptMongolian :: UnicodeScript

-- | Myanmar
UnicodeScriptMyanmar :: UnicodeScript

-- | Ogham
UnicodeScriptOgham :: UnicodeScript

-- | Old Italic
UnicodeScriptOldItalic :: UnicodeScript

-- | Oriya
UnicodeScriptOriya :: UnicodeScript

-- | Runic
UnicodeScriptRunic :: UnicodeScript

-- | Sinhala
UnicodeScriptSinhala :: UnicodeScript

-- | Syriac
UnicodeScriptSyriac :: UnicodeScript

-- | Tamil
UnicodeScriptTamil :: UnicodeScript

-- | Telugu
UnicodeScriptTelugu :: UnicodeScript

-- | Thaana
UnicodeScriptThaana :: UnicodeScript

-- | Thai
UnicodeScriptThai :: UnicodeScript

-- | Tibetan
UnicodeScriptTibetan :: UnicodeScript

-- | Canadian Aboriginal
UnicodeScriptCanadianAboriginal :: UnicodeScript

-- | Yi
UnicodeScriptYi :: UnicodeScript

-- | Tagalog
UnicodeScriptTagalog :: UnicodeScript

-- | Hanunoo
UnicodeScriptHanunoo :: UnicodeScript

-- | Buhid
UnicodeScriptBuhid :: UnicodeScript

-- | Tagbanwa
UnicodeScriptTagbanwa :: UnicodeScript

-- | Braille
UnicodeScriptBraille :: UnicodeScript

-- | Cypriot
UnicodeScriptCypriot :: UnicodeScript

-- | Limbu
UnicodeScriptLimbu :: UnicodeScript

-- | Osmanya
UnicodeScriptOsmanya :: UnicodeScript

-- | Shavian
UnicodeScriptShavian :: UnicodeScript

-- | Linear B
UnicodeScriptLinearB :: UnicodeScript

-- | Tai Le
UnicodeScriptTaiLe :: UnicodeScript

-- | Ugaritic
UnicodeScriptUgaritic :: UnicodeScript

-- | New Tai Lue
UnicodeScriptNewTaiLue :: UnicodeScript

-- | Buginese
UnicodeScriptBuginese :: UnicodeScript

-- | Glagolitic
UnicodeScriptGlagolitic :: UnicodeScript

-- | Tifinagh
UnicodeScriptTifinagh :: UnicodeScript

-- | Syloti Nagri
UnicodeScriptSylotiNagri :: UnicodeScript

-- | Old Persian
UnicodeScriptOldPersian :: UnicodeScript

-- | Kharoshthi
UnicodeScriptKharoshthi :: UnicodeScript

-- | an unassigned code point
UnicodeScriptUnknown :: UnicodeScript

-- | Balinese
UnicodeScriptBalinese :: UnicodeScript

-- | Cuneiform
UnicodeScriptCuneiform :: UnicodeScript

-- | Phoenician
UnicodeScriptPhoenician :: UnicodeScript

-- | Phags-pa
UnicodeScriptPhagsPa :: UnicodeScript

-- | N'Ko
UnicodeScriptNko :: UnicodeScript

-- | Kayah Li. Since 2.16.3
UnicodeScriptKayahLi :: UnicodeScript

-- | Lepcha. Since 2.16.3
UnicodeScriptLepcha :: UnicodeScript

-- | Rejang. Since 2.16.3
UnicodeScriptRejang :: UnicodeScript

-- | Sundanese. Since 2.16.3
UnicodeScriptSundanese :: UnicodeScript

-- | Saurashtra. Since 2.16.3
UnicodeScriptSaurashtra :: UnicodeScript

-- | Cham. Since 2.16.3
UnicodeScriptCham :: UnicodeScript

-- | Ol Chiki. Since 2.16.3
UnicodeScriptOlChiki :: UnicodeScript

-- | Vai. Since 2.16.3
UnicodeScriptVai :: UnicodeScript

-- | Carian. Since 2.16.3
UnicodeScriptCarian :: UnicodeScript

-- | Lycian. Since 2.16.3
UnicodeScriptLycian :: UnicodeScript

-- | Lydian. Since 2.16.3
UnicodeScriptLydian :: UnicodeScript

-- | Avestan. Since 2.26
UnicodeScriptAvestan :: UnicodeScript

-- | Bamum. Since 2.26
UnicodeScriptBamum :: UnicodeScript

-- | Egyptian Hieroglpyhs. Since 2.26
UnicodeScriptEgyptianHieroglyphs :: UnicodeScript

-- | Imperial Aramaic. Since 2.26
UnicodeScriptImperialAramaic :: UnicodeScript

-- | Inscriptional Pahlavi. Since 2.26
UnicodeScriptInscriptionalPahlavi :: UnicodeScript

-- | Inscriptional Parthian. Since 2.26
UnicodeScriptInscriptionalParthian :: UnicodeScript

-- | Javanese. Since 2.26
UnicodeScriptJavanese :: UnicodeScript

-- | Kaithi. Since 2.26
UnicodeScriptKaithi :: UnicodeScript

-- | Lisu. Since 2.26
UnicodeScriptLisu :: UnicodeScript

-- | Meetei Mayek. Since 2.26
UnicodeScriptMeeteiMayek :: UnicodeScript

-- | Old South Arabian. Since 2.26
UnicodeScriptOldSouthArabian :: UnicodeScript

-- | Old Turkic. Since 2.28
UnicodeScriptOldTurkic :: UnicodeScript

-- | Samaritan. Since 2.26
UnicodeScriptSamaritan :: UnicodeScript

-- | Tai Tham. Since 2.26
UnicodeScriptTaiTham :: UnicodeScript

-- | Tai Viet. Since 2.26
UnicodeScriptTaiViet :: UnicodeScript

-- | Batak. Since 2.28
UnicodeScriptBatak :: UnicodeScript

-- | Brahmi. Since 2.28
UnicodeScriptBrahmi :: UnicodeScript

-- | Mandaic. Since 2.28
UnicodeScriptMandaic :: UnicodeScript

-- | Chakma. Since: 2.32
UnicodeScriptChakma :: UnicodeScript

-- | Meroitic Cursive. Since: 2.32
UnicodeScriptMeroiticCursive :: UnicodeScript

-- | Meroitic Hieroglyphs. Since: 2.32
UnicodeScriptMeroiticHieroglyphs :: UnicodeScript

-- | Miao. Since: 2.32
UnicodeScriptMiao :: UnicodeScript

-- | Sharada. Since: 2.32
UnicodeScriptSharada :: UnicodeScript

-- | Sora Sompeng. Since: 2.32
UnicodeScriptSoraSompeng :: UnicodeScript

-- | Takri. Since: 2.32
UnicodeScriptTakri :: UnicodeScript

-- | Bassa. Since: 2.42
UnicodeScriptBassaVah :: UnicodeScript

-- | Caucasian Albanian. Since: 2.42
UnicodeScriptCaucasianAlbanian :: UnicodeScript

-- | Duployan. Since: 2.42
UnicodeScriptDuployan :: UnicodeScript

-- | Elbasan. Since: 2.42
UnicodeScriptElbasan :: UnicodeScript

-- | Grantha. Since: 2.42
UnicodeScriptGrantha :: UnicodeScript

-- | Kjohki. Since: 2.42
UnicodeScriptKhojki :: UnicodeScript

-- | Khudawadi, Sindhi. Since: 2.42
UnicodeScriptKhudawadi :: UnicodeScript

-- | Linear A. Since: 2.42
UnicodeScriptLinearA :: UnicodeScript

-- | Mahajani. Since: 2.42
UnicodeScriptMahajani :: UnicodeScript

-- | Manichaean. Since: 2.42
UnicodeScriptManichaean :: UnicodeScript

-- | Mende Kikakui. Since: 2.42
UnicodeScriptMendeKikakui :: UnicodeScript

-- | Modi. Since: 2.42
UnicodeScriptModi :: UnicodeScript

-- | Mro. Since: 2.42
UnicodeScriptMro :: UnicodeScript

-- | Nabataean. Since: 2.42
UnicodeScriptNabataean :: UnicodeScript

-- | Old North Arabian. Since: 2.42
UnicodeScriptOldNorthArabian :: UnicodeScript

-- | Old Permic. Since: 2.42
UnicodeScriptOldPermic :: UnicodeScript

-- | Pahawh Hmong. Since: 2.42
UnicodeScriptPahawhHmong :: UnicodeScript

-- | Palmyrene. Since: 2.42
UnicodeScriptPalmyrene :: UnicodeScript

-- | Pau Cin Hau. Since: 2.42
UnicodeScriptPauCinHau :: UnicodeScript

-- | Psalter Pahlavi. Since: 2.42
UnicodeScriptPsalterPahlavi :: UnicodeScript

-- | Siddham. Since: 2.42
UnicodeScriptSiddham :: UnicodeScript

-- | Tirhuta. Since: 2.42
UnicodeScriptTirhuta :: UnicodeScript

-- | Warang Citi. Since: 2.42
UnicodeScriptWarangCiti :: UnicodeScript

-- | Ahom. Since: 2.48
UnicodeScriptAhom :: UnicodeScript

-- | Anatolian Hieroglyphs. Since: 2.48
UnicodeScriptAnatolianHieroglyphs :: UnicodeScript

-- | Hatran. Since: 2.48
UnicodeScriptHatran :: UnicodeScript

-- | Multani. Since: 2.48
UnicodeScriptMultani :: UnicodeScript

-- | Old Hungarian. Since: 2.48
UnicodeScriptOldHungarian :: UnicodeScript

-- | Signwriting. Since: 2.48
UnicodeScriptSignwriting :: UnicodeScript

-- | Adlam. Since: 2.50
UnicodeScriptAdlam :: UnicodeScript

-- | Bhaiksuki. Since: 2.50
UnicodeScriptBhaiksuki :: UnicodeScript

-- | Marchen. Since: 2.50
UnicodeScriptMarchen :: UnicodeScript

-- | Newa. Since: 2.50
UnicodeScriptNewa :: UnicodeScript

-- | Osage. Since: 2.50
UnicodeScriptOsage :: UnicodeScript

-- | Tangut. Since: 2.50
UnicodeScriptTangut :: UnicodeScript

-- | Masaram Gondi. Since: 2.54
UnicodeScriptMasaramGondi :: UnicodeScript

-- | Nushu. Since: 2.54
UnicodeScriptNushu :: UnicodeScript

-- | Soyombo. Since: 2.54
UnicodeScriptSoyombo :: UnicodeScript

-- | Zanabazar Square. Since: 2.54
UnicodeScriptZanabazarSquare :: UnicodeScript

-- | Dogra. Since: 2.58
UnicodeScriptDogra :: UnicodeScript

-- | Gunjala Gondi. Since: 2.58
UnicodeScriptGunjalaGondi :: UnicodeScript

-- | Hanifi Rohingya. Since: 2.58
UnicodeScriptHanifiRohingya :: UnicodeScript

-- | Makasar. Since: 2.58
UnicodeScriptMakasar :: UnicodeScript

-- | Medefaidrin. Since: 2.58
UnicodeScriptMedefaidrin :: UnicodeScript

-- | Old Sogdian. Since: 2.58
UnicodeScriptOldSogdian :: UnicodeScript

-- | Sogdian. Since: 2.58
UnicodeScriptSogdian :: UnicodeScript

-- | Elym. Since: 2.62
UnicodeScriptElymaic :: UnicodeScript

-- | Nand. Since: 2.62
UnicodeScriptNandinagari :: UnicodeScript

-- | Rohg. Since: 2.62
UnicodeScriptNyiakengPuachueHmong :: UnicodeScript

-- | Wcho. Since: 2.62
UnicodeScriptWancho :: UnicodeScript

-- | Chorasmian. Since: 2.66
UnicodeScriptChorasmian :: UnicodeScript

-- | Dives Akuru. Since: 2.66
UnicodeScriptDivesAkuru :: UnicodeScript

-- | Khitan small script. Since: 2.66
UnicodeScriptKhitanSmallScript :: UnicodeScript

-- | Yezidi. Since: 2.66
UnicodeScriptYezidi :: UnicodeScript

-- | Cypro-Minoan. Since: 2.72
UnicodeScriptCyproMinoan :: UnicodeScript

-- | Old Uyghur. Since: 2.72
UnicodeScriptOldUyghur :: UnicodeScript

-- | Tangsa. Since: 2.72
UnicodeScriptTangsa :: UnicodeScript

-- | Toto. Since: 2.72
UnicodeScriptToto :: UnicodeScript

-- | Vithkuqi. Since: 2.72
UnicodeScriptVithkuqi :: UnicodeScript

-- | Mathematical notation. Since: 2.72
UnicodeScriptMath :: UnicodeScript

-- | Catch-all for unknown values
AnotherUnicodeScript :: Int -> UnicodeScript

-- | These are the possible character classifications from the Unicode
--   specification. See <a>Unicode Character Database</a>.
data UnicodeType

-- | General category "Other, Control" (Cc)
UnicodeTypeControl :: UnicodeType

-- | General category "Other, Format" (Cf)
UnicodeTypeFormat :: UnicodeType

-- | General category "Other, Not Assigned" (Cn)
UnicodeTypeUnassigned :: UnicodeType

-- | General category "Other, Private Use" (Co)
UnicodeTypePrivateUse :: UnicodeType

-- | General category "Other, Surrogate" (Cs)
UnicodeTypeSurrogate :: UnicodeType

-- | General category "Letter, Lowercase" (Ll)
UnicodeTypeLowercaseLetter :: UnicodeType

-- | General category "Letter, Modifier" (Lm)
UnicodeTypeModifierLetter :: UnicodeType

-- | General category "Letter, Other" (Lo)
UnicodeTypeOtherLetter :: UnicodeType

-- | General category "Letter, Titlecase" (Lt)
UnicodeTypeTitlecaseLetter :: UnicodeType

-- | General category "Letter, Uppercase" (Lu)
UnicodeTypeUppercaseLetter :: UnicodeType

-- | General category "Mark, Spacing" (Mc)
UnicodeTypeSpacingMark :: UnicodeType

-- | General category "Mark, Enclosing" (Me)
UnicodeTypeEnclosingMark :: UnicodeType

-- | General category "Mark, Nonspacing" (Mn)
UnicodeTypeNonSpacingMark :: UnicodeType

-- | General category "Number, Decimal Digit" (Nd)
UnicodeTypeDecimalNumber :: UnicodeType

-- | General category "Number, Letter" (Nl)
UnicodeTypeLetterNumber :: UnicodeType

-- | General category "Number, Other" (No)
UnicodeTypeOtherNumber :: UnicodeType

-- | General category "Punctuation, Connector" (Pc)
UnicodeTypeConnectPunctuation :: UnicodeType

-- | General category "Punctuation, Dash" (Pd)
UnicodeTypeDashPunctuation :: UnicodeType

-- | General category "Punctuation, Close" (Pe)
UnicodeTypeClosePunctuation :: UnicodeType

-- | General category "Punctuation, Final quote" (Pf)
UnicodeTypeFinalPunctuation :: UnicodeType

-- | General category "Punctuation, Initial quote" (Pi)
UnicodeTypeInitialPunctuation :: UnicodeType

-- | General category "Punctuation, Other" (Po)
UnicodeTypeOtherPunctuation :: UnicodeType

-- | General category "Punctuation, Open" (Ps)
UnicodeTypeOpenPunctuation :: UnicodeType

-- | General category "Symbol, Currency" (Sc)
UnicodeTypeCurrencySymbol :: UnicodeType

-- | General category "Symbol, Modifier" (Sk)
UnicodeTypeModifierSymbol :: UnicodeType

-- | General category "Symbol, Math" (Sm)
UnicodeTypeMathSymbol :: UnicodeType

-- | General category "Symbol, Other" (So)
UnicodeTypeOtherSymbol :: UnicodeType

-- | General category "Separator, Line" (Zl)
UnicodeTypeLineSeparator :: UnicodeType

-- | General category "Separator, Paragraph" (Zp)
UnicodeTypeParagraphSeparator :: UnicodeType

-- | General category "Separator, Space" (Zs)
UnicodeTypeSpaceSeparator :: UnicodeType

-- | Catch-all for unknown values
AnotherUnicodeType :: Int -> UnicodeType

-- | Error codes returned by <a>Uri</a> methods.
--   
--   <i>Since: 2.66</i>
data UriError

-- | Generic error if no more specific error is available. See the error
--   message for details.
UriErrorFailed :: UriError

-- | The scheme of a URI could not be parsed.
UriErrorBadScheme :: UriError

-- | The user/userinfo of a URI could not be parsed.
UriErrorBadUser :: UriError

-- | The password of a URI could not be parsed.
UriErrorBadPassword :: UriError

-- | The authentication parameters of a URI could not be parsed.
UriErrorBadAuthParams :: UriError

-- | The host of a URI could not be parsed.
UriErrorBadHost :: UriError

-- | The port of a URI could not be parsed.
UriErrorBadPort :: UriError

-- | The path of a URI could not be parsed.
UriErrorBadPath :: UriError

-- | The query of a URI could not be parsed.
UriErrorBadQuery :: UriError

-- | The fragment of a URI could not be parsed.
UriErrorBadFragment :: UriError

-- | Catch-all for unknown values
AnotherUriError :: Int -> UriError

-- | Catch exceptions of type <a>UriError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchUriError :: IO a -> (UriError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>UriError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleUriError :: (UriError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | These are logical ids for special directories which are defined
--   depending on the platform used. You should use
--   <a>getUserSpecialDir</a> to retrieve the full path associated to the
--   logical id.
--   
--   The <a>UserDirectory</a> enumeration can be extended at later date.
--   Not every platform has a directory for every logical id in this
--   enumeration.
--   
--   <i>Since: 2.14</i>
data UserDirectory

-- | the user's Desktop directory
UserDirectoryDirectoryDesktop :: UserDirectory

-- | the user's Documents directory
UserDirectoryDirectoryDocuments :: UserDirectory

-- | the user's Downloads directory
UserDirectoryDirectoryDownload :: UserDirectory

-- | the user's Music directory
UserDirectoryDirectoryMusic :: UserDirectory

-- | the user's Pictures directory
UserDirectoryDirectoryPictures :: UserDirectory

-- | the user's shared directory
UserDirectoryDirectoryPublicShare :: UserDirectory

-- | the user's Templates directory
UserDirectoryDirectoryTemplates :: UserDirectory

-- | the user's Movies directory
UserDirectoryDirectoryVideos :: UserDirectory

-- | the number of enum values
UserDirectoryNDirectories :: UserDirectory

-- | Catch-all for unknown values
AnotherUserDirectory :: Int -> UserDirectory

-- | The range of possible top-level types of <a>GVariant</a> instances.
--   
--   <i>Since: 2.24</i>
data VariantClass

-- | The <a>GVariant</a> is a boolean.
VariantClassBoolean :: VariantClass

-- | The <a>GVariant</a> is a byte.
VariantClassByte :: VariantClass

-- | The <a>GVariant</a> is a signed 16 bit integer.
VariantClassInt16 :: VariantClass

-- | The <a>GVariant</a> is an unsigned 16 bit integer.
VariantClassUint16 :: VariantClass

-- | The <a>GVariant</a> is a signed 32 bit integer.
VariantClassInt32 :: VariantClass

-- | The <a>GVariant</a> is an unsigned 32 bit integer.
VariantClassUint32 :: VariantClass

-- | The <a>GVariant</a> is a signed 64 bit integer.
VariantClassInt64 :: VariantClass

-- | The <a>GVariant</a> is an unsigned 64 bit integer.
VariantClassUint64 :: VariantClass

-- | The <a>GVariant</a> is a file handle index.
VariantClassHandle :: VariantClass

-- | The <a>GVariant</a> is a double precision floating point value.
VariantClassDouble :: VariantClass

-- | The <a>GVariant</a> is a normal string.
VariantClassString :: VariantClass

-- | The <a>GVariant</a> is a D-Bus object path string.
VariantClassObjectPath :: VariantClass

-- | The <a>GVariant</a> is a D-Bus signature string.
VariantClassSignature :: VariantClass

-- | The <a>GVariant</a> is a variant.
VariantClassVariant :: VariantClass

-- | The <a>GVariant</a> is a maybe-typed value.
VariantClassMaybe :: VariantClass

-- | The <a>GVariant</a> is an array.
VariantClassArray :: VariantClass

-- | The <a>GVariant</a> is a tuple.
VariantClassTuple :: VariantClass

-- | The <a>GVariant</a> is a dictionary entry.
VariantClassDictEntry :: VariantClass

-- | Catch-all for unknown values
AnotherVariantClass :: Int -> VariantClass

-- | Error codes returned by parsing text-format GVariants.
data VariantParseError

-- | generic error (unused)
VariantParseErrorFailed :: VariantParseError

-- | a non-basic <a>VariantType</a> was given where a basic type was
--   expected
VariantParseErrorBasicTypeExpected :: VariantParseError

-- | cannot infer the <a>VariantType</a>
VariantParseErrorCannotInferType :: VariantParseError

-- | an indefinite <a>VariantType</a> was given where a definite type was
--   expected
VariantParseErrorDefiniteTypeExpected :: VariantParseError

-- | extra data after parsing finished
VariantParseErrorInputNotAtEnd :: VariantParseError

-- | invalid character in number or unicode escape
VariantParseErrorInvalidCharacter :: VariantParseError

-- | not a valid <a>GVariant</a> format string
VariantParseErrorInvalidFormatString :: VariantParseError

-- | not a valid object path
VariantParseErrorInvalidObjectPath :: VariantParseError

-- | not a valid type signature
VariantParseErrorInvalidSignature :: VariantParseError

-- | not a valid <a>GVariant</a> type string
VariantParseErrorInvalidTypeString :: VariantParseError

-- | could not find a common type for array entries
VariantParseErrorNoCommonType :: VariantParseError

-- | the numerical value is out of range of the given type
VariantParseErrorNumberOutOfRange :: VariantParseError

-- | the numerical value is out of range for any type
VariantParseErrorNumberTooBig :: VariantParseError

-- | cannot parse as variant of the specified type
VariantParseErrorTypeError :: VariantParseError

-- | an unexpected token was encountered
VariantParseErrorUnexpectedToken :: VariantParseError

-- | an unknown keyword was encountered
VariantParseErrorUnknownKeyword :: VariantParseError

-- | unterminated string constant
VariantParseErrorUnterminatedStringConstant :: VariantParseError

-- | no value given
VariantParseErrorValueExpected :: VariantParseError

-- | variant was too deeply nested; <a>GVariant</a> is only guaranteed to
--   handle nesting up to 64 levels (Since: 2.64)
VariantParseErrorRecursion :: VariantParseError

-- | Catch-all for unknown values
AnotherVariantParseError :: Int -> VariantParseError

-- | Catch exceptions of type <a>VariantParseError</a>. This is a
--   specialized version of <a>catchGErrorJustDomain</a>.
catchVariantParseError :: IO a -> (VariantParseError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>VariantParseError</a>. This is a
--   specialized version of <a>handleGErrorJustDomain</a>.
handleVariantParseError :: (VariantParseError -> GErrorMessage -> IO a) -> IO a -> IO a
instance GHC.Classes.Eq GI.GLib.Enums.VariantParseError
instance GHC.Show.Show GI.GLib.Enums.VariantParseError
instance GHC.Classes.Eq GI.GLib.Enums.VariantClass
instance GHC.Show.Show GI.GLib.Enums.VariantClass
instance GHC.Classes.Eq GI.GLib.Enums.UserDirectory
instance GHC.Show.Show GI.GLib.Enums.UserDirectory
instance GHC.Classes.Eq GI.GLib.Enums.UriError
instance GHC.Show.Show GI.GLib.Enums.UriError
instance GHC.Classes.Eq GI.GLib.Enums.UnicodeType
instance GHC.Show.Show GI.GLib.Enums.UnicodeType
instance GHC.Classes.Eq GI.GLib.Enums.UnicodeScript
instance GHC.Show.Show GI.GLib.Enums.UnicodeScript
instance GHC.Classes.Eq GI.GLib.Enums.UnicodeBreakType
instance GHC.Show.Show GI.GLib.Enums.UnicodeBreakType
instance GHC.Classes.Eq GI.GLib.Enums.TraverseType
instance GHC.Show.Show GI.GLib.Enums.TraverseType
instance GHC.Classes.Eq GI.GLib.Enums.TokenType
instance GHC.Show.Show GI.GLib.Enums.TokenType
instance GHC.Classes.Eq GI.GLib.Enums.TimeType
instance GHC.Show.Show GI.GLib.Enums.TimeType
instance GHC.Classes.Eq GI.GLib.Enums.ThreadError
instance GHC.Show.Show GI.GLib.Enums.ThreadError
instance GHC.Classes.Eq GI.GLib.Enums.TestResult
instance GHC.Show.Show GI.GLib.Enums.TestResult
instance GHC.Classes.Eq GI.GLib.Enums.TestLogType
instance GHC.Show.Show GI.GLib.Enums.TestLogType
instance GHC.Classes.Eq GI.GLib.Enums.TestFileType
instance GHC.Show.Show GI.GLib.Enums.TestFileType
instance GHC.Classes.Eq GI.GLib.Enums.SpawnError
instance GHC.Show.Show GI.GLib.Enums.SpawnError
instance GHC.Classes.Eq GI.GLib.Enums.SliceConfig
instance GHC.Show.Show GI.GLib.Enums.SliceConfig
instance GHC.Classes.Eq GI.GLib.Enums.ShellError
instance GHC.Show.Show GI.GLib.Enums.ShellError
instance GHC.Classes.Eq GI.GLib.Enums.SeekType
instance GHC.Show.Show GI.GLib.Enums.SeekType
instance GHC.Classes.Eq GI.GLib.Enums.RegexError
instance GHC.Show.Show GI.GLib.Enums.RegexError
instance GHC.Classes.Eq GI.GLib.Enums.OptionError
instance GHC.Show.Show GI.GLib.Enums.OptionError
instance GHC.Classes.Eq GI.GLib.Enums.OptionArg
instance GHC.Show.Show GI.GLib.Enums.OptionArg
instance GHC.Classes.Eq GI.GLib.Enums.OnceStatus
instance GHC.Show.Show GI.GLib.Enums.OnceStatus
instance GHC.Classes.Eq GI.GLib.Enums.NumberParserError
instance GHC.Show.Show GI.GLib.Enums.NumberParserError
instance GHC.Classes.Eq GI.GLib.Enums.NormalizeMode
instance GHC.Show.Show GI.GLib.Enums.NormalizeMode
instance GHC.Classes.Eq GI.GLib.Enums.MarkupError
instance GHC.Show.Show GI.GLib.Enums.MarkupError
instance GHC.Classes.Eq GI.GLib.Enums.LogWriterOutput
instance GHC.Show.Show GI.GLib.Enums.LogWriterOutput
instance GHC.Classes.Eq GI.GLib.Enums.KeyFileError
instance GHC.Show.Show GI.GLib.Enums.KeyFileError
instance GHC.Classes.Eq GI.GLib.Enums.IOStatus
instance GHC.Show.Show GI.GLib.Enums.IOStatus
instance GHC.Classes.Eq GI.GLib.Enums.IOError
instance GHC.Show.Show GI.GLib.Enums.IOError
instance GHC.Classes.Eq GI.GLib.Enums.IOChannelError
instance GHC.Show.Show GI.GLib.Enums.IOChannelError
instance GHC.Classes.Eq GI.GLib.Enums.FileError
instance GHC.Show.Show GI.GLib.Enums.FileError
instance GHC.Classes.Eq GI.GLib.Enums.ErrorType
instance GHC.Show.Show GI.GLib.Enums.ErrorType
instance GHC.Classes.Eq GI.GLib.Enums.DateWeekday
instance GHC.Show.Show GI.GLib.Enums.DateWeekday
instance GHC.Classes.Eq GI.GLib.Enums.DateMonth
instance GHC.Show.Show GI.GLib.Enums.DateMonth
instance GHC.Classes.Eq GI.GLib.Enums.DateDMY
instance GHC.Show.Show GI.GLib.Enums.DateDMY
instance GHC.Classes.Eq GI.GLib.Enums.ConvertError
instance GHC.Show.Show GI.GLib.Enums.ConvertError
instance GHC.Classes.Eq GI.GLib.Enums.ChecksumType
instance GHC.Show.Show GI.GLib.Enums.ChecksumType
instance GHC.Classes.Eq GI.GLib.Enums.BookmarkFileError
instance GHC.Show.Show GI.GLib.Enums.BookmarkFileError
instance GHC.Enum.Enum GI.GLib.Enums.BookmarkFileError
instance GHC.Classes.Ord GI.GLib.Enums.BookmarkFileError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.BookmarkFileError
instance GHC.Enum.Enum GI.GLib.Enums.ChecksumType
instance GHC.Classes.Ord GI.GLib.Enums.ChecksumType
instance GHC.Enum.Enum GI.GLib.Enums.ConvertError
instance GHC.Classes.Ord GI.GLib.Enums.ConvertError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.ConvertError
instance GHC.Enum.Enum GI.GLib.Enums.DateDMY
instance GHC.Classes.Ord GI.GLib.Enums.DateDMY
instance GHC.Enum.Enum GI.GLib.Enums.DateMonth
instance GHC.Classes.Ord GI.GLib.Enums.DateMonth
instance GHC.Enum.Enum GI.GLib.Enums.DateWeekday
instance GHC.Classes.Ord GI.GLib.Enums.DateWeekday
instance GHC.Enum.Enum GI.GLib.Enums.ErrorType
instance GHC.Classes.Ord GI.GLib.Enums.ErrorType
instance GHC.Enum.Enum GI.GLib.Enums.FileError
instance GHC.Classes.Ord GI.GLib.Enums.FileError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.FileError
instance GHC.Enum.Enum GI.GLib.Enums.IOChannelError
instance GHC.Classes.Ord GI.GLib.Enums.IOChannelError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.IOChannelError
instance GHC.Enum.Enum GI.GLib.Enums.IOError
instance GHC.Classes.Ord GI.GLib.Enums.IOError
instance GHC.Enum.Enum GI.GLib.Enums.IOStatus
instance GHC.Classes.Ord GI.GLib.Enums.IOStatus
instance GHC.Enum.Enum GI.GLib.Enums.KeyFileError
instance GHC.Classes.Ord GI.GLib.Enums.KeyFileError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.KeyFileError
instance GHC.Enum.Enum GI.GLib.Enums.LogWriterOutput
instance GHC.Classes.Ord GI.GLib.Enums.LogWriterOutput
instance GHC.Enum.Enum GI.GLib.Enums.MarkupError
instance GHC.Classes.Ord GI.GLib.Enums.MarkupError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.MarkupError
instance GHC.Enum.Enum GI.GLib.Enums.NormalizeMode
instance GHC.Classes.Ord GI.GLib.Enums.NormalizeMode
instance GHC.Enum.Enum GI.GLib.Enums.NumberParserError
instance GHC.Classes.Ord GI.GLib.Enums.NumberParserError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.NumberParserError
instance GHC.Enum.Enum GI.GLib.Enums.OnceStatus
instance GHC.Classes.Ord GI.GLib.Enums.OnceStatus
instance GHC.Enum.Enum GI.GLib.Enums.OptionArg
instance GHC.Classes.Ord GI.GLib.Enums.OptionArg
instance GHC.Enum.Enum GI.GLib.Enums.OptionError
instance GHC.Classes.Ord GI.GLib.Enums.OptionError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.OptionError
instance GHC.Enum.Enum GI.GLib.Enums.RegexError
instance GHC.Classes.Ord GI.GLib.Enums.RegexError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.RegexError
instance GHC.Enum.Enum GI.GLib.Enums.SeekType
instance GHC.Classes.Ord GI.GLib.Enums.SeekType
instance GHC.Enum.Enum GI.GLib.Enums.ShellError
instance GHC.Classes.Ord GI.GLib.Enums.ShellError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.ShellError
instance GHC.Enum.Enum GI.GLib.Enums.SliceConfig
instance GHC.Classes.Ord GI.GLib.Enums.SliceConfig
instance GHC.Enum.Enum GI.GLib.Enums.SpawnError
instance GHC.Classes.Ord GI.GLib.Enums.SpawnError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.SpawnError
instance GHC.Enum.Enum GI.GLib.Enums.TestFileType
instance GHC.Classes.Ord GI.GLib.Enums.TestFileType
instance GHC.Enum.Enum GI.GLib.Enums.TestLogType
instance GHC.Classes.Ord GI.GLib.Enums.TestLogType
instance GHC.Enum.Enum GI.GLib.Enums.TestResult
instance GHC.Classes.Ord GI.GLib.Enums.TestResult
instance GHC.Enum.Enum GI.GLib.Enums.ThreadError
instance GHC.Classes.Ord GI.GLib.Enums.ThreadError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.ThreadError
instance GHC.Enum.Enum GI.GLib.Enums.TimeType
instance GHC.Classes.Ord GI.GLib.Enums.TimeType
instance GHC.Enum.Enum GI.GLib.Enums.TokenType
instance GHC.Classes.Ord GI.GLib.Enums.TokenType
instance GHC.Enum.Enum GI.GLib.Enums.TraverseType
instance GHC.Classes.Ord GI.GLib.Enums.TraverseType
instance GHC.Enum.Enum GI.GLib.Enums.UnicodeBreakType
instance GHC.Classes.Ord GI.GLib.Enums.UnicodeBreakType
instance GHC.Enum.Enum GI.GLib.Enums.UnicodeScript
instance GHC.Classes.Ord GI.GLib.Enums.UnicodeScript
instance GHC.Enum.Enum GI.GLib.Enums.UnicodeType
instance GHC.Classes.Ord GI.GLib.Enums.UnicodeType
instance GHC.Enum.Enum GI.GLib.Enums.UriError
instance GHC.Classes.Ord GI.GLib.Enums.UriError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.UriError
instance GHC.Enum.Enum GI.GLib.Enums.UserDirectory
instance GHC.Classes.Ord GI.GLib.Enums.UserDirectory
instance GHC.Enum.Enum GI.GLib.Enums.VariantClass
instance GHC.Classes.Ord GI.GLib.Enums.VariantClass
instance GHC.Enum.Enum GI.GLib.Enums.VariantParseError
instance GHC.Classes.Ord GI.GLib.Enums.VariantParseError
instance Data.GI.Base.GError.GErrorClass GI.GLib.Enums.VariantParseError


module GI.GLib.Flags

-- | <i>No description available in the introspection data.</i>
data AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeAlnum :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeAlpha :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeCntrl :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeDigit :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeGraph :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeLower :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypePrint :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypePunct :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeSpace :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeUpper :: AsciiType

-- | <i>No description available in the introspection data.</i>
AsciiTypeXdigit :: AsciiType

-- | Catch-all for unknown values
AnotherAsciiType :: Int -> AsciiType

-- | Flags to pass to <a>fileSetContentsFull</a> to affect its safety and
--   performance.
--   
--   <i>Since: 2.66</i>
data FileSetContentsFlags

-- | No guarantees about file consistency or durability. The most dangerous
--   setting, which is slightly faster than other settings.
FileSetContentsFlagsNone :: FileSetContentsFlags

-- | Guarantee file consistency: after a crash, either the old version of
--   the file or the new version of the file will be available, but not a
--   mixture. On Unix systems this equates to an <tt>fsync()</tt> on the
--   file and use of an atomic <tt>rename()</tt> of the new version of the
--   file over the old.
FileSetContentsFlagsConsistent :: FileSetContentsFlags

-- | Guarantee file durability: after a crash, the new version of the file
--   will be available. On Unix systems this equates to an <tt>fsync()</tt>
--   on the file (if <a>FileSetContentsFlagsConsistent</a> is unset), or
--   the effects of <a>FileSetContentsFlagsConsistent</a> plus an
--   <tt>fsync()</tt> on the directory containing the file after calling
--   <tt>rename()</tt>.
FileSetContentsFlagsDurable :: FileSetContentsFlags

-- | Only apply consistency and durability guarantees if the file already
--   exists. This may speed up file operations if the file doesn’t
--   currently exist, but may result in a corrupted version of the new file
--   if the system crashes while writing it.
FileSetContentsFlagsOnlyExisting :: FileSetContentsFlags

-- | Catch-all for unknown values
AnotherFileSetContentsFlags :: Int -> FileSetContentsFlags

-- | A test to perform on a file using <a>fileTest</a>.
data FileTest

-- | <a>True</a> if the file is a regular file (not a directory). Note that
--   this test will also return <a>True</a> if the tested file is a symlink
--   to a regular file.
FileTestIsRegular :: FileTest

-- | <a>True</a> if the file is a symlink.
FileTestIsSymlink :: FileTest

-- | <a>True</a> if the file is a directory.
FileTestIsDir :: FileTest

-- | <a>True</a> if the file is executable.
FileTestIsExecutable :: FileTest

-- | <a>True</a> if the file exists. It may or may not be a regular file.
FileTestExists :: FileTest

-- | Catch-all for unknown values
AnotherFileTest :: Int -> FileTest

-- | Flags to modify the format of the string returned by
--   <a>formatSizeFull</a>.
data FormatSizeFlags

-- | behave the same as <a>formatSize</a>
FormatSizeFlagsDefault :: FormatSizeFlags

-- | include the exact number of bytes as part of the returned string. For
--   example, "45.6 kB (45,612 bytes)".
FormatSizeFlagsLongFormat :: FormatSizeFlags

-- | use IEC (base 1024) units with "KiB"-style suffixes. IEC units should
--   only be used for reporting things with a strong "power of 2" basis,
--   like RAM sizes or RAID stripe sizes. Network and storage sizes should
--   be reported in the normal SI units.
FormatSizeFlagsIecUnits :: FormatSizeFlags

-- | set the size as a quantity in bits, rather than bytes, and return
--   units in bits. For example, ‘Mb’ rather than ‘MB’.
FormatSizeFlagsBits :: FormatSizeFlags

-- | return only value, without unit; this should not be used together with
--   <i><tt>gFORMATSIZELONGFORMAT</tt></i> nor
--   <i><tt>gFORMATSIZEONLYUNIT</tt></i>. Since: 2.74
FormatSizeFlagsOnlyValue :: FormatSizeFlags

-- | return only unit, without value; this should not be used together with
--   <i><tt>gFORMATSIZELONGFORMAT</tt></i> nor
--   <i><tt>gFORMATSIZEONLYVALUE</tt></i>. Since: 2.74
FormatSizeFlagsOnlyUnit :: FormatSizeFlags

-- | Catch-all for unknown values
AnotherFormatSizeFlags :: Int -> FormatSizeFlags

-- | Flags used internally in the <a>Hook</a> implementation.
data HookFlagMask

-- | set if the hook has not been destroyed
HookFlagMaskActive :: HookFlagMask

-- | set if the hook is currently being run
HookFlagMaskInCall :: HookFlagMask

-- | A mask covering all bits reserved for hook flags; see
--   <a>HOOK_FLAG_USER_SHIFT</a>
HookFlagMaskMask :: HookFlagMask

-- | Catch-all for unknown values
AnotherHookFlagMask :: Int -> HookFlagMask

-- | A bitwise combination representing a condition to watch for on an
--   event source.
data IOCondition

-- | There is data to read.
IOConditionIn :: IOCondition

-- | Data can be written (without blocking).
IOConditionOut :: IOCondition

-- | There is urgent data to read.
IOConditionPri :: IOCondition

-- | Error condition.
IOConditionErr :: IOCondition

-- | Hung up (the connection has been broken, usually for pipes and
--   sockets).
IOConditionHup :: IOCondition

-- | Invalid request. The file descriptor is not open.
IOConditionNval :: IOCondition

-- | Catch-all for unknown values
AnotherIOCondition :: Int -> IOCondition

-- | Specifies properties of a <a>IOChannel</a>. Some of the flags can only
--   be read with <a>iOChannelGetFlags</a>, but n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   