diff --git a/.gitignore b/.gitignore
index 7148cca..c2739e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,6 @@
 
 # autofoo stuff here
 compile
-config.*
 configure
 depcomp
 aclocal.m4
@@ -24,5 +23,4 @@
 install-sh
 glib-gettextize
 glib-zip
-glibconfig.h
 gtk-doc.make
diff --git a/glib/.gitignore b/glib/.gitignore
index 2217a11..829cb1c 100644
--- a/glib/.gitignore
+++ b/glib/.gitignore
@@ -1,3 +1 @@
-galias.h
-galiasdef.c
 gtester
diff --git a/glib/config.h b/glib/config.h
new file mode 100644
index 0000000..d05f6a5
--- /dev/null
+++ b/glib/config.h
@@ -0,0 +1,658 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* define if asm blocks can use numeric local labels */
+/* #undef ASM_NUMERIC_LABELS */
+
+/* poll doesn't work on devices */
+/* #undef BROKEN_POLL */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define to 1 if using `alloca.c'. */
+/* #undef C_ALLOCA */
+
+/* Whether to disable memory pools */
+/* #undef DISABLE_MEM_POOLS */
+
+/* Whether to enable GC friendliness by default */
+/* #undef ENABLE_GC_FRIENDLY_DEFAULT */
+
+/* always defined to indicate that i18n is enabled */
+#define ENABLE_NLS 1
+
+/* include GRegex */
+#define ENABLE_REGEX /**/
+
+/* Define the gettext package to be used */
+#define GETTEXT_PACKAGE "glib20"
+
+/* Define to the GLIB binary age */
+#define GLIB_BINARY_AGE 2000
+
+/* Byte contents of gmutex */
+#define GLIB_BYTE_CONTENTS_GMUTEX 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+
+/* Define to the GLIB interface age */
+#define GLIB_INTERFACE_AGE 0
+
+/* Define the location where the catalogs will be installed */
+#define GLIB_LOCALE_DIR "/usr/local/share/locale"
+
+/* Define to the GLIB major version */
+#define GLIB_MAJOR_VERSION 2
+
+/* Define to the GLIB micro version */
+#define GLIB_MICRO_VERSION 0
+
+/* Define to the GLIB minor version */
+#define GLIB_MINOR_VERSION 20
+
+/* The size of gmutex, as computed by sizeof. */
+#define GLIB_SIZEOF_GMUTEX 40
+
+/* The size of system_thread, as computed by sizeof. */
+#define GLIB_SIZEOF_SYSTEM_THREAD 8
+
+/* alpha atomic implementation */
+/* #undef G_ATOMIC_ALPHA */
+
+/* arm atomic implementation */
+/* #undef G_ATOMIC_ARM */
+
+/* cris atomic implementation */
+/* #undef G_ATOMIC_CRIS */
+
+/* crisv32 atomic implementation */
+/* #undef G_ATOMIC_CRISV32 */
+
+/* i486 atomic implementation */
+/* #undef G_ATOMIC_I486 */
+
+/* ia64 atomic implementation */
+/* #undef G_ATOMIC_IA64 */
+
+/* powerpc atomic implementation */
+/* #undef G_ATOMIC_POWERPC */
+
+/* s390 atomic implementation */
+/* #undef G_ATOMIC_S390 */
+
+/* sparcv9 atomic implementation */
+/* #undef G_ATOMIC_SPARCV9 */
+
+/* x86_64 atomic implementation */
+/* #undef G_ATOMIC_X86_64 */
+
+/* Have inline keyword */
+#define G_HAVE_INLINE 1
+
+/* Have __inline keyword */
+#define G_HAVE___INLINE 1
+
+/* Have __inline__ keyword */
+#define G_HAVE___INLINE__ 1
+
+/* Source file containing theread implementation */
+#define G_THREAD_SOURCE "gthread-posix.c"
+
+/* A 'va_copy' style function */
+#define G_VA_COPY va_copy
+
+/* 'va_lists' cannot be copies as values */
+#define G_VA_COPY_AS_ARRAY 1
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the `atexit' function. */
+#define HAVE_ATEXIT 1
+
+/* Define to 1 if you have the <attr/xattr.h> header file. */
+/* #undef HAVE_ATTR_XATTR_H */
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+
+/* Define if you have a version of the snprintf function with semantics as
+   specified by the ISO C99 standard. */
+#define HAVE_C99_SNPRINTF 1
+
+/* Define if you have a version of the vsnprintf function with semantics as
+   specified by the ISO C99 standard. */
+#define HAVE_C99_VSNPRINTF 1
+
+/* define to 1 if Carbon is available */
+/* #undef HAVE_CARBON */
+
+/* Define to 1 if you have the `chown' function. */
+#define HAVE_CHOWN 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Have nl_langinfo (CODESET) */
+#define HAVE_CODESET 1
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+/* #undef HAVE_CRT_EXTERNS_H */
+
+/* Define to 1 if you have the `dcgettext' function. */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+/* #undef HAVE_DOPRNT */
+
+/* define for working do while(0) macros */
+#define HAVE_DOWHILE_MACROS 1
+
+/* Define to 1 if you have the `endmntent' function. */
+#define HAVE_ENDMNTENT 1
+
+/* Define if we have FAM */
+/* #undef HAVE_FAM */
+
+/* Define to 1 if you have the <fam.h> header file. */
+/* #undef HAVE_FAM_H */
+
+/* Define if we have FAMNoExists in fam */
+/* #undef HAVE_FAM_NO_EXISTS */
+
+/* Define to 1 if you have the `fchmod' function. */
+#define HAVE_FCHMOD 1
+
+/* Define to 1 if you have the `fchown' function. */
+#define HAVE_FCHOWN 1
+
+/* Define to 1 if you have the `fdwalk' function. */
+/* #undef HAVE_FDWALK */
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the <fstab.h> header file. */
+#define HAVE_FSTAB_H 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#define HAVE_GETC_UNLOCKED 1
+
+/* Define to 1 if you have the `getgrgid' function. */
+#define HAVE_GETGRGID 1
+
+/* Define to 1 if you have the `getmntent_r' function. */
+#define HAVE_GETMNTENT_R 1
+
+/* Define to 1 if you have the `getmntinfo' function. */
+/* #undef HAVE_GETMNTINFO */
+
+/* Define to 1 if you have the `getpwuid' function. */
+#define HAVE_GETPWUID 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* define to use system printf */
+#define HAVE_GOOD_PRINTF 1
+
+/* Define to 1 if you have the <grp.h> header file. */
+#define HAVE_GRP_H 1
+
+/* Define to 1 if you have the `hasmntopt' function. */
+#define HAVE_HASMNTOPT 1
+
+/* define to support printing 64-bit integers with format I64 */
+/* #undef HAVE_INT64_AND_I64 */
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+   declares uintmax_t. */
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#define HAVE_LANGINFO_CODESET 1
+
+/* Define to 1 if you have the `lchown' function. */
+#define HAVE_LCHOWN 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `link' function. */
+#define HAVE_LINK 1
+
+/* Define to 1 if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
+/* Define if you have the 'long double' type. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define if you have the 'long long' type. */
+#define HAVE_LONG_LONG 1
+
+/* define if system printf can print long long */
+#define HAVE_LONG_LONG_FORMAT 1
+
+/* Define to 1 if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the `memalign' function. */
+#define HAVE_MEMALIGN 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#define HAVE_MNTENT_H 1
+
+/* Have a monotonic clock */
+#define HAVE_MONOTONIC_CLOCK 1
+
+/* Define to 1 if you have the `nanosleep' function. */
+#define HAVE_NANOSLEEP 1
+
+/* Have non-POSIX function getgrgid_r */
+/* #undef HAVE_NONPOSIX_GETGRGID_R */
+
+/* Have non-POSIX function getpwuid_r */
+/* #undef HAVE_NONPOSIX_GETPWUID_R */
+
+/* Define to 1 if you have the `nsleep' function. */
+/* #undef HAVE_NSLEEP */
+
+/* Define to 1 if you have the `on_exit' function. */
+#define HAVE_ON_EXIT 1
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Have POSIX function getgrgid_r */
+#define HAVE_POSIX_GETGRGID_R 1
+
+/* Have function pthread_attr_setstacksize */
+#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#define HAVE_PWD_H 1
+
+/* Define to 1 if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define to 1 if you have the <sched.h> header file. */
+#define HAVE_SCHED_H 1
+
+/* Define to 1 if libselinux is available */
+/* #undef HAVE_SELINUX */
+
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
+/* #undef HAVE_SELINUX_SELINUX_H */
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the `setmntent' function. */
+#define HAVE_SETMNTENT 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `statfs' function. */
+#define HAVE_STATFS 1
+
+/* Define to 1 if you have the `statvfs' function. */
+#define HAVE_STATVFS 1
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+   uintmax_t. */
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Have functions strlcpy and strlcat */
+/* #undef HAVE_STRLCPY */
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the `strsignal' function. */
+#define HAVE_STRSIGNAL 1
+
+/* Define to 1 if `f_bavail' is member of `struct statfs'. */
+#define HAVE_STRUCT_STATFS_F_BAVAIL 1
+
+/* Define to 1 if `f_fstypename' is member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */
+
+/* Define to 1 if `f_basetype' is member of `struct statvfs'. */
+/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */
+
+/* Define to 1 if `st_atimensec' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_ATIMENSEC */
+
+/* Define to 1 if `st_atim.tv_nsec' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define to 1 if `st_blocks' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if `st_ctimensec' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_CTIMENSEC */
+
+/* Define to 1 if `st_ctim.tv_nsec' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC 1
+
+/* Define to 1 if `st_mtimensec' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_MTIMENSEC */
+
+/* Define to 1 if `st_mtim.tv_nsec' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+
+/* Define to 1 if you have the `symlink' function. */
+#define HAVE_SYMLINK 1
+
+/* Define to 1 if you have the <sys/inotify.h> header file. */
+#define HAVE_SYS_INOTIFY_H 1
+
+/* Define to 1 if you have the <sys/mntctl.h> header file. */
+/* #undef HAVE_SYS_MNTCTL_H */
+
+/* Define to 1 if you have the <sys/mnttab.h> header file. */
+/* #undef HAVE_SYS_MNTTAB_H */
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#define HAVE_SYS_POLL_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* found fd_set in sys/select.h */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#define HAVE_SYS_STATFS_H 1
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+#define HAVE_SYS_SYSCTL_H 1
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/vfstab.h> header file. */
+/* #undef HAVE_SYS_VFSTAB_H */
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#define HAVE_SYS_VFS_H 1
+
+/* Define to 1 if you have the <sys/vmount.h> header file. */
+/* #undef HAVE_SYS_VMOUNT_H */
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+#define HAVE_SYS_XATTR_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if your printf function family supports positional parameters as
+   specified by Unix98. */
+#define HAVE_UNIX98_PRINTF 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Define to 1 if you have the `utimes' function. */
+#define HAVE_UTIMES 1
+
+/* Define to 1 if you have the `valloc' function. */
+#define HAVE_VALLOC 1
+
+/* Define to 1 if you have the <values.h> header file. */
+#define HAVE_VALUES_H 1
+
+/* Define to 1 if you have the `vasprintf' function. */
+#define HAVE_VASPRINTF 1
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define if you have the 'wint_t' type. */
+#define HAVE_WINT_T 1
+
+/* Have a working bcopy */
+/* #undef HAVE_WORKING_BCOPY */
+
+/* Define to 1 if xattr is available */
+#define HAVE_XATTR 1
+
+/* Define to 1 if xattr API uses XATTR_NOFOLLOW */
+/* #undef HAVE_XATTR_NOFOLLOW */
+
+/* Define to 1 if you have the `_NSGetEnviron' function. */
+/* #undef HAVE__NSGETENVIRON */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Do we cache iconv descriptors */
+/* #undef NEED_ICONV_CACHE */
+
+/* didn't find fd_set */
+/* #undef NO_FD_SET */
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* global 'sys_errlist' not found */
+/* #undef NO_SYS_ERRLIST */
+
+/* global 'sys_siglist' not found */
+/* #undef NO_SYS_SIGLIST */
+
+/* global 'sys_siglist' not declared */
+/* #undef NO_SYS_SIGLIST_DECL */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=glib"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "glib"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "glib 2.20.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "glib"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.20.0"
+
+/* Maximum POSIX RT priority */
+#define POSIX_MAX_PRIORITY sched_get_priority_max(SCHED_OTHER)
+
+/* define if posix_memalign() can allocate any size */
+#define POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS 1
+
+/* Minimum POSIX RT priority */
+#define POSIX_MIN_PRIORITY sched_get_priority_min(SCHED_OTHER)
+
+/* The POSIX RT yield function */
+#define POSIX_YIELD_FUNC sched_yield()
+
+/* whether realloc (NULL,) works */
+#define REALLOC_0_WORKS 1
+
+/* Define if you have correct malloc prototypes */
+#define SANE_MALLOC_PROTOS 1
+
+/* The size of `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 8
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 8
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* The size of `__int64', as computed by sizeof. */
+#define SIZEOF___INT64 0
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+/* #undef STACK_DIRECTION */
+
+/* Number of arguments to statfs() */
+#define STATFS_ARGS 2
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Using GNU libiconv */
+/* #undef USE_LIBICONV_GNU */
+
+/* Using a native implementation of iconv in a separate library */
+/* #undef USE_LIBICONV_NATIVE */
+
+/* using the system-supplied PCRE library */
+/* #undef USE_SYSTEM_PCRE */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+/* #undef intmax_t */
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+/* #undef signed */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/glib/galias.h b/glib/galias.h
new file mode 100644
index 0000000..9131fa6
--- /dev/null
+++ b/glib/galias.h
@@ -0,0 +1,3886 @@
+/* Generated by makegalias.pl */
+
+#ifndef DISABLE_VISIBILITY
+
+#include "glibconfig.h"
+
+#ifdef G_HAVE_GNUC_VISIBILITY
+
+#define IN_FILE(x) 1
+#define IN_HEADER defined
+
+#if IN_HEADER(__G_ARRAY_H__)
+#if IN_FILE(__G_ARRAY_C__)
+extern __typeof (g_array_append_vals) IA__g_array_append_vals __attribute((visibility("hidden")));
+#define g_array_append_vals IA__g_array_append_vals
+
+extern __typeof (g_array_free) IA__g_array_free __attribute((visibility("hidden")));
+#define g_array_free IA__g_array_free
+
+extern __typeof (g_array_insert_vals) IA__g_array_insert_vals __attribute((visibility("hidden")));
+#define g_array_insert_vals IA__g_array_insert_vals
+
+extern __typeof (g_array_new) IA__g_array_new __attribute((visibility("hidden")));
+#define g_array_new IA__g_array_new
+
+extern __typeof (g_array_prepend_vals) IA__g_array_prepend_vals __attribute((visibility("hidden")));
+#define g_array_prepend_vals IA__g_array_prepend_vals
+
+extern __typeof (g_array_remove_index) IA__g_array_remove_index __attribute((visibility("hidden")));
+#define g_array_remove_index IA__g_array_remove_index
+
+extern __typeof (g_array_remove_index_fast) IA__g_array_remove_index_fast __attribute((visibility("hidden")));
+#define g_array_remove_index_fast IA__g_array_remove_index_fast
+
+extern __typeof (g_array_remove_range) IA__g_array_remove_range __attribute((visibility("hidden")));
+#define g_array_remove_range IA__g_array_remove_range
+
+extern __typeof (g_array_set_size) IA__g_array_set_size __attribute((visibility("hidden")));
+#define g_array_set_size IA__g_array_set_size
+
+extern __typeof (g_array_sized_new) IA__g_array_sized_new __attribute((visibility("hidden")));
+#define g_array_sized_new IA__g_array_sized_new
+
+extern __typeof (g_array_sort) IA__g_array_sort __attribute((visibility("hidden")));
+#define g_array_sort IA__g_array_sort
+
+extern __typeof (g_array_sort_with_data) IA__g_array_sort_with_data __attribute((visibility("hidden")));
+#define g_array_sort_with_data IA__g_array_sort_with_data
+
+extern __typeof (g_byte_array_append) IA__g_byte_array_append __attribute((visibility("hidden")));
+#define g_byte_array_append IA__g_byte_array_append
+
+extern __typeof (g_byte_array_free) IA__g_byte_array_free __attribute((visibility("hidden")));
+#define g_byte_array_free IA__g_byte_array_free
+
+extern __typeof (g_byte_array_new) IA__g_byte_array_new __attribute((visibility("hidden")));
+#define g_byte_array_new IA__g_byte_array_new
+
+extern __typeof (g_byte_array_prepend) IA__g_byte_array_prepend __attribute((visibility("hidden")));
+#define g_byte_array_prepend IA__g_byte_array_prepend
+
+extern __typeof (g_byte_array_remove_index) IA__g_byte_array_remove_index __attribute((visibility("hidden")));
+#define g_byte_array_remove_index IA__g_byte_array_remove_index
+
+extern __typeof (g_byte_array_remove_index_fast) IA__g_byte_array_remove_index_fast __attribute((visibility("hidden")));
+#define g_byte_array_remove_index_fast IA__g_byte_array_remove_index_fast
+
+extern __typeof (g_byte_array_remove_range) IA__g_byte_array_remove_range __attribute((visibility("hidden")));
+#define g_byte_array_remove_range IA__g_byte_array_remove_range
+
+extern __typeof (g_byte_array_set_size) IA__g_byte_array_set_size __attribute((visibility("hidden")));
+#define g_byte_array_set_size IA__g_byte_array_set_size
+
+extern __typeof (g_byte_array_sized_new) IA__g_byte_array_sized_new __attribute((visibility("hidden")));
+#define g_byte_array_sized_new IA__g_byte_array_sized_new
+
+extern __typeof (g_byte_array_sort) IA__g_byte_array_sort __attribute((visibility("hidden")));
+#define g_byte_array_sort IA__g_byte_array_sort
+
+extern __typeof (g_byte_array_sort_with_data) IA__g_byte_array_sort_with_data __attribute((visibility("hidden")));
+#define g_byte_array_sort_with_data IA__g_byte_array_sort_with_data
+
+extern __typeof (g_ptr_array_add) IA__g_ptr_array_add __attribute((visibility("hidden")));
+#define g_ptr_array_add IA__g_ptr_array_add
+
+extern __typeof (g_ptr_array_foreach) IA__g_ptr_array_foreach __attribute((visibility("hidden")));
+#define g_ptr_array_foreach IA__g_ptr_array_foreach
+
+extern __typeof (g_ptr_array_free) IA__g_ptr_array_free __attribute((visibility("hidden")));
+#define g_ptr_array_free IA__g_ptr_array_free
+
+extern __typeof (g_ptr_array_new) IA__g_ptr_array_new __attribute((visibility("hidden")));
+#define g_ptr_array_new IA__g_ptr_array_new
+
+extern __typeof (g_ptr_array_remove) IA__g_ptr_array_remove __attribute((visibility("hidden")));
+#define g_ptr_array_remove IA__g_ptr_array_remove
+
+extern __typeof (g_ptr_array_remove_fast) IA__g_ptr_array_remove_fast __attribute((visibility("hidden")));
+#define g_ptr_array_remove_fast IA__g_ptr_array_remove_fast
+
+extern __typeof (g_ptr_array_remove_index) IA__g_ptr_array_remove_index __attribute((visibility("hidden")));
+#define g_ptr_array_remove_index IA__g_ptr_array_remove_index
+
+extern __typeof (g_ptr_array_remove_index_fast) IA__g_ptr_array_remove_index_fast __attribute((visibility("hidden")));
+#define g_ptr_array_remove_index_fast IA__g_ptr_array_remove_index_fast
+
+extern __typeof (g_ptr_array_remove_range) IA__g_ptr_array_remove_range __attribute((visibility("hidden")));
+#define g_ptr_array_remove_range IA__g_ptr_array_remove_range
+
+extern __typeof (g_ptr_array_set_size) IA__g_ptr_array_set_size __attribute((visibility("hidden")));
+#define g_ptr_array_set_size IA__g_ptr_array_set_size
+
+extern __typeof (g_ptr_array_sized_new) IA__g_ptr_array_sized_new __attribute((visibility("hidden")));
+#define g_ptr_array_sized_new IA__g_ptr_array_sized_new
+
+extern __typeof (g_ptr_array_sort) IA__g_ptr_array_sort __attribute((visibility("hidden")));
+#define g_ptr_array_sort IA__g_ptr_array_sort
+
+extern __typeof (g_ptr_array_sort_with_data) IA__g_ptr_array_sort_with_data __attribute((visibility("hidden")));
+#define g_ptr_array_sort_with_data IA__g_ptr_array_sort_with_data
+
+#endif
+#endif
+#if IN_HEADER(__G_ASYNCQUEUE_H__)
+#if IN_FILE(__G_ASYNCQUEUE_C__)
+extern __typeof (g_async_queue_length) IA__g_async_queue_length __attribute((visibility("hidden")));
+#define g_async_queue_length IA__g_async_queue_length
+
+extern __typeof (g_async_queue_length_unlocked) IA__g_async_queue_length_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_length_unlocked IA__g_async_queue_length_unlocked
+
+extern __typeof (g_async_queue_lock) IA__g_async_queue_lock __attribute((visibility("hidden")));
+#define g_async_queue_lock IA__g_async_queue_lock
+
+extern __typeof (g_async_queue_new) IA__g_async_queue_new __attribute((visibility("hidden")));
+#define g_async_queue_new IA__g_async_queue_new
+
+extern __typeof (g_async_queue_new_full) IA__g_async_queue_new_full __attribute((visibility("hidden")));
+#define g_async_queue_new_full IA__g_async_queue_new_full
+
+extern __typeof (g_async_queue_pop) IA__g_async_queue_pop __attribute((visibility("hidden")));
+#define g_async_queue_pop IA__g_async_queue_pop
+
+extern __typeof (g_async_queue_pop_unlocked) IA__g_async_queue_pop_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_pop_unlocked IA__g_async_queue_pop_unlocked
+
+extern __typeof (g_async_queue_push) IA__g_async_queue_push __attribute((visibility("hidden")));
+#define g_async_queue_push IA__g_async_queue_push
+
+extern __typeof (g_async_queue_push_unlocked) IA__g_async_queue_push_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_push_unlocked IA__g_async_queue_push_unlocked
+
+extern __typeof (g_async_queue_push_sorted) IA__g_async_queue_push_sorted __attribute((visibility("hidden")));
+#define g_async_queue_push_sorted IA__g_async_queue_push_sorted
+
+extern __typeof (g_async_queue_push_sorted_unlocked) IA__g_async_queue_push_sorted_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_push_sorted_unlocked IA__g_async_queue_push_sorted_unlocked
+
+extern __typeof (g_async_queue_ref) IA__g_async_queue_ref __attribute((visibility("hidden")));
+#define g_async_queue_ref IA__g_async_queue_ref
+
+extern __typeof (g_async_queue_sort) IA__g_async_queue_sort __attribute((visibility("hidden")));
+#define g_async_queue_sort IA__g_async_queue_sort
+
+extern __typeof (g_async_queue_sort_unlocked) IA__g_async_queue_sort_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_sort_unlocked IA__g_async_queue_sort_unlocked
+
+extern __typeof (g_async_queue_timed_pop) IA__g_async_queue_timed_pop __attribute((visibility("hidden")));
+#define g_async_queue_timed_pop IA__g_async_queue_timed_pop
+
+extern __typeof (g_async_queue_timed_pop_unlocked) IA__g_async_queue_timed_pop_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_timed_pop_unlocked IA__g_async_queue_timed_pop_unlocked
+
+extern __typeof (g_async_queue_try_pop) IA__g_async_queue_try_pop __attribute((visibility("hidden")));
+#define g_async_queue_try_pop IA__g_async_queue_try_pop
+
+extern __typeof (g_async_queue_try_pop_unlocked) IA__g_async_queue_try_pop_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_try_pop_unlocked IA__g_async_queue_try_pop_unlocked
+
+extern __typeof (g_async_queue_unlock) IA__g_async_queue_unlock __attribute((visibility("hidden")));
+#define g_async_queue_unlock IA__g_async_queue_unlock
+
+extern __typeof (g_async_queue_unref) IA__g_async_queue_unref __attribute((visibility("hidden")));
+#define g_async_queue_unref IA__g_async_queue_unref
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_async_queue_ref_unlocked) IA__g_async_queue_ref_unlocked __attribute((visibility("hidden")));
+#define g_async_queue_ref_unlocked IA__g_async_queue_ref_unlocked
+
+extern __typeof (g_async_queue_unref_and_unlock) IA__g_async_queue_unref_and_unlock __attribute((visibility("hidden")));
+#define g_async_queue_unref_and_unlock IA__g_async_queue_unref_and_unlock
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_ATOMIC_H__)
+#if IN_FILE(__G_ATOMIC_C__)
+extern __typeof (g_atomic_int_add) IA__g_atomic_int_add __attribute((visibility("hidden")));
+#define g_atomic_int_add IA__g_atomic_int_add
+
+extern __typeof (g_atomic_int_compare_and_exchange) IA__g_atomic_int_compare_and_exchange __attribute((visibility("hidden")));
+#define g_atomic_int_compare_and_exchange IA__g_atomic_int_compare_and_exchange
+
+extern __typeof (g_atomic_int_exchange_and_add) IA__g_atomic_int_exchange_and_add __attribute((visibility("hidden")));
+#define g_atomic_int_exchange_and_add IA__g_atomic_int_exchange_and_add
+
+extern __typeof (g_atomic_pointer_compare_and_exchange) IA__g_atomic_pointer_compare_and_exchange __attribute((visibility("hidden")));
+#define g_atomic_pointer_compare_and_exchange IA__g_atomic_pointer_compare_and_exchange
+
+#endif
+#endif
+#if IN_HEADER(__G_BACKTRACE_H__)
+#if IN_FILE(__G_BACKTRACE_C__)
+extern __typeof (g_on_error_query) IA__g_on_error_query __attribute((visibility("hidden")));
+#define g_on_error_query IA__g_on_error_query
+
+extern __typeof (g_on_error_stack_trace) IA__g_on_error_stack_trace __attribute((visibility("hidden")));
+#define g_on_error_stack_trace IA__g_on_error_stack_trace
+
+#endif
+#endif
+#if IN_HEADER(__G_BASE64_H__)
+#if IN_FILE(__G_BASE64_C__)
+extern __typeof (g_base64_encode_step) IA__g_base64_encode_step __attribute((visibility("hidden")));
+#define g_base64_encode_step IA__g_base64_encode_step
+
+extern __typeof (g_base64_encode_close) IA__g_base64_encode_close __attribute((visibility("hidden")));
+#define g_base64_encode_close IA__g_base64_encode_close
+
+extern __typeof (g_base64_encode) IA__g_base64_encode __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_base64_encode IA__g_base64_encode
+
+extern __typeof (g_base64_decode_step) IA__g_base64_decode_step __attribute((visibility("hidden")));
+#define g_base64_decode_step IA__g_base64_decode_step
+
+extern __typeof (g_base64_decode) IA__g_base64_decode __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_base64_decode IA__g_base64_decode
+
+extern __typeof (g_base64_decode_inplace) IA__g_base64_decode_inplace __attribute((visibility("hidden")));
+#define g_base64_decode_inplace IA__g_base64_decode_inplace
+
+#endif
+#endif
+#if IN_HEADER(__G_BOOKMARK_FILE_H__)
+#if IN_FILE(__G_BOOKMARK_FILE_C__)
+extern __typeof (g_bookmark_file_error_quark) IA__g_bookmark_file_error_quark __attribute((visibility("hidden")));
+#define g_bookmark_file_error_quark IA__g_bookmark_file_error_quark
+
+extern __typeof (g_bookmark_file_new) IA__g_bookmark_file_new __attribute((visibility("hidden")));
+#define g_bookmark_file_new IA__g_bookmark_file_new
+
+extern __typeof (g_bookmark_file_free) IA__g_bookmark_file_free __attribute((visibility("hidden")));
+#define g_bookmark_file_free IA__g_bookmark_file_free
+
+extern __typeof (g_bookmark_file_load_from_file) IA__g_bookmark_file_load_from_file __attribute((visibility("hidden")));
+#define g_bookmark_file_load_from_file IA__g_bookmark_file_load_from_file
+
+extern __typeof (g_bookmark_file_load_from_data) IA__g_bookmark_file_load_from_data __attribute((visibility("hidden")));
+#define g_bookmark_file_load_from_data IA__g_bookmark_file_load_from_data
+
+extern __typeof (g_bookmark_file_load_from_data_dirs) IA__g_bookmark_file_load_from_data_dirs __attribute((visibility("hidden")));
+#define g_bookmark_file_load_from_data_dirs IA__g_bookmark_file_load_from_data_dirs
+
+extern __typeof (g_bookmark_file_to_data) IA__g_bookmark_file_to_data __attribute((visibility("hidden")));
+#define g_bookmark_file_to_data IA__g_bookmark_file_to_data
+
+extern __typeof (g_bookmark_file_to_file) IA__g_bookmark_file_to_file __attribute((visibility("hidden")));
+#define g_bookmark_file_to_file IA__g_bookmark_file_to_file
+
+extern __typeof (g_bookmark_file_set_title) IA__g_bookmark_file_set_title __attribute((visibility("hidden")));
+#define g_bookmark_file_set_title IA__g_bookmark_file_set_title
+
+extern __typeof (g_bookmark_file_get_title) IA__g_bookmark_file_get_title __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_title IA__g_bookmark_file_get_title
+
+extern __typeof (g_bookmark_file_set_description) IA__g_bookmark_file_set_description __attribute((visibility("hidden")));
+#define g_bookmark_file_set_description IA__g_bookmark_file_set_description
+
+extern __typeof (g_bookmark_file_get_description) IA__g_bookmark_file_get_description __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_description IA__g_bookmark_file_get_description
+
+extern __typeof (g_bookmark_file_set_mime_type) IA__g_bookmark_file_set_mime_type __attribute((visibility("hidden")));
+#define g_bookmark_file_set_mime_type IA__g_bookmark_file_set_mime_type
+
+extern __typeof (g_bookmark_file_get_mime_type) IA__g_bookmark_file_get_mime_type __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_mime_type IA__g_bookmark_file_get_mime_type
+
+extern __typeof (g_bookmark_file_set_groups) IA__g_bookmark_file_set_groups __attribute((visibility("hidden")));
+#define g_bookmark_file_set_groups IA__g_bookmark_file_set_groups
+
+extern __typeof (g_bookmark_file_add_group) IA__g_bookmark_file_add_group __attribute((visibility("hidden")));
+#define g_bookmark_file_add_group IA__g_bookmark_file_add_group
+
+extern __typeof (g_bookmark_file_has_group) IA__g_bookmark_file_has_group __attribute((visibility("hidden")));
+#define g_bookmark_file_has_group IA__g_bookmark_file_has_group
+
+extern __typeof (g_bookmark_file_get_groups) IA__g_bookmark_file_get_groups __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_groups IA__g_bookmark_file_get_groups
+
+extern __typeof (g_bookmark_file_add_application) IA__g_bookmark_file_add_application __attribute((visibility("hidden")));
+#define g_bookmark_file_add_application IA__g_bookmark_file_add_application
+
+extern __typeof (g_bookmark_file_has_application) IA__g_bookmark_file_has_application __attribute((visibility("hidden")));
+#define g_bookmark_file_has_application IA__g_bookmark_file_has_application
+
+extern __typeof (g_bookmark_file_get_applications) IA__g_bookmark_file_get_applications __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_applications IA__g_bookmark_file_get_applications
+
+extern __typeof (g_bookmark_file_set_app_info) IA__g_bookmark_file_set_app_info __attribute((visibility("hidden")));
+#define g_bookmark_file_set_app_info IA__g_bookmark_file_set_app_info
+
+extern __typeof (g_bookmark_file_get_app_info) IA__g_bookmark_file_get_app_info __attribute((visibility("hidden")));
+#define g_bookmark_file_get_app_info IA__g_bookmark_file_get_app_info
+
+extern __typeof (g_bookmark_file_set_is_private) IA__g_bookmark_file_set_is_private __attribute((visibility("hidden")));
+#define g_bookmark_file_set_is_private IA__g_bookmark_file_set_is_private
+
+extern __typeof (g_bookmark_file_get_is_private) IA__g_bookmark_file_get_is_private __attribute((visibility("hidden")));
+#define g_bookmark_file_get_is_private IA__g_bookmark_file_get_is_private
+
+extern __typeof (g_bookmark_file_set_icon) IA__g_bookmark_file_set_icon __attribute((visibility("hidden")));
+#define g_bookmark_file_set_icon IA__g_bookmark_file_set_icon
+
+extern __typeof (g_bookmark_file_get_icon) IA__g_bookmark_file_get_icon __attribute((visibility("hidden")));
+#define g_bookmark_file_get_icon IA__g_bookmark_file_get_icon
+
+extern __typeof (g_bookmark_file_set_added) IA__g_bookmark_file_set_added __attribute((visibility("hidden")));
+#define g_bookmark_file_set_added IA__g_bookmark_file_set_added
+
+extern __typeof (g_bookmark_file_get_added) IA__g_bookmark_file_get_added __attribute((visibility("hidden")));
+#define g_bookmark_file_get_added IA__g_bookmark_file_get_added
+
+extern __typeof (g_bookmark_file_set_modified) IA__g_bookmark_file_set_modified __attribute((visibility("hidden")));
+#define g_bookmark_file_set_modified IA__g_bookmark_file_set_modified
+
+extern __typeof (g_bookmark_file_get_modified) IA__g_bookmark_file_get_modified __attribute((visibility("hidden")));
+#define g_bookmark_file_get_modified IA__g_bookmark_file_get_modified
+
+extern __typeof (g_bookmark_file_set_visited) IA__g_bookmark_file_set_visited __attribute((visibility("hidden")));
+#define g_bookmark_file_set_visited IA__g_bookmark_file_set_visited
+
+extern __typeof (g_bookmark_file_get_visited) IA__g_bookmark_file_get_visited __attribute((visibility("hidden")));
+#define g_bookmark_file_get_visited IA__g_bookmark_file_get_visited
+
+extern __typeof (g_bookmark_file_has_item) IA__g_bookmark_file_has_item __attribute((visibility("hidden")));
+#define g_bookmark_file_has_item IA__g_bookmark_file_has_item
+
+extern __typeof (g_bookmark_file_get_size) IA__g_bookmark_file_get_size __attribute((visibility("hidden")));
+#define g_bookmark_file_get_size IA__g_bookmark_file_get_size
+
+extern __typeof (g_bookmark_file_get_uris) IA__g_bookmark_file_get_uris __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_bookmark_file_get_uris IA__g_bookmark_file_get_uris
+
+extern __typeof (g_bookmark_file_remove_group) IA__g_bookmark_file_remove_group __attribute((visibility("hidden")));
+#define g_bookmark_file_remove_group IA__g_bookmark_file_remove_group
+
+extern __typeof (g_bookmark_file_remove_application) IA__g_bookmark_file_remove_application __attribute((visibility("hidden")));
+#define g_bookmark_file_remove_application IA__g_bookmark_file_remove_application
+
+extern __typeof (g_bookmark_file_remove_item) IA__g_bookmark_file_remove_item __attribute((visibility("hidden")));
+#define g_bookmark_file_remove_item IA__g_bookmark_file_remove_item
+
+extern __typeof (g_bookmark_file_move_item) IA__g_bookmark_file_move_item __attribute((visibility("hidden")));
+#define g_bookmark_file_move_item IA__g_bookmark_file_move_item
+
+#endif
+#endif
+#if IN_HEADER(__G_CACHE_H__)
+#if IN_FILE(__G_CACHE_C__)
+extern __typeof (g_cache_destroy) IA__g_cache_destroy __attribute((visibility("hidden")));
+#define g_cache_destroy IA__g_cache_destroy
+
+extern __typeof (g_cache_insert) IA__g_cache_insert __attribute((visibility("hidden")));
+#define g_cache_insert IA__g_cache_insert
+
+extern __typeof (g_cache_key_foreach) IA__g_cache_key_foreach __attribute((visibility("hidden")));
+#define g_cache_key_foreach IA__g_cache_key_foreach
+
+extern __typeof (g_cache_new) IA__g_cache_new __attribute((visibility("hidden")));
+#define g_cache_new IA__g_cache_new
+
+extern __typeof (g_cache_remove) IA__g_cache_remove __attribute((visibility("hidden")));
+#define g_cache_remove IA__g_cache_remove
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_cache_value_foreach) IA__g_cache_value_foreach __attribute((visibility("hidden")));
+#define g_cache_value_foreach IA__g_cache_value_foreach
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_CHECKSUM_H__)
+#if IN_FILE(__G_CHECKSUM_C__)
+extern __typeof (g_checksum_type_get_length) IA__g_checksum_type_get_length __attribute((visibility("hidden")));
+#define g_checksum_type_get_length IA__g_checksum_type_get_length
+
+extern __typeof (g_checksum_new) IA__g_checksum_new __attribute((visibility("hidden")));
+#define g_checksum_new IA__g_checksum_new
+
+extern __typeof (g_checksum_copy) IA__g_checksum_copy __attribute((visibility("hidden")));
+#define g_checksum_copy IA__g_checksum_copy
+
+extern __typeof (g_checksum_free) IA__g_checksum_free __attribute((visibility("hidden")));
+#define g_checksum_free IA__g_checksum_free
+
+extern __typeof (g_checksum_update) IA__g_checksum_update __attribute((visibility("hidden")));
+#define g_checksum_update IA__g_checksum_update
+
+extern __typeof (g_checksum_reset) IA__g_checksum_reset __attribute((visibility("hidden")));
+#define g_checksum_reset IA__g_checksum_reset
+
+extern __typeof (g_checksum_get_string) IA__g_checksum_get_string __attribute((visibility("hidden")));
+#define g_checksum_get_string IA__g_checksum_get_string
+
+extern __typeof (g_checksum_get_digest) IA__g_checksum_get_digest __attribute((visibility("hidden")));
+#define g_checksum_get_digest IA__g_checksum_get_digest
+
+extern __typeof (g_compute_checksum_for_data) IA__g_compute_checksum_for_data __attribute((visibility("hidden")));
+#define g_compute_checksum_for_data IA__g_compute_checksum_for_data
+
+extern __typeof (g_compute_checksum_for_string) IA__g_compute_checksum_for_string __attribute((visibility("hidden")));
+#define g_compute_checksum_for_string IA__g_compute_checksum_for_string
+
+#endif
+#endif
+#if IN_HEADER(__G_COMPLETION_H__)
+#if IN_FILE(__G_COMPLETION_C__)
+extern __typeof (g_completion_add_items) IA__g_completion_add_items __attribute((visibility("hidden")));
+#define g_completion_add_items IA__g_completion_add_items
+
+extern __typeof (g_completion_clear_items) IA__g_completion_clear_items __attribute((visibility("hidden")));
+#define g_completion_clear_items IA__g_completion_clear_items
+
+extern __typeof (g_completion_complete) IA__g_completion_complete __attribute((visibility("hidden")));
+#define g_completion_complete IA__g_completion_complete
+
+extern __typeof (g_completion_complete_utf8) IA__g_completion_complete_utf8 __attribute((visibility("hidden")));
+#define g_completion_complete_utf8 IA__g_completion_complete_utf8
+
+extern __typeof (g_completion_free) IA__g_completion_free __attribute((visibility("hidden")));
+#define g_completion_free IA__g_completion_free
+
+extern __typeof (g_completion_new) IA__g_completion_new __attribute((visibility("hidden")));
+#define g_completion_new IA__g_completion_new
+
+extern __typeof (g_completion_remove_items) IA__g_completion_remove_items __attribute((visibility("hidden")));
+#define g_completion_remove_items IA__g_completion_remove_items
+
+extern __typeof (g_completion_set_compare) IA__g_completion_set_compare __attribute((visibility("hidden")));
+#define g_completion_set_compare IA__g_completion_set_compare
+
+#endif
+#endif
+#if IN_HEADER(__G_CONVERT_H__)
+#if IN_FILE(__G_CONVERT_C__)
+extern __typeof (g_get_filename_charsets) IA__g_get_filename_charsets __attribute((visibility("hidden")));
+#define g_get_filename_charsets IA__g_get_filename_charsets
+
+extern __typeof (g_convert) IA__g_convert __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_convert IA__g_convert
+
+extern __typeof (g_convert_error_quark) IA__g_convert_error_quark __attribute((visibility("hidden")));
+#define g_convert_error_quark IA__g_convert_error_quark
+
+extern __typeof (g_convert_with_fallback) IA__g_convert_with_fallback __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_convert_with_fallback IA__g_convert_with_fallback
+
+extern __typeof (g_convert_with_iconv) IA__g_convert_with_iconv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_convert_with_iconv IA__g_convert_with_iconv
+
+extern __typeof (g_iconv) IA__g_iconv __attribute((visibility("hidden")));
+#define g_iconv IA__g_iconv
+
+extern __typeof (g_iconv_close) IA__g_iconv_close __attribute((visibility("hidden")));
+#define g_iconv_close IA__g_iconv_close
+
+extern __typeof (g_iconv_open) IA__g_iconv_open __attribute((visibility("hidden")));
+#define g_iconv_open IA__g_iconv_open
+
+extern __typeof (g_locale_from_utf8) IA__g_locale_from_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_locale_from_utf8 IA__g_locale_from_utf8
+
+extern __typeof (g_locale_to_utf8) IA__g_locale_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_locale_to_utf8 IA__g_locale_to_utf8
+
+extern __typeof (g_filename_display_name) IA__g_filename_display_name __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_display_name IA__g_filename_display_name
+
+extern __typeof (g_filename_display_basename) IA__g_filename_display_basename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_display_basename IA__g_filename_display_basename
+
+#ifndef _WIN64
+extern __typeof (g_filename_from_uri) IA__g_filename_from_uri __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_from_uri IA__g_filename_from_uri
+
+extern __typeof (g_filename_from_utf8) IA__g_filename_from_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_from_utf8 IA__g_filename_from_utf8
+
+extern __typeof (g_filename_to_uri) IA__g_filename_to_uri __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_to_uri IA__g_filename_to_uri
+
+extern __typeof (g_filename_to_utf8) IA__g_filename_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_to_utf8 IA__g_filename_to_utf8
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_filename_from_uri_utf8) IA__g_filename_from_uri_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_from_uri_utf8 IA__g_filename_from_uri_utf8
+
+extern __typeof (g_filename_from_utf8_utf8) IA__g_filename_from_utf8_utf8 __attribute((visibility("hidden")));
+#define g_filename_from_utf8_utf8 IA__g_filename_from_utf8_utf8
+
+extern __typeof (g_filename_to_uri_utf8) IA__g_filename_to_uri_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_filename_to_uri_utf8 IA__g_filename_to_uri_utf8
+
+extern __typeof (g_filename_to_utf8_utf8) IA__g_filename_to_utf8_utf8 __attribute((visibility("hidden")));
+#define g_filename_to_utf8_utf8 IA__g_filename_to_utf8_utf8
+
+#endif
+extern __typeof (g_uri_list_extract_uris) IA__g_uri_list_extract_uris __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_uri_list_extract_uris IA__g_uri_list_extract_uris
+
+#endif
+#endif
+#if IN_HEADER(__G_DATASET_H__)
+#if IN_FILE(__G_DATASET_C__)
+extern __typeof (g_datalist_clear) IA__g_datalist_clear __attribute((visibility("hidden")));
+#define g_datalist_clear IA__g_datalist_clear
+
+extern __typeof (g_datalist_foreach) IA__g_datalist_foreach __attribute((visibility("hidden")));
+#define g_datalist_foreach IA__g_datalist_foreach
+
+extern __typeof (g_datalist_get_flags) IA__g_datalist_get_flags __attribute((visibility("hidden")));
+#define g_datalist_get_flags IA__g_datalist_get_flags
+
+extern __typeof (g_datalist_id_get_data) IA__g_datalist_id_get_data __attribute((visibility("hidden")));
+#define g_datalist_id_get_data IA__g_datalist_id_get_data
+
+extern __typeof (g_datalist_id_remove_no_notify) IA__g_datalist_id_remove_no_notify __attribute((visibility("hidden")));
+#define g_datalist_id_remove_no_notify IA__g_datalist_id_remove_no_notify
+
+extern __typeof (g_datalist_id_set_data_full) IA__g_datalist_id_set_data_full __attribute((visibility("hidden")));
+#define g_datalist_id_set_data_full IA__g_datalist_id_set_data_full
+
+extern __typeof (g_datalist_set_flags) IA__g_datalist_set_flags __attribute((visibility("hidden")));
+#define g_datalist_set_flags IA__g_datalist_set_flags
+
+extern __typeof (g_datalist_unset_flags) IA__g_datalist_unset_flags __attribute((visibility("hidden")));
+#define g_datalist_unset_flags IA__g_datalist_unset_flags
+
+extern __typeof (g_datalist_init) IA__g_datalist_init __attribute((visibility("hidden")));
+#define g_datalist_init IA__g_datalist_init
+
+extern __typeof (g_dataset_destroy) IA__g_dataset_destroy __attribute((visibility("hidden")));
+#define g_dataset_destroy IA__g_dataset_destroy
+
+extern __typeof (g_dataset_foreach) IA__g_dataset_foreach __attribute((visibility("hidden")));
+#define g_dataset_foreach IA__g_dataset_foreach
+
+extern __typeof (g_dataset_id_get_data) IA__g_dataset_id_get_data __attribute((visibility("hidden")));
+#define g_dataset_id_get_data IA__g_dataset_id_get_data
+
+extern __typeof (g_dataset_id_remove_no_notify) IA__g_dataset_id_remove_no_notify __attribute((visibility("hidden")));
+#define g_dataset_id_remove_no_notify IA__g_dataset_id_remove_no_notify
+
+extern __typeof (g_dataset_id_set_data_full) IA__g_dataset_id_set_data_full __attribute((visibility("hidden")));
+#define g_dataset_id_set_data_full IA__g_dataset_id_set_data_full
+
+#endif
+#endif
+#if IN_HEADER(__G_QUARK_H__)
+#if IN_FILE(__G_DATASET_C__)
+extern __typeof (g_quark_from_static_string) IA__g_quark_from_static_string __attribute((visibility("hidden")));
+#define g_quark_from_static_string IA__g_quark_from_static_string
+
+extern __typeof (g_quark_from_string) IA__g_quark_from_string __attribute((visibility("hidden")));
+#define g_quark_from_string IA__g_quark_from_string
+
+extern __typeof (g_quark_to_string) IA__g_quark_to_string __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_quark_to_string IA__g_quark_to_string
+
+extern __typeof (g_quark_try_string) IA__g_quark_try_string __attribute((visibility("hidden")));
+#define g_quark_try_string IA__g_quark_try_string
+
+extern __typeof (g_intern_string) IA__g_intern_string __attribute((visibility("hidden")));
+#define g_intern_string IA__g_intern_string
+
+extern __typeof (g_intern_static_string) IA__g_intern_static_string __attribute((visibility("hidden")));
+#define g_intern_static_string IA__g_intern_static_string
+
+#endif
+#endif
+#if IN_HEADER(__G_DATE_H__)
+#if IN_FILE(__G_DATE_C__)
+extern __typeof (g_date_add_days) IA__g_date_add_days __attribute((visibility("hidden")));
+#define g_date_add_days IA__g_date_add_days
+
+extern __typeof (g_date_add_months) IA__g_date_add_months __attribute((visibility("hidden")));
+#define g_date_add_months IA__g_date_add_months
+
+extern __typeof (g_date_add_years) IA__g_date_add_years __attribute((visibility("hidden")));
+#define g_date_add_years IA__g_date_add_years
+
+extern __typeof (g_date_clamp) IA__g_date_clamp __attribute((visibility("hidden")));
+#define g_date_clamp IA__g_date_clamp
+
+extern __typeof (g_date_clear) IA__g_date_clear __attribute((visibility("hidden")));
+#define g_date_clear IA__g_date_clear
+
+extern __typeof (g_date_compare) IA__g_date_compare __attribute((visibility("hidden")));
+#define g_date_compare IA__g_date_compare
+
+extern __typeof (g_date_days_between) IA__g_date_days_between __attribute((visibility("hidden")));
+#define g_date_days_between IA__g_date_days_between
+
+extern __typeof (g_date_free) IA__g_date_free __attribute((visibility("hidden")));
+#define g_date_free IA__g_date_free
+
+extern __typeof (g_date_get_day) IA__g_date_get_day __attribute((visibility("hidden")));
+#define g_date_get_day IA__g_date_get_day
+
+extern __typeof (g_date_get_day_of_year) IA__g_date_get_day_of_year __attribute((visibility("hidden")));
+#define g_date_get_day_of_year IA__g_date_get_day_of_year
+
+extern __typeof (g_date_get_days_in_month) IA__g_date_get_days_in_month __attribute((visibility("hidden")));
+#define g_date_get_days_in_month IA__g_date_get_days_in_month
+
+extern __typeof (g_date_get_iso8601_week_of_year) IA__g_date_get_iso8601_week_of_year __attribute((visibility("hidden")));
+#define g_date_get_iso8601_week_of_year IA__g_date_get_iso8601_week_of_year
+
+extern __typeof (g_date_get_julian) IA__g_date_get_julian __attribute((visibility("hidden")));
+#define g_date_get_julian IA__g_date_get_julian
+
+extern __typeof (g_date_get_monday_week_of_year) IA__g_date_get_monday_week_of_year __attribute((visibility("hidden")));
+#define g_date_get_monday_week_of_year IA__g_date_get_monday_week_of_year
+
+extern __typeof (g_date_get_monday_weeks_in_year) IA__g_date_get_monday_weeks_in_year __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_get_monday_weeks_in_year IA__g_date_get_monday_weeks_in_year
+
+extern __typeof (g_date_get_month) IA__g_date_get_month __attribute((visibility("hidden")));
+#define g_date_get_month IA__g_date_get_month
+
+extern __typeof (g_date_get_sunday_week_of_year) IA__g_date_get_sunday_week_of_year __attribute((visibility("hidden")));
+#define g_date_get_sunday_week_of_year IA__g_date_get_sunday_week_of_year
+
+extern __typeof (g_date_get_sunday_weeks_in_year) IA__g_date_get_sunday_weeks_in_year __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_get_sunday_weeks_in_year IA__g_date_get_sunday_weeks_in_year
+
+extern __typeof (g_date_get_weekday) IA__g_date_get_weekday __attribute((visibility("hidden")));
+#define g_date_get_weekday IA__g_date_get_weekday
+
+extern __typeof (g_date_get_year) IA__g_date_get_year __attribute((visibility("hidden")));
+#define g_date_get_year IA__g_date_get_year
+
+extern __typeof (g_date_is_first_of_month) IA__g_date_is_first_of_month __attribute((visibility("hidden")));
+#define g_date_is_first_of_month IA__g_date_is_first_of_month
+
+extern __typeof (g_date_is_last_of_month) IA__g_date_is_last_of_month __attribute((visibility("hidden")));
+#define g_date_is_last_of_month IA__g_date_is_last_of_month
+
+extern __typeof (g_date_is_leap_year) IA__g_date_is_leap_year __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_is_leap_year IA__g_date_is_leap_year
+
+extern __typeof (g_date_new) IA__g_date_new __attribute((visibility("hidden")));
+#define g_date_new IA__g_date_new
+
+extern __typeof (g_date_new_dmy) IA__g_date_new_dmy __attribute((visibility("hidden")));
+#define g_date_new_dmy IA__g_date_new_dmy
+
+extern __typeof (g_date_new_julian) IA__g_date_new_julian __attribute((visibility("hidden")));
+#define g_date_new_julian IA__g_date_new_julian
+
+extern __typeof (g_date_order) IA__g_date_order __attribute((visibility("hidden")));
+#define g_date_order IA__g_date_order
+
+extern __typeof (g_date_set_day) IA__g_date_set_day __attribute((visibility("hidden")));
+#define g_date_set_day IA__g_date_set_day
+
+extern __typeof (g_date_set_dmy) IA__g_date_set_dmy __attribute((visibility("hidden")));
+#define g_date_set_dmy IA__g_date_set_dmy
+
+extern __typeof (g_date_set_julian) IA__g_date_set_julian __attribute((visibility("hidden")));
+#define g_date_set_julian IA__g_date_set_julian
+
+extern __typeof (g_date_set_month) IA__g_date_set_month __attribute((visibility("hidden")));
+#define g_date_set_month IA__g_date_set_month
+
+extern __typeof (g_date_set_parse) IA__g_date_set_parse __attribute((visibility("hidden")));
+#define g_date_set_parse IA__g_date_set_parse
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_date_set_time) IA__g_date_set_time __attribute((visibility("hidden")));
+#define g_date_set_time IA__g_date_set_time
+
+#endif
+extern __typeof (g_date_set_time_t) IA__g_date_set_time_t __attribute((visibility("hidden")));
+#define g_date_set_time_t IA__g_date_set_time_t
+
+extern __typeof (g_date_set_time_val) IA__g_date_set_time_val __attribute((visibility("hidden")));
+#define g_date_set_time_val IA__g_date_set_time_val
+
+extern __typeof (g_date_set_year) IA__g_date_set_year __attribute((visibility("hidden")));
+#define g_date_set_year IA__g_date_set_year
+
+extern __typeof (g_date_strftime) IA__g_date_strftime __attribute((visibility("hidden")));
+#define g_date_strftime IA__g_date_strftime
+
+extern __typeof (g_date_subtract_days) IA__g_date_subtract_days __attribute((visibility("hidden")));
+#define g_date_subtract_days IA__g_date_subtract_days
+
+extern __typeof (g_date_subtract_months) IA__g_date_subtract_months __attribute((visibility("hidden")));
+#define g_date_subtract_months IA__g_date_subtract_months
+
+extern __typeof (g_date_subtract_years) IA__g_date_subtract_years __attribute((visibility("hidden")));
+#define g_date_subtract_years IA__g_date_subtract_years
+
+extern __typeof (g_date_to_struct_tm) IA__g_date_to_struct_tm __attribute((visibility("hidden")));
+#define g_date_to_struct_tm IA__g_date_to_struct_tm
+
+extern __typeof (g_date_valid) IA__g_date_valid __attribute((visibility("hidden")));
+#define g_date_valid IA__g_date_valid
+
+extern __typeof (g_date_valid_day) IA__g_date_valid_day __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_valid_day IA__g_date_valid_day
+
+extern __typeof (g_date_valid_dmy) IA__g_date_valid_dmy __attribute((visibility("hidden")));
+#define g_date_valid_dmy IA__g_date_valid_dmy
+
+extern __typeof (g_date_valid_julian) IA__g_date_valid_julian __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_valid_julian IA__g_date_valid_julian
+
+extern __typeof (g_date_valid_month) IA__g_date_valid_month __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_valid_month IA__g_date_valid_month
+
+extern __typeof (g_date_valid_weekday) IA__g_date_valid_weekday __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_valid_weekday IA__g_date_valid_weekday
+
+extern __typeof (g_date_valid_year) IA__g_date_valid_year __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_date_valid_year IA__g_date_valid_year
+
+#endif
+#endif
+#if IN_HEADER(__G_DIR_H__)
+#if IN_FILE(__G_DIR_C__)
+extern __typeof (g_dir_close) IA__g_dir_close __attribute((visibility("hidden")));
+#define g_dir_close IA__g_dir_close
+
+#ifndef _WIN64
+extern __typeof (g_dir_open) IA__g_dir_open __attribute((visibility("hidden")));
+#define g_dir_open IA__g_dir_open
+
+extern __typeof (g_dir_read_name) IA__g_dir_read_name __attribute((visibility("hidden")));
+#define g_dir_read_name IA__g_dir_read_name
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_dir_open_utf8) IA__g_dir_open_utf8 __attribute((visibility("hidden")));
+#define g_dir_open_utf8 IA__g_dir_open_utf8
+
+extern __typeof (g_dir_read_name_utf8) IA__g_dir_read_name_utf8 __attribute((visibility("hidden")));
+#define g_dir_read_name_utf8 IA__g_dir_read_name_utf8
+
+#endif
+extern __typeof (g_dir_rewind) IA__g_dir_rewind __attribute((visibility("hidden")));
+#define g_dir_rewind IA__g_dir_rewind
+
+#endif
+#endif
+#if IN_HEADER(__G_ERROR_H__)
+#if IN_FILE(__G_ERROR_C__)
+extern __typeof (g_clear_error) IA__g_clear_error __attribute((visibility("hidden")));
+#define g_clear_error IA__g_clear_error
+
+extern __typeof (g_error_copy) IA__g_error_copy __attribute((visibility("hidden")));
+#define g_error_copy IA__g_error_copy
+
+extern __typeof (g_error_free) IA__g_error_free __attribute((visibility("hidden")));
+#define g_error_free IA__g_error_free
+
+extern __typeof (g_error_matches) IA__g_error_matches __attribute((visibility("hidden")));
+#define g_error_matches IA__g_error_matches
+
+extern __typeof (g_error_new) IA__g_error_new __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
+#define g_error_new IA__g_error_new
+
+extern __typeof (g_error_new_literal) IA__g_error_new_literal __attribute((visibility("hidden")));
+#define g_error_new_literal IA__g_error_new_literal
+
+extern __typeof (g_propagate_error) IA__g_propagate_error __attribute((visibility("hidden")));
+#define g_propagate_error IA__g_propagate_error
+
+extern __typeof (g_set_error) IA__g_set_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(4,5);
+#define g_set_error IA__g_set_error
+
+extern __typeof (g_set_error_literal) IA__g_set_error_literal __attribute((visibility("hidden")));
+#define g_set_error_literal IA__g_set_error_literal
+
+extern __typeof (g_prefix_error) IA__g_prefix_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_prefix_error IA__g_prefix_error
+
+extern __typeof (g_propagate_prefixed_error) IA__g_propagate_prefixed_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
+#define g_propagate_prefixed_error IA__g_propagate_prefixed_error
+
+#endif
+#endif
+#if IN_HEADER(__G_FILEUTILS_H__)
+#if IN_FILE(__G_FILEUTILS_C__)
+extern __typeof (g_build_filename) IA__g_build_filename __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+#define g_build_filename IA__g_build_filename
+
+extern __typeof (g_build_filenamev) IA__g_build_filenamev __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_build_filenamev IA__g_build_filenamev
+
+extern __typeof (g_build_path) IA__g_build_path __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+#define g_build_path IA__g_build_path
+
+extern __typeof (g_build_pathv) IA__g_build_pathv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_build_pathv IA__g_build_pathv
+
+extern __typeof (g_file_error_from_errno) IA__g_file_error_from_errno __attribute((visibility("hidden")));
+#define g_file_error_from_errno IA__g_file_error_from_errno
+
+extern __typeof (g_file_error_quark) IA__g_file_error_quark __attribute((visibility("hidden")));
+#define g_file_error_quark IA__g_file_error_quark
+
+#ifndef _WIN64
+extern __typeof (g_file_get_contents) IA__g_file_get_contents __attribute((visibility("hidden")));
+#define g_file_get_contents IA__g_file_get_contents
+
+#endif
+extern __typeof (g_file_set_contents) IA__g_file_set_contents __attribute((visibility("hidden")));
+#define g_file_set_contents IA__g_file_set_contents
+
+#ifndef _WIN64
+extern __typeof (g_file_open_tmp) IA__g_file_open_tmp __attribute((visibility("hidden")));
+#define g_file_open_tmp IA__g_file_open_tmp
+
+extern __typeof (g_file_test) IA__g_file_test __attribute((visibility("hidden")));
+#define g_file_test IA__g_file_test
+
+#endif
+extern __typeof (g_file_read_link) IA__g_file_read_link __attribute((visibility("hidden")));
+#define g_file_read_link IA__g_file_read_link
+
+extern __typeof (g_format_size_for_display) IA__g_format_size_for_display __attribute((visibility("hidden")));
+#define g_format_size_for_display IA__g_format_size_for_display
+
+#ifndef _WIN64
+extern __typeof (g_mkstemp) IA__g_mkstemp __attribute((visibility("hidden")));
+#define g_mkstemp IA__g_mkstemp
+
+#endif
+extern __typeof (g_mkdir_with_parents) IA__g_mkdir_with_parents __attribute((visibility("hidden")));
+#define g_mkdir_with_parents IA__g_mkdir_with_parents
+
+#ifdef G_OS_WIN32
+extern __typeof (g_file_get_contents_utf8) IA__g_file_get_contents_utf8 __attribute((visibility("hidden")));
+#define g_file_get_contents_utf8 IA__g_file_get_contents_utf8
+
+extern __typeof (g_file_open_tmp_utf8) IA__g_file_open_tmp_utf8 __attribute((visibility("hidden")));
+#define g_file_open_tmp_utf8 IA__g_file_open_tmp_utf8
+
+extern __typeof (g_file_test_utf8) IA__g_file_test_utf8 __attribute((visibility("hidden")));
+#define g_file_test_utf8 IA__g_file_test_utf8
+
+extern __typeof (g_mkstemp_utf8) IA__g_mkstemp_utf8 __attribute((visibility("hidden")));
+#define g_mkstemp_utf8 IA__g_mkstemp_utf8
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_HASH_H__)
+#if IN_FILE(__G_HASH_C__)
+extern __typeof (g_hash_table_destroy) IA__g_hash_table_destroy __attribute((visibility("hidden")));
+#define g_hash_table_destroy IA__g_hash_table_destroy
+
+extern __typeof (g_hash_table_unref) IA__g_hash_table_unref __attribute((visibility("hidden")));
+#define g_hash_table_unref IA__g_hash_table_unref
+
+extern __typeof (g_hash_table_ref) IA__g_hash_table_ref __attribute((visibility("hidden")));
+#define g_hash_table_ref IA__g_hash_table_ref
+
+extern __typeof (g_hash_table_find) IA__g_hash_table_find __attribute((visibility("hidden")));
+#define g_hash_table_find IA__g_hash_table_find
+
+extern __typeof (g_hash_table_foreach) IA__g_hash_table_foreach __attribute((visibility("hidden")));
+#define g_hash_table_foreach IA__g_hash_table_foreach
+
+extern __typeof (g_hash_table_foreach_remove) IA__g_hash_table_foreach_remove __attribute((visibility("hidden")));
+#define g_hash_table_foreach_remove IA__g_hash_table_foreach_remove
+
+extern __typeof (g_hash_table_foreach_steal) IA__g_hash_table_foreach_steal __attribute((visibility("hidden")));
+#define g_hash_table_foreach_steal IA__g_hash_table_foreach_steal
+
+extern __typeof (g_hash_table_get_keys) IA__g_hash_table_get_keys __attribute((visibility("hidden")));
+#define g_hash_table_get_keys IA__g_hash_table_get_keys
+
+extern __typeof (g_hash_table_get_values) IA__g_hash_table_get_values __attribute((visibility("hidden")));
+#define g_hash_table_get_values IA__g_hash_table_get_values
+
+extern __typeof (g_hash_table_insert) IA__g_hash_table_insert __attribute((visibility("hidden")));
+#define g_hash_table_insert IA__g_hash_table_insert
+
+extern __typeof (g_hash_table_lookup) IA__g_hash_table_lookup __attribute((visibility("hidden")));
+#define g_hash_table_lookup IA__g_hash_table_lookup
+
+extern __typeof (g_hash_table_lookup_extended) IA__g_hash_table_lookup_extended __attribute((visibility("hidden")));
+#define g_hash_table_lookup_extended IA__g_hash_table_lookup_extended
+
+extern __typeof (g_hash_table_new) IA__g_hash_table_new __attribute((visibility("hidden")));
+#define g_hash_table_new IA__g_hash_table_new
+
+extern __typeof (g_hash_table_new_full) IA__g_hash_table_new_full __attribute((visibility("hidden")));
+#define g_hash_table_new_full IA__g_hash_table_new_full
+
+extern __typeof (g_hash_table_remove) IA__g_hash_table_remove __attribute((visibility("hidden")));
+#define g_hash_table_remove IA__g_hash_table_remove
+
+extern __typeof (g_hash_table_remove_all) IA__g_hash_table_remove_all __attribute((visibility("hidden")));
+#define g_hash_table_remove_all IA__g_hash_table_remove_all
+
+extern __typeof (g_hash_table_replace) IA__g_hash_table_replace __attribute((visibility("hidden")));
+#define g_hash_table_replace IA__g_hash_table_replace
+
+extern __typeof (g_hash_table_size) IA__g_hash_table_size __attribute((visibility("hidden")));
+#define g_hash_table_size IA__g_hash_table_size
+
+extern __typeof (g_hash_table_steal) IA__g_hash_table_steal __attribute((visibility("hidden")));
+#define g_hash_table_steal IA__g_hash_table_steal
+
+extern __typeof (g_hash_table_steal_all) IA__g_hash_table_steal_all __attribute((visibility("hidden")));
+#define g_hash_table_steal_all IA__g_hash_table_steal_all
+
+extern __typeof (g_hash_table_iter_init) IA__g_hash_table_iter_init __attribute((visibility("hidden")));
+#define g_hash_table_iter_init IA__g_hash_table_iter_init
+
+extern __typeof (g_hash_table_iter_next) IA__g_hash_table_iter_next __attribute((visibility("hidden")));
+#define g_hash_table_iter_next IA__g_hash_table_iter_next
+
+extern __typeof (g_hash_table_iter_get_hash_table) IA__g_hash_table_iter_get_hash_table __attribute((visibility("hidden")));
+#define g_hash_table_iter_get_hash_table IA__g_hash_table_iter_get_hash_table
+
+extern __typeof (g_hash_table_iter_remove) IA__g_hash_table_iter_remove __attribute((visibility("hidden")));
+#define g_hash_table_iter_remove IA__g_hash_table_iter_remove
+
+extern __typeof (g_hash_table_iter_steal) IA__g_hash_table_iter_steal __attribute((visibility("hidden")));
+#define g_hash_table_iter_steal IA__g_hash_table_iter_steal
+
+#endif
+#endif
+#if IN_HEADER(__G_HOOK_H__)
+#if IN_FILE(__G_HOOK_C__)
+extern __typeof (g_hook_alloc) IA__g_hook_alloc __attribute((visibility("hidden")));
+#define g_hook_alloc IA__g_hook_alloc
+
+extern __typeof (g_hook_compare_ids) IA__g_hook_compare_ids __attribute((visibility("hidden")));
+#define g_hook_compare_ids IA__g_hook_compare_ids
+
+extern __typeof (g_hook_destroy) IA__g_hook_destroy __attribute((visibility("hidden")));
+#define g_hook_destroy IA__g_hook_destroy
+
+extern __typeof (g_hook_destroy_link) IA__g_hook_destroy_link __attribute((visibility("hidden")));
+#define g_hook_destroy_link IA__g_hook_destroy_link
+
+extern __typeof (g_hook_find) IA__g_hook_find __attribute((visibility("hidden")));
+#define g_hook_find IA__g_hook_find
+
+extern __typeof (g_hook_find_data) IA__g_hook_find_data __attribute((visibility("hidden")));
+#define g_hook_find_data IA__g_hook_find_data
+
+extern __typeof (g_hook_find_func) IA__g_hook_find_func __attribute((visibility("hidden")));
+#define g_hook_find_func IA__g_hook_find_func
+
+extern __typeof (g_hook_find_func_data) IA__g_hook_find_func_data __attribute((visibility("hidden")));
+#define g_hook_find_func_data IA__g_hook_find_func_data
+
+extern __typeof (g_hook_first_valid) IA__g_hook_first_valid __attribute((visibility("hidden")));
+#define g_hook_first_valid IA__g_hook_first_valid
+
+extern __typeof (g_hook_free) IA__g_hook_free __attribute((visibility("hidden")));
+#define g_hook_free IA__g_hook_free
+
+extern __typeof (g_hook_get) IA__g_hook_get __attribute((visibility("hidden")));
+#define g_hook_get IA__g_hook_get
+
+extern __typeof (g_hook_insert_before) IA__g_hook_insert_before __attribute((visibility("hidden")));
+#define g_hook_insert_before IA__g_hook_insert_before
+
+extern __typeof (g_hook_insert_sorted) IA__g_hook_insert_sorted __attribute((visibility("hidden")));
+#define g_hook_insert_sorted IA__g_hook_insert_sorted
+
+extern __typeof (g_hook_list_clear) IA__g_hook_list_clear __attribute((visibility("hidden")));
+#define g_hook_list_clear IA__g_hook_list_clear
+
+extern __typeof (g_hook_list_init) IA__g_hook_list_init __attribute((visibility("hidden")));
+#define g_hook_list_init IA__g_hook_list_init
+
+extern __typeof (g_hook_list_invoke) IA__g_hook_list_invoke __attribute((visibility("hidden")));
+#define g_hook_list_invoke IA__g_hook_list_invoke
+
+extern __typeof (g_hook_list_invoke_check) IA__g_hook_list_invoke_check __attribute((visibility("hidden")));
+#define g_hook_list_invoke_check IA__g_hook_list_invoke_check
+
+extern __typeof (g_hook_list_marshal) IA__g_hook_list_marshal __attribute((visibility("hidden")));
+#define g_hook_list_marshal IA__g_hook_list_marshal
+
+extern __typeof (g_hook_list_marshal_check) IA__g_hook_list_marshal_check __attribute((visibility("hidden")));
+#define g_hook_list_marshal_check IA__g_hook_list_marshal_check
+
+extern __typeof (g_hook_next_valid) IA__g_hook_next_valid __attribute((visibility("hidden")));
+#define g_hook_next_valid IA__g_hook_next_valid
+
+extern __typeof (g_hook_prepend) IA__g_hook_prepend __attribute((visibility("hidden")));
+#define g_hook_prepend IA__g_hook_prepend
+
+extern __typeof (g_hook_ref) IA__g_hook_ref __attribute((visibility("hidden")));
+#define g_hook_ref IA__g_hook_ref
+
+extern __typeof (g_hook_unref) IA__g_hook_unref __attribute((visibility("hidden")));
+#define g_hook_unref IA__g_hook_unref
+
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IOCHANNEL_C__)
+extern __typeof (g_io_add_watch) IA__g_io_add_watch __attribute((visibility("hidden")));
+#define g_io_add_watch IA__g_io_add_watch
+
+extern __typeof (g_io_add_watch_full) IA__g_io_add_watch_full __attribute((visibility("hidden")));
+#define g_io_add_watch_full IA__g_io_add_watch_full
+
+extern __typeof (g_io_create_watch) IA__g_io_create_watch __attribute((visibility("hidden")));
+#define g_io_create_watch IA__g_io_create_watch
+
+extern __typeof (g_io_channel_error_from_errno) IA__g_io_channel_error_from_errno __attribute((visibility("hidden")));
+#define g_io_channel_error_from_errno IA__g_io_channel_error_from_errno
+
+extern __typeof (g_io_channel_error_quark) IA__g_io_channel_error_quark __attribute((visibility("hidden")));
+#define g_io_channel_error_quark IA__g_io_channel_error_quark
+
+extern __typeof (g_io_channel_flush) IA__g_io_channel_flush __attribute((visibility("hidden")));
+#define g_io_channel_flush IA__g_io_channel_flush
+
+extern __typeof (g_io_channel_get_buffer_condition) IA__g_io_channel_get_buffer_condition __attribute((visibility("hidden")));
+#define g_io_channel_get_buffer_condition IA__g_io_channel_get_buffer_condition
+
+extern __typeof (g_io_channel_get_buffered) IA__g_io_channel_get_buffered __attribute((visibility("hidden")));
+#define g_io_channel_get_buffered IA__g_io_channel_get_buffered
+
+extern __typeof (g_io_channel_get_buffer_size) IA__g_io_channel_get_buffer_size __attribute((visibility("hidden")));
+#define g_io_channel_get_buffer_size IA__g_io_channel_get_buffer_size
+
+extern __typeof (g_io_channel_get_close_on_unref) IA__g_io_channel_get_close_on_unref __attribute((visibility("hidden")));
+#define g_io_channel_get_close_on_unref IA__g_io_channel_get_close_on_unref
+
+extern __typeof (g_io_channel_get_encoding) IA__g_io_channel_get_encoding __attribute((visibility("hidden")));
+#define g_io_channel_get_encoding IA__g_io_channel_get_encoding
+
+extern __typeof (g_io_channel_get_flags) IA__g_io_channel_get_flags __attribute((visibility("hidden")));
+#define g_io_channel_get_flags IA__g_io_channel_get_flags
+
+extern __typeof (g_io_channel_get_line_term) IA__g_io_channel_get_line_term __attribute((visibility("hidden")));
+#define g_io_channel_get_line_term IA__g_io_channel_get_line_term
+
+extern __typeof (g_io_channel_init) IA__g_io_channel_init __attribute((visibility("hidden")));
+#define g_io_channel_init IA__g_io_channel_init
+
+extern __typeof (g_io_channel_read_chars) IA__g_io_channel_read_chars __attribute((visibility("hidden")));
+#define g_io_channel_read_chars IA__g_io_channel_read_chars
+
+extern __typeof (g_io_channel_read_line) IA__g_io_channel_read_line __attribute((visibility("hidden")));
+#define g_io_channel_read_line IA__g_io_channel_read_line
+
+extern __typeof (g_io_channel_read_line_string) IA__g_io_channel_read_line_string __attribute((visibility("hidden")));
+#define g_io_channel_read_line_string IA__g_io_channel_read_line_string
+
+extern __typeof (g_io_channel_read_to_end) IA__g_io_channel_read_to_end __attribute((visibility("hidden")));
+#define g_io_channel_read_to_end IA__g_io_channel_read_to_end
+
+extern __typeof (g_io_channel_read_unichar) IA__g_io_channel_read_unichar __attribute((visibility("hidden")));
+#define g_io_channel_read_unichar IA__g_io_channel_read_unichar
+
+extern __typeof (g_io_channel_ref) IA__g_io_channel_ref __attribute((visibility("hidden")));
+#define g_io_channel_ref IA__g_io_channel_ref
+
+extern __typeof (g_io_channel_seek_position) IA__g_io_channel_seek_position __attribute((visibility("hidden")));
+#define g_io_channel_seek_position IA__g_io_channel_seek_position
+
+extern __typeof (g_io_channel_set_buffered) IA__g_io_channel_set_buffered __attribute((visibility("hidden")));
+#define g_io_channel_set_buffered IA__g_io_channel_set_buffered
+
+extern __typeof (g_io_channel_set_buffer_size) IA__g_io_channel_set_buffer_size __attribute((visibility("hidden")));
+#define g_io_channel_set_buffer_size IA__g_io_channel_set_buffer_size
+
+extern __typeof (g_io_channel_set_close_on_unref) IA__g_io_channel_set_close_on_unref __attribute((visibility("hidden")));
+#define g_io_channel_set_close_on_unref IA__g_io_channel_set_close_on_unref
+
+extern __typeof (g_io_channel_set_encoding) IA__g_io_channel_set_encoding __attribute((visibility("hidden")));
+#define g_io_channel_set_encoding IA__g_io_channel_set_encoding
+
+extern __typeof (g_io_channel_set_flags) IA__g_io_channel_set_flags __attribute((visibility("hidden")));
+#define g_io_channel_set_flags IA__g_io_channel_set_flags
+
+extern __typeof (g_io_channel_set_line_term) IA__g_io_channel_set_line_term __attribute((visibility("hidden")));
+#define g_io_channel_set_line_term IA__g_io_channel_set_line_term
+
+extern __typeof (g_io_channel_shutdown) IA__g_io_channel_shutdown __attribute((visibility("hidden")));
+#define g_io_channel_shutdown IA__g_io_channel_shutdown
+
+extern __typeof (g_io_channel_unref) IA__g_io_channel_unref __attribute((visibility("hidden")));
+#define g_io_channel_unref IA__g_io_channel_unref
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_io_channel_close) IA__g_io_channel_close __attribute((visibility("hidden")));
+#define g_io_channel_close IA__g_io_channel_close
+
+extern __typeof (g_io_channel_read) IA__g_io_channel_read __attribute((visibility("hidden")));
+#define g_io_channel_read IA__g_io_channel_read
+
+extern __typeof (g_io_channel_seek) IA__g_io_channel_seek __attribute((visibility("hidden")));
+#define g_io_channel_seek IA__g_io_channel_seek
+
+extern __typeof (g_io_channel_write) IA__g_io_channel_write __attribute((visibility("hidden")));
+#define g_io_channel_write IA__g_io_channel_write
+
+#endif
+extern __typeof (g_io_channel_write_chars) IA__g_io_channel_write_chars __attribute((visibility("hidden")));
+#define g_io_channel_write_chars IA__g_io_channel_write_chars
+
+extern __typeof (g_io_channel_write_unichar) IA__g_io_channel_write_unichar __attribute((visibility("hidden")));
+#define g_io_channel_write_unichar IA__g_io_channel_write_unichar
+
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IO_UNIX_C__)
+#ifdef G_OS_UNIX
+extern __typeof (g_io_channel_unix_get_fd) IA__g_io_channel_unix_get_fd __attribute((visibility("hidden")));
+#define g_io_channel_unix_get_fd IA__g_io_channel_unix_get_fd
+
+extern __typeof (g_io_channel_unix_new) IA__g_io_channel_unix_new __attribute((visibility("hidden")));
+#define g_io_channel_unix_new IA__g_io_channel_unix_new
+
+extern __typeof (g_io_channel_new_file) IA__g_io_channel_new_file __attribute((visibility("hidden")));
+#define g_io_channel_new_file IA__g_io_channel_new_file
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IO_WIN32_C__)
+#ifdef G_OS_WIN32
+extern __typeof (g_io_channel_unix_get_fd) IA__g_io_channel_unix_get_fd __attribute((visibility("hidden")));
+#define g_io_channel_unix_get_fd IA__g_io_channel_unix_get_fd
+
+extern __typeof (g_io_channel_unix_new) IA__g_io_channel_unix_new __attribute((visibility("hidden")));
+#define g_io_channel_unix_new IA__g_io_channel_unix_new
+
+#ifndef _WIN64
+extern __typeof (g_io_channel_new_file) IA__g_io_channel_new_file __attribute((visibility("hidden")));
+#define g_io_channel_new_file IA__g_io_channel_new_file
+
+#endif
+extern __typeof (g_io_channel_new_file_utf8) IA__g_io_channel_new_file_utf8 __attribute((visibility("hidden")));
+#define g_io_channel_new_file_utf8 IA__g_io_channel_new_file_utf8
+
+extern __typeof (g_io_channel_win32_get_fd) IA__g_io_channel_win32_get_fd __attribute((visibility("hidden")));
+#define g_io_channel_win32_get_fd IA__g_io_channel_win32_get_fd
+
+extern __typeof (g_io_channel_win32_make_pollfd) IA__g_io_channel_win32_make_pollfd __attribute((visibility("hidden")));
+#define g_io_channel_win32_make_pollfd IA__g_io_channel_win32_make_pollfd
+
+extern __typeof (g_io_channel_win32_new_fd) IA__g_io_channel_win32_new_fd __attribute((visibility("hidden")));
+#define g_io_channel_win32_new_fd IA__g_io_channel_win32_new_fd
+
+extern __typeof (g_io_channel_win32_new_messages) IA__g_io_channel_win32_new_messages __attribute((visibility("hidden")));
+#define g_io_channel_win32_new_messages IA__g_io_channel_win32_new_messages
+
+extern __typeof (g_io_channel_win32_new_socket) IA__g_io_channel_win32_new_socket __attribute((visibility("hidden")));
+#define g_io_channel_win32_new_socket IA__g_io_channel_win32_new_socket
+
+#ifndef _WIN64
+extern __typeof (g_io_channel_win32_new_stream_socket) IA__g_io_channel_win32_new_stream_socket __attribute((visibility("hidden")));
+#define g_io_channel_win32_new_stream_socket IA__g_io_channel_win32_new_stream_socket
+
+#endif
+extern __typeof (g_io_channel_win32_poll) IA__g_io_channel_win32_poll __attribute((visibility("hidden")));
+#define g_io_channel_win32_poll IA__g_io_channel_win32_poll
+
+extern __typeof (g_io_channel_win32_set_debug) IA__g_io_channel_win32_set_debug __attribute((visibility("hidden")));
+#define g_io_channel_win32_set_debug IA__g_io_channel_win32_set_debug
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_KEY_FILE_H__)
+#if IN_FILE(__G_KEY_FILE_C__)
+extern __typeof (g_key_file_error_quark) IA__g_key_file_error_quark __attribute((visibility("hidden")));
+#define g_key_file_error_quark IA__g_key_file_error_quark
+
+extern __typeof (g_key_file_free) IA__g_key_file_free __attribute((visibility("hidden")));
+#define g_key_file_free IA__g_key_file_free
+
+extern __typeof (g_key_file_get_boolean) IA__g_key_file_get_boolean __attribute((visibility("hidden")));
+#define g_key_file_get_boolean IA__g_key_file_get_boolean
+
+extern __typeof (g_key_file_get_boolean_list) IA__g_key_file_get_boolean_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_boolean_list IA__g_key_file_get_boolean_list
+
+extern __typeof (g_key_file_get_comment) IA__g_key_file_get_comment __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_comment IA__g_key_file_get_comment
+
+extern __typeof (g_key_file_get_groups) IA__g_key_file_get_groups __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_groups IA__g_key_file_get_groups
+
+extern __typeof (g_key_file_get_double) IA__g_key_file_get_double __attribute((visibility("hidden")));
+#define g_key_file_get_double IA__g_key_file_get_double
+
+extern __typeof (g_key_file_get_double_list) IA__g_key_file_get_double_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_double_list IA__g_key_file_get_double_list
+
+extern __typeof (g_key_file_get_integer) IA__g_key_file_get_integer __attribute((visibility("hidden")));
+#define g_key_file_get_integer IA__g_key_file_get_integer
+
+extern __typeof (g_key_file_get_integer_list) IA__g_key_file_get_integer_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_integer_list IA__g_key_file_get_integer_list
+
+extern __typeof (g_key_file_get_keys) IA__g_key_file_get_keys __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_keys IA__g_key_file_get_keys
+
+extern __typeof (g_key_file_get_locale_string) IA__g_key_file_get_locale_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_locale_string IA__g_key_file_get_locale_string
+
+extern __typeof (g_key_file_get_locale_string_list) IA__g_key_file_get_locale_string_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_locale_string_list IA__g_key_file_get_locale_string_list
+
+extern __typeof (g_key_file_get_start_group) IA__g_key_file_get_start_group __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_start_group IA__g_key_file_get_start_group
+
+extern __typeof (g_key_file_get_string) IA__g_key_file_get_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_string IA__g_key_file_get_string
+
+extern __typeof (g_key_file_get_string_list) IA__g_key_file_get_string_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_string_list IA__g_key_file_get_string_list
+
+extern __typeof (g_key_file_get_value) IA__g_key_file_get_value __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_get_value IA__g_key_file_get_value
+
+extern __typeof (g_key_file_has_group) IA__g_key_file_has_group __attribute((visibility("hidden")));
+#define g_key_file_has_group IA__g_key_file_has_group
+
+extern __typeof (g_key_file_has_key) IA__g_key_file_has_key __attribute((visibility("hidden")));
+#define g_key_file_has_key IA__g_key_file_has_key
+
+extern __typeof (g_key_file_load_from_dirs) IA__g_key_file_load_from_dirs __attribute((visibility("hidden")));
+#define g_key_file_load_from_dirs IA__g_key_file_load_from_dirs
+
+extern __typeof (g_key_file_load_from_data) IA__g_key_file_load_from_data __attribute((visibility("hidden")));
+#define g_key_file_load_from_data IA__g_key_file_load_from_data
+
+extern __typeof (g_key_file_load_from_data_dirs) IA__g_key_file_load_from_data_dirs __attribute((visibility("hidden")));
+#define g_key_file_load_from_data_dirs IA__g_key_file_load_from_data_dirs
+
+extern __typeof (g_key_file_load_from_file) IA__g_key_file_load_from_file __attribute((visibility("hidden")));
+#define g_key_file_load_from_file IA__g_key_file_load_from_file
+
+extern __typeof (g_key_file_new) IA__g_key_file_new __attribute((visibility("hidden")));
+#define g_key_file_new IA__g_key_file_new
+
+extern __typeof (g_key_file_remove_comment) IA__g_key_file_remove_comment __attribute((visibility("hidden")));
+#define g_key_file_remove_comment IA__g_key_file_remove_comment
+
+extern __typeof (g_key_file_remove_group) IA__g_key_file_remove_group __attribute((visibility("hidden")));
+#define g_key_file_remove_group IA__g_key_file_remove_group
+
+extern __typeof (g_key_file_remove_key) IA__g_key_file_remove_key __attribute((visibility("hidden")));
+#define g_key_file_remove_key IA__g_key_file_remove_key
+
+extern __typeof (g_key_file_set_boolean) IA__g_key_file_set_boolean __attribute((visibility("hidden")));
+#define g_key_file_set_boolean IA__g_key_file_set_boolean
+
+extern __typeof (g_key_file_set_boolean_list) IA__g_key_file_set_boolean_list __attribute((visibility("hidden")));
+#define g_key_file_set_boolean_list IA__g_key_file_set_boolean_list
+
+extern __typeof (g_key_file_set_comment) IA__g_key_file_set_comment __attribute((visibility("hidden")));
+#define g_key_file_set_comment IA__g_key_file_set_comment
+
+extern __typeof (g_key_file_set_double) IA__g_key_file_set_double __attribute((visibility("hidden")));
+#define g_key_file_set_double IA__g_key_file_set_double
+
+extern __typeof (g_key_file_set_double_list) IA__g_key_file_set_double_list __attribute((visibility("hidden")));
+#define g_key_file_set_double_list IA__g_key_file_set_double_list
+
+extern __typeof (g_key_file_set_integer) IA__g_key_file_set_integer __attribute((visibility("hidden")));
+#define g_key_file_set_integer IA__g_key_file_set_integer
+
+extern __typeof (g_key_file_set_integer_list) IA__g_key_file_set_integer_list __attribute((visibility("hidden")));
+#define g_key_file_set_integer_list IA__g_key_file_set_integer_list
+
+extern __typeof (g_key_file_set_list_separator) IA__g_key_file_set_list_separator __attribute((visibility("hidden")));
+#define g_key_file_set_list_separator IA__g_key_file_set_list_separator
+
+extern __typeof (g_key_file_set_locale_string) IA__g_key_file_set_locale_string __attribute((visibility("hidden")));
+#define g_key_file_set_locale_string IA__g_key_file_set_locale_string
+
+extern __typeof (g_key_file_set_locale_string_list) IA__g_key_file_set_locale_string_list __attribute((visibility("hidden")));
+#define g_key_file_set_locale_string_list IA__g_key_file_set_locale_string_list
+
+extern __typeof (g_key_file_set_string) IA__g_key_file_set_string __attribute((visibility("hidden")));
+#define g_key_file_set_string IA__g_key_file_set_string
+
+extern __typeof (g_key_file_set_string_list) IA__g_key_file_set_string_list __attribute((visibility("hidden")));
+#define g_key_file_set_string_list IA__g_key_file_set_string_list
+
+extern __typeof (g_key_file_set_value) IA__g_key_file_set_value __attribute((visibility("hidden")));
+#define g_key_file_set_value IA__g_key_file_set_value
+
+extern __typeof (g_key_file_to_data) IA__g_key_file_to_data __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_key_file_to_data IA__g_key_file_to_data
+
+#endif
+#endif
+#if IN_HEADER(__G_LIST_H__)
+#if IN_FILE(__G_LIST_C__)
+extern __typeof (g_list_alloc) IA__g_list_alloc __attribute((visibility("hidden")));
+#define g_list_alloc IA__g_list_alloc
+
+extern __typeof (g_list_append) IA__g_list_append __attribute((visibility("hidden")));
+#define g_list_append IA__g_list_append
+
+extern __typeof (g_list_concat) IA__g_list_concat __attribute((visibility("hidden")));
+#define g_list_concat IA__g_list_concat
+
+extern __typeof (g_list_copy) IA__g_list_copy __attribute((visibility("hidden")));
+#define g_list_copy IA__g_list_copy
+
+extern __typeof (g_list_delete_link) IA__g_list_delete_link __attribute((visibility("hidden")));
+#define g_list_delete_link IA__g_list_delete_link
+
+extern __typeof (g_list_find) IA__g_list_find __attribute((visibility("hidden")));
+#define g_list_find IA__g_list_find
+
+extern __typeof (g_list_find_custom) IA__g_list_find_custom __attribute((visibility("hidden")));
+#define g_list_find_custom IA__g_list_find_custom
+
+extern __typeof (g_list_first) IA__g_list_first __attribute((visibility("hidden")));
+#define g_list_first IA__g_list_first
+
+extern __typeof (g_list_foreach) IA__g_list_foreach __attribute((visibility("hidden")));
+#define g_list_foreach IA__g_list_foreach
+
+extern __typeof (g_list_free) IA__g_list_free __attribute((visibility("hidden")));
+#define g_list_free IA__g_list_free
+
+extern __typeof (g_list_free_1) IA__g_list_free_1 __attribute((visibility("hidden")));
+#define g_list_free_1 IA__g_list_free_1
+
+extern __typeof (g_list_index) IA__g_list_index __attribute((visibility("hidden")));
+#define g_list_index IA__g_list_index
+
+extern __typeof (g_list_insert) IA__g_list_insert __attribute((visibility("hidden")));
+#define g_list_insert IA__g_list_insert
+
+extern __typeof (g_list_insert_before) IA__g_list_insert_before __attribute((visibility("hidden")));
+#define g_list_insert_before IA__g_list_insert_before
+
+extern __typeof (g_list_insert_sorted) IA__g_list_insert_sorted __attribute((visibility("hidden")));
+#define g_list_insert_sorted IA__g_list_insert_sorted
+
+extern __typeof (g_list_insert_sorted_with_data) IA__g_list_insert_sorted_with_data __attribute((visibility("hidden")));
+#define g_list_insert_sorted_with_data IA__g_list_insert_sorted_with_data
+
+extern __typeof (g_list_last) IA__g_list_last __attribute((visibility("hidden")));
+#define g_list_last IA__g_list_last
+
+extern __typeof (g_list_length) IA__g_list_length __attribute((visibility("hidden")));
+#define g_list_length IA__g_list_length
+
+extern __typeof (g_list_nth) IA__g_list_nth __attribute((visibility("hidden")));
+#define g_list_nth IA__g_list_nth
+
+extern __typeof (g_list_nth_data) IA__g_list_nth_data __attribute((visibility("hidden")));
+#define g_list_nth_data IA__g_list_nth_data
+
+extern __typeof (g_list_nth_prev) IA__g_list_nth_prev __attribute((visibility("hidden")));
+#define g_list_nth_prev IA__g_list_nth_prev
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_list_pop_allocator) IA__g_list_pop_allocator __attribute((visibility("hidden")));
+#define g_list_pop_allocator IA__g_list_pop_allocator
+
+#endif
+extern __typeof (g_list_position) IA__g_list_position __attribute((visibility("hidden")));
+#define g_list_position IA__g_list_position
+
+extern __typeof (g_list_prepend) IA__g_list_prepend __attribute((visibility("hidden")));
+#define g_list_prepend IA__g_list_prepend
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_list_push_allocator) IA__g_list_push_allocator __attribute((visibility("hidden")));
+#define g_list_push_allocator IA__g_list_push_allocator
+
+#endif
+extern __typeof (g_list_remove) IA__g_list_remove __attribute((visibility("hidden")));
+#define g_list_remove IA__g_list_remove
+
+extern __typeof (g_list_remove_all) IA__g_list_remove_all __attribute((visibility("hidden")));
+#define g_list_remove_all IA__g_list_remove_all
+
+extern __typeof (g_list_remove_link) IA__g_list_remove_link __attribute((visibility("hidden")));
+#define g_list_remove_link IA__g_list_remove_link
+
+extern __typeof (g_list_reverse) IA__g_list_reverse __attribute((visibility("hidden")));
+#define g_list_reverse IA__g_list_reverse
+
+extern __typeof (g_list_sort) IA__g_list_sort __attribute((visibility("hidden")));
+#define g_list_sort IA__g_list_sort
+
+extern __typeof (g_list_sort_with_data) IA__g_list_sort_with_data __attribute((visibility("hidden")));
+#define g_list_sort_with_data IA__g_list_sort_with_data
+
+#endif
+#endif
+#if IN_HEADER(__G_MAIN_H__)
+#if IN_FILE(__G_MAIN_C__)
+extern __typeof (g_child_watch_add) IA__g_child_watch_add __attribute((visibility("hidden")));
+#define g_child_watch_add IA__g_child_watch_add
+
+extern __typeof (g_child_watch_add_full) IA__g_child_watch_add_full __attribute((visibility("hidden")));
+#define g_child_watch_add_full IA__g_child_watch_add_full
+
+extern __typeof (g_child_watch_source_new) IA__g_child_watch_source_new __attribute((visibility("hidden")));
+#define g_child_watch_source_new IA__g_child_watch_source_new
+
+extern __typeof (g_get_current_time) IA__g_get_current_time __attribute((visibility("hidden")));
+#define g_get_current_time IA__g_get_current_time
+
+extern __typeof (g_main_context_acquire) IA__g_main_context_acquire __attribute((visibility("hidden")));
+#define g_main_context_acquire IA__g_main_context_acquire
+
+extern __typeof (g_main_context_add_poll) IA__g_main_context_add_poll __attribute((visibility("hidden")));
+#define g_main_context_add_poll IA__g_main_context_add_poll
+
+extern __typeof (g_main_context_check) IA__g_main_context_check __attribute((visibility("hidden")));
+#define g_main_context_check IA__g_main_context_check
+
+extern __typeof (g_main_context_default) IA__g_main_context_default __attribute((visibility("hidden")));
+#define g_main_context_default IA__g_main_context_default
+
+extern __typeof (g_main_context_dispatch) IA__g_main_context_dispatch __attribute((visibility("hidden")));
+#define g_main_context_dispatch IA__g_main_context_dispatch
+
+extern __typeof (g_main_context_find_source_by_funcs_user_data) IA__g_main_context_find_source_by_funcs_user_data __attribute((visibility("hidden")));
+#define g_main_context_find_source_by_funcs_user_data IA__g_main_context_find_source_by_funcs_user_data
+
+extern __typeof (g_main_context_find_source_by_id) IA__g_main_context_find_source_by_id __attribute((visibility("hidden")));
+#define g_main_context_find_source_by_id IA__g_main_context_find_source_by_id
+
+extern __typeof (g_main_context_find_source_by_user_data) IA__g_main_context_find_source_by_user_data __attribute((visibility("hidden")));
+#define g_main_context_find_source_by_user_data IA__g_main_context_find_source_by_user_data
+
+extern __typeof (g_main_context_get_poll_func) IA__g_main_context_get_poll_func __attribute((visibility("hidden")));
+#define g_main_context_get_poll_func IA__g_main_context_get_poll_func
+
+extern __typeof (g_main_context_is_owner) IA__g_main_context_is_owner __attribute((visibility("hidden")));
+#define g_main_context_is_owner IA__g_main_context_is_owner
+
+extern __typeof (g_main_context_iteration) IA__g_main_context_iteration __attribute((visibility("hidden")));
+#define g_main_context_iteration IA__g_main_context_iteration
+
+extern __typeof (g_main_context_new) IA__g_main_context_new __attribute((visibility("hidden")));
+#define g_main_context_new IA__g_main_context_new
+
+extern __typeof (g_main_context_pending) IA__g_main_context_pending __attribute((visibility("hidden")));
+#define g_main_context_pending IA__g_main_context_pending
+
+extern __typeof (g_main_context_prepare) IA__g_main_context_prepare __attribute((visibility("hidden")));
+#define g_main_context_prepare IA__g_main_context_prepare
+
+extern __typeof (g_main_context_query) IA__g_main_context_query __attribute((visibility("hidden")));
+#define g_main_context_query IA__g_main_context_query
+
+extern __typeof (g_main_context_ref) IA__g_main_context_ref __attribute((visibility("hidden")));
+#define g_main_context_ref IA__g_main_context_ref
+
+extern __typeof (g_main_context_release) IA__g_main_context_release __attribute((visibility("hidden")));
+#define g_main_context_release IA__g_main_context_release
+
+extern __typeof (g_main_context_remove_poll) IA__g_main_context_remove_poll __attribute((visibility("hidden")));
+#define g_main_context_remove_poll IA__g_main_context_remove_poll
+
+extern __typeof (g_main_context_set_poll_func) IA__g_main_context_set_poll_func __attribute((visibility("hidden")));
+#define g_main_context_set_poll_func IA__g_main_context_set_poll_func
+
+extern __typeof (g_main_context_unref) IA__g_main_context_unref __attribute((visibility("hidden")));
+#define g_main_context_unref IA__g_main_context_unref
+
+extern __typeof (g_main_context_wait) IA__g_main_context_wait __attribute((visibility("hidden")));
+#define g_main_context_wait IA__g_main_context_wait
+
+extern __typeof (g_main_context_wakeup) IA__g_main_context_wakeup __attribute((visibility("hidden")));
+#define g_main_context_wakeup IA__g_main_context_wakeup
+
+extern __typeof (g_main_depth) IA__g_main_depth __attribute((visibility("hidden")));
+#define g_main_depth IA__g_main_depth
+
+extern __typeof (g_main_current_source) IA__g_main_current_source __attribute((visibility("hidden")));
+#define g_main_current_source IA__g_main_current_source
+
+extern __typeof (g_main_loop_get_context) IA__g_main_loop_get_context __attribute((visibility("hidden")));
+#define g_main_loop_get_context IA__g_main_loop_get_context
+
+extern __typeof (g_main_loop_is_running) IA__g_main_loop_is_running __attribute((visibility("hidden")));
+#define g_main_loop_is_running IA__g_main_loop_is_running
+
+extern __typeof (g_main_loop_new) IA__g_main_loop_new __attribute((visibility("hidden")));
+#define g_main_loop_new IA__g_main_loop_new
+
+extern __typeof (g_main_loop_quit) IA__g_main_loop_quit __attribute((visibility("hidden")));
+#define g_main_loop_quit IA__g_main_loop_quit
+
+extern __typeof (g_main_loop_ref) IA__g_main_loop_ref __attribute((visibility("hidden")));
+#define g_main_loop_ref IA__g_main_loop_ref
+
+extern __typeof (g_main_loop_run) IA__g_main_loop_run __attribute((visibility("hidden")));
+#define g_main_loop_run IA__g_main_loop_run
+
+extern __typeof (g_main_loop_unref) IA__g_main_loop_unref __attribute((visibility("hidden")));
+#define g_main_loop_unref IA__g_main_loop_unref
+
+extern __typeof (g_source_add_poll) IA__g_source_add_poll __attribute((visibility("hidden")));
+#define g_source_add_poll IA__g_source_add_poll
+
+extern __typeof (g_source_attach) IA__g_source_attach __attribute((visibility("hidden")));
+#define g_source_attach IA__g_source_attach
+
+extern __typeof (g_source_destroy) IA__g_source_destroy __attribute((visibility("hidden")));
+#define g_source_destroy IA__g_source_destroy
+
+extern __typeof (g_source_get_can_recurse) IA__g_source_get_can_recurse __attribute((visibility("hidden")));
+#define g_source_get_can_recurse IA__g_source_get_can_recurse
+
+extern __typeof (g_source_get_context) IA__g_source_get_context __attribute((visibility("hidden")));
+#define g_source_get_context IA__g_source_get_context
+
+extern __typeof (g_source_get_current_time) IA__g_source_get_current_time __attribute((visibility("hidden")));
+#define g_source_get_current_time IA__g_source_get_current_time
+
+extern __typeof (g_source_get_id) IA__g_source_get_id __attribute((visibility("hidden")));
+#define g_source_get_id IA__g_source_get_id
+
+extern __typeof (g_source_get_priority) IA__g_source_get_priority __attribute((visibility("hidden")));
+#define g_source_get_priority IA__g_source_get_priority
+
+extern __typeof (g_source_new) IA__g_source_new __attribute((visibility("hidden")));
+#define g_source_new IA__g_source_new
+
+extern __typeof (g_source_ref) IA__g_source_ref __attribute((visibility("hidden")));
+#define g_source_ref IA__g_source_ref
+
+extern __typeof (g_source_remove) IA__g_source_remove __attribute((visibility("hidden")));
+#define g_source_remove IA__g_source_remove
+
+extern __typeof (g_source_remove_by_funcs_user_data) IA__g_source_remove_by_funcs_user_data __attribute((visibility("hidden")));
+#define g_source_remove_by_funcs_user_data IA__g_source_remove_by_funcs_user_data
+
+extern __typeof (g_source_remove_by_user_data) IA__g_source_remove_by_user_data __attribute((visibility("hidden")));
+#define g_source_remove_by_user_data IA__g_source_remove_by_user_data
+
+extern __typeof (g_source_remove_poll) IA__g_source_remove_poll __attribute((visibility("hidden")));
+#define g_source_remove_poll IA__g_source_remove_poll
+
+extern __typeof (g_source_set_callback) IA__g_source_set_callback __attribute((visibility("hidden")));
+#define g_source_set_callback IA__g_source_set_callback
+
+extern __typeof (g_source_set_callback_indirect) IA__g_source_set_callback_indirect __attribute((visibility("hidden")));
+#define g_source_set_callback_indirect IA__g_source_set_callback_indirect
+
+extern __typeof (g_source_set_can_recurse) IA__g_source_set_can_recurse __attribute((visibility("hidden")));
+#define g_source_set_can_recurse IA__g_source_set_can_recurse
+
+extern __typeof (g_source_set_funcs) IA__g_source_set_funcs __attribute((visibility("hidden")));
+#define g_source_set_funcs IA__g_source_set_funcs
+
+extern __typeof (g_source_is_destroyed) IA__g_source_is_destroyed __attribute((visibility("hidden")));
+#define g_source_is_destroyed IA__g_source_is_destroyed
+
+extern __typeof (g_source_set_priority) IA__g_source_set_priority __attribute((visibility("hidden")));
+#define g_source_set_priority IA__g_source_set_priority
+
+extern __typeof (g_source_unref) IA__g_source_unref __attribute((visibility("hidden")));
+#define g_source_unref IA__g_source_unref
+
+extern __typeof (g_idle_add) IA__g_idle_add __attribute((visibility("hidden")));
+#define g_idle_add IA__g_idle_add
+
+extern __typeof (g_idle_add_full) IA__g_idle_add_full __attribute((visibility("hidden")));
+#define g_idle_add_full IA__g_idle_add_full
+
+extern __typeof (g_idle_remove_by_data) IA__g_idle_remove_by_data __attribute((visibility("hidden")));
+#define g_idle_remove_by_data IA__g_idle_remove_by_data
+
+extern __typeof (g_idle_source_new) IA__g_idle_source_new __attribute((visibility("hidden")));
+#define g_idle_source_new IA__g_idle_source_new
+
+extern __typeof (g_timeout_add) IA__g_timeout_add __attribute((visibility("hidden")));
+#define g_timeout_add IA__g_timeout_add
+
+extern __typeof (g_timeout_add_seconds) IA__g_timeout_add_seconds __attribute((visibility("hidden")));
+#define g_timeout_add_seconds IA__g_timeout_add_seconds
+
+extern __typeof (g_timeout_add_full) IA__g_timeout_add_full __attribute((visibility("hidden")));
+#define g_timeout_add_full IA__g_timeout_add_full
+
+extern __typeof (g_timeout_add_seconds_full) IA__g_timeout_add_seconds_full __attribute((visibility("hidden")));
+#define g_timeout_add_seconds_full IA__g_timeout_add_seconds_full
+
+extern __typeof (g_timeout_source_new) IA__g_timeout_source_new __attribute((visibility("hidden")));
+#define g_timeout_source_new IA__g_timeout_source_new
+
+extern __typeof (g_timeout_source_new_seconds) IA__g_timeout_source_new_seconds __attribute((visibility("hidden")));
+#define g_timeout_source_new_seconds IA__g_timeout_source_new_seconds
+
+#endif
+#endif
+#if IN_HEADER(__G_MAPPED_FILE_H__)
+#if IN_FILE(__G_MAPPED_FILE_C__)
+extern __typeof (g_mapped_file_new) IA__g_mapped_file_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_mapped_file_new IA__g_mapped_file_new
+
+extern __typeof (g_mapped_file_get_length) IA__g_mapped_file_get_length __attribute((visibility("hidden")));
+#define g_mapped_file_get_length IA__g_mapped_file_get_length
+
+extern __typeof (g_mapped_file_get_contents) IA__g_mapped_file_get_contents __attribute((visibility("hidden")));
+#define g_mapped_file_get_contents IA__g_mapped_file_get_contents
+
+extern __typeof (g_mapped_file_free) IA__g_mapped_file_free __attribute((visibility("hidden")));
+#define g_mapped_file_free IA__g_mapped_file_free
+
+#endif
+#endif
+#if IN_HEADER(__G_MARKUP_H__)
+#if IN_FILE(__G_MARKUP_C__)
+extern __typeof (g_markup_error_quark) IA__g_markup_error_quark __attribute((visibility("hidden")));
+#define g_markup_error_quark IA__g_markup_error_quark
+
+extern __typeof (g_markup_escape_text) IA__g_markup_escape_text __attribute((visibility("hidden")));
+#define g_markup_escape_text IA__g_markup_escape_text
+
+extern __typeof (g_markup_parse_context_end_parse) IA__g_markup_parse_context_end_parse __attribute((visibility("hidden")));
+#define g_markup_parse_context_end_parse IA__g_markup_parse_context_end_parse
+
+extern __typeof (g_markup_parse_context_free) IA__g_markup_parse_context_free __attribute((visibility("hidden")));
+#define g_markup_parse_context_free IA__g_markup_parse_context_free
+
+extern __typeof (g_markup_parse_context_get_element) IA__g_markup_parse_context_get_element __attribute((visibility("hidden")));
+#define g_markup_parse_context_get_element IA__g_markup_parse_context_get_element
+
+extern __typeof (g_markup_parse_context_get_element_stack) IA__g_markup_parse_context_get_element_stack __attribute((visibility("hidden")));
+#define g_markup_parse_context_get_element_stack IA__g_markup_parse_context_get_element_stack
+
+extern __typeof (g_markup_parse_context_get_position) IA__g_markup_parse_context_get_position __attribute((visibility("hidden")));
+#define g_markup_parse_context_get_position IA__g_markup_parse_context_get_position
+
+extern __typeof (g_markup_parse_context_get_user_data) IA__g_markup_parse_context_get_user_data __attribute((visibility("hidden")));
+#define g_markup_parse_context_get_user_data IA__g_markup_parse_context_get_user_data
+
+extern __typeof (g_markup_parse_context_new) IA__g_markup_parse_context_new __attribute((visibility("hidden")));
+#define g_markup_parse_context_new IA__g_markup_parse_context_new
+
+extern __typeof (g_markup_parse_context_parse) IA__g_markup_parse_context_parse __attribute((visibility("hidden")));
+#define g_markup_parse_context_parse IA__g_markup_parse_context_parse
+
+extern __typeof (g_markup_parse_context_push) IA__g_markup_parse_context_push __attribute((visibility("hidden")));
+#define g_markup_parse_context_push IA__g_markup_parse_context_push
+
+extern __typeof (g_markup_parse_context_pop) IA__g_markup_parse_context_pop __attribute((visibility("hidden")));
+#define g_markup_parse_context_pop IA__g_markup_parse_context_pop
+
+extern __typeof (g_markup_printf_escaped) IA__g_markup_printf_escaped __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
+#define g_markup_printf_escaped IA__g_markup_printf_escaped
+
+extern __typeof (g_markup_vprintf_escaped) IA__g_markup_vprintf_escaped __attribute((visibility("hidden")));
+#define g_markup_vprintf_escaped IA__g_markup_vprintf_escaped
+
+extern __typeof (g_markup_collect_attributes) IA__g_markup_collect_attributes __attribute((visibility("hidden")));
+#define g_markup_collect_attributes IA__g_markup_collect_attributes
+
+#endif
+#endif
+#if IN_HEADER(__G_MEM_H__)
+#if IN_FILE(__G_MEM_C__)
+extern __typeof (g_free) IA__g_free __attribute((visibility("hidden")));
+#define g_free IA__g_free
+
+extern __typeof (g_malloc) IA__g_malloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_malloc IA__g_malloc
+
+extern __typeof (g_malloc0) IA__g_malloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_malloc0 IA__g_malloc0
+
+extern __typeof (g_mem_is_system_malloc) IA__g_mem_is_system_malloc __attribute((visibility("hidden")));
+#define g_mem_is_system_malloc IA__g_mem_is_system_malloc
+
+extern __typeof (g_mem_profile) IA__g_mem_profile __attribute((visibility("hidden")));
+#define g_mem_profile IA__g_mem_profile
+
+extern __typeof (g_mem_set_vtable) IA__g_mem_set_vtable __attribute((visibility("hidden")));
+#define g_mem_set_vtable IA__g_mem_set_vtable
+
+extern __typeof (g_realloc) IA__g_realloc __attribute((visibility("hidden")));
+#define g_realloc IA__g_realloc
+
+extern __typeof (g_try_malloc) IA__g_try_malloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_try_malloc IA__g_try_malloc
+
+extern __typeof (g_try_malloc0) IA__g_try_malloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_try_malloc0 IA__g_try_malloc0
+
+extern __typeof (g_try_realloc) IA__g_try_realloc __attribute((visibility("hidden")));
+#define g_try_realloc IA__g_try_realloc
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_allocator_free) IA__g_allocator_free __attribute((visibility("hidden")));
+#define g_allocator_free IA__g_allocator_free
+
+extern __typeof (g_allocator_new) IA__g_allocator_new __attribute((visibility("hidden")));
+#define g_allocator_new IA__g_allocator_new
+
+extern __typeof (g_mem_chunk_alloc) IA__g_mem_chunk_alloc __attribute((visibility("hidden")));
+#define g_mem_chunk_alloc IA__g_mem_chunk_alloc
+
+extern __typeof (g_mem_chunk_alloc0) IA__g_mem_chunk_alloc0 __attribute((visibility("hidden")));
+#define g_mem_chunk_alloc0 IA__g_mem_chunk_alloc0
+
+extern __typeof (g_mem_chunk_clean) IA__g_mem_chunk_clean __attribute((visibility("hidden")));
+#define g_mem_chunk_clean IA__g_mem_chunk_clean
+
+extern __typeof (g_mem_chunk_destroy) IA__g_mem_chunk_destroy __attribute((visibility("hidden")));
+#define g_mem_chunk_destroy IA__g_mem_chunk_destroy
+
+extern __typeof (g_mem_chunk_free) IA__g_mem_chunk_free __attribute((visibility("hidden")));
+#define g_mem_chunk_free IA__g_mem_chunk_free
+
+extern __typeof (g_mem_chunk_info) IA__g_mem_chunk_info __attribute((visibility("hidden")));
+#define g_mem_chunk_info IA__g_mem_chunk_info
+
+extern __typeof (g_mem_chunk_new) IA__g_mem_chunk_new __attribute((visibility("hidden")));
+#define g_mem_chunk_new IA__g_mem_chunk_new
+
+extern __typeof (g_mem_chunk_print) IA__g_mem_chunk_print __attribute((visibility("hidden")));
+#define g_mem_chunk_print IA__g_mem_chunk_print
+
+extern __typeof (g_mem_chunk_reset) IA__g_mem_chunk_reset __attribute((visibility("hidden")));
+#define g_mem_chunk_reset IA__g_mem_chunk_reset
+
+extern __typeof (g_blow_chunks) IA__g_blow_chunks __attribute((visibility("hidden")));
+#define g_blow_chunks IA__g_blow_chunks
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_SLICE_H__)
+#if IN_FILE(__G_SLICE_C__)
+extern __typeof (g_slice_alloc) IA__g_slice_alloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_slice_alloc IA__g_slice_alloc
+
+extern __typeof (g_slice_alloc0) IA__g_slice_alloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_slice_alloc0 IA__g_slice_alloc0
+
+extern __typeof (g_slice_copy) IA__g_slice_copy __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_slice_copy IA__g_slice_copy
+
+extern __typeof (g_slice_free1) IA__g_slice_free1 __attribute((visibility("hidden")));
+#define g_slice_free1 IA__g_slice_free1
+
+extern __typeof (g_slice_free_chain_with_offset) IA__g_slice_free_chain_with_offset __attribute((visibility("hidden")));
+#define g_slice_free_chain_with_offset IA__g_slice_free_chain_with_offset
+
+extern __typeof (g_slice_set_config) IA__g_slice_set_config __attribute((visibility("hidden")));
+#define g_slice_set_config IA__g_slice_set_config
+
+extern __typeof (g_slice_get_config) IA__g_slice_get_config __attribute((visibility("hidden")));
+#define g_slice_get_config IA__g_slice_get_config
+
+extern __typeof (g_slice_get_config_state) IA__g_slice_get_config_state __attribute((visibility("hidden")));
+#define g_slice_get_config_state IA__g_slice_get_config_state
+
+#ifdef G_ENABLE_DEBUG
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_MESSAGES_H__)
+#if IN_FILE(__G_MESSAGES_C__)
+extern __typeof (g_printf_string_upper_bound) IA__g_printf_string_upper_bound __attribute((visibility("hidden")));
+#define g_printf_string_upper_bound IA__g_printf_string_upper_bound
+
+extern __typeof (g_log) IA__g_log __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
+#define g_log IA__g_log
+
+extern __typeof (g_log_default_handler) IA__g_log_default_handler __attribute((visibility("hidden")));
+#define g_log_default_handler IA__g_log_default_handler
+
+extern __typeof (g_log_remove_handler) IA__g_log_remove_handler __attribute((visibility("hidden")));
+#define g_log_remove_handler IA__g_log_remove_handler
+
+extern __typeof (g_log_set_always_fatal) IA__g_log_set_always_fatal __attribute((visibility("hidden")));
+#define g_log_set_always_fatal IA__g_log_set_always_fatal
+
+extern __typeof (g_log_set_default_handler) IA__g_log_set_default_handler __attribute((visibility("hidden")));
+#define g_log_set_default_handler IA__g_log_set_default_handler
+
+extern __typeof (g_log_set_fatal_mask) IA__g_log_set_fatal_mask __attribute((visibility("hidden")));
+#define g_log_set_fatal_mask IA__g_log_set_fatal_mask
+
+extern __typeof (g_log_set_handler) IA__g_log_set_handler __attribute((visibility("hidden")));
+#define g_log_set_handler IA__g_log_set_handler
+
+extern __typeof (g_logv) IA__g_logv __attribute((visibility("hidden")));
+#define g_logv IA__g_logv
+
+extern __typeof (g_return_if_fail_warning) IA__g_return_if_fail_warning __attribute((visibility("hidden")));
+#define g_return_if_fail_warning IA__g_return_if_fail_warning
+
+extern __typeof (g_warn_message) IA__g_warn_message __attribute((visibility("hidden")));
+#define g_warn_message IA__g_warn_message
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_assert_warning) IA__g_assert_warning __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assert_warning IA__g_assert_warning
+
+#endif
+extern __typeof (g_print) IA__g_print __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
+#define g_print IA__g_print
+
+extern __typeof (g_printerr) IA__g_printerr __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
+#define g_printerr IA__g_printerr
+
+extern __typeof (g_set_printerr_handler) IA__g_set_printerr_handler __attribute((visibility("hidden")));
+#define g_set_printerr_handler IA__g_set_printerr_handler
+
+extern __typeof (g_set_print_handler) IA__g_set_print_handler __attribute((visibility("hidden")));
+#define g_set_print_handler IA__g_set_print_handler
+
+#endif
+#endif
+#if IN_HEADER(__G_NODE_H__)
+#if IN_FILE(__G_NODE_C__)
+extern __typeof (g_node_child_index) IA__g_node_child_index __attribute((visibility("hidden")));
+#define g_node_child_index IA__g_node_child_index
+
+extern __typeof (g_node_child_position) IA__g_node_child_position __attribute((visibility("hidden")));
+#define g_node_child_position IA__g_node_child_position
+
+extern __typeof (g_node_children_foreach) IA__g_node_children_foreach __attribute((visibility("hidden")));
+#define g_node_children_foreach IA__g_node_children_foreach
+
+extern __typeof (g_node_copy) IA__g_node_copy __attribute((visibility("hidden")));
+#define g_node_copy IA__g_node_copy
+
+extern __typeof (g_node_copy_deep) IA__g_node_copy_deep __attribute((visibility("hidden")));
+#define g_node_copy_deep IA__g_node_copy_deep
+
+extern __typeof (g_node_depth) IA__g_node_depth __attribute((visibility("hidden")));
+#define g_node_depth IA__g_node_depth
+
+extern __typeof (g_node_destroy) IA__g_node_destroy __attribute((visibility("hidden")));
+#define g_node_destroy IA__g_node_destroy
+
+extern __typeof (g_node_find) IA__g_node_find __attribute((visibility("hidden")));
+#define g_node_find IA__g_node_find
+
+extern __typeof (g_node_find_child) IA__g_node_find_child __attribute((visibility("hidden")));
+#define g_node_find_child IA__g_node_find_child
+
+extern __typeof (g_node_first_sibling) IA__g_node_first_sibling __attribute((visibility("hidden")));
+#define g_node_first_sibling IA__g_node_first_sibling
+
+extern __typeof (g_node_get_root) IA__g_node_get_root __attribute((visibility("hidden")));
+#define g_node_get_root IA__g_node_get_root
+
+extern __typeof (g_node_insert) IA__g_node_insert __attribute((visibility("hidden")));
+#define g_node_insert IA__g_node_insert
+
+extern __typeof (g_node_insert_after) IA__g_node_insert_after __attribute((visibility("hidden")));
+#define g_node_insert_after IA__g_node_insert_after
+
+extern __typeof (g_node_insert_before) IA__g_node_insert_before __attribute((visibility("hidden")));
+#define g_node_insert_before IA__g_node_insert_before
+
+extern __typeof (g_node_is_ancestor) IA__g_node_is_ancestor __attribute((visibility("hidden")));
+#define g_node_is_ancestor IA__g_node_is_ancestor
+
+extern __typeof (g_node_last_child) IA__g_node_last_child __attribute((visibility("hidden")));
+#define g_node_last_child IA__g_node_last_child
+
+extern __typeof (g_node_last_sibling) IA__g_node_last_sibling __attribute((visibility("hidden")));
+#define g_node_last_sibling IA__g_node_last_sibling
+
+extern __typeof (g_node_max_height) IA__g_node_max_height __attribute((visibility("hidden")));
+#define g_node_max_height IA__g_node_max_height
+
+extern __typeof (g_node_n_children) IA__g_node_n_children __attribute((visibility("hidden")));
+#define g_node_n_children IA__g_node_n_children
+
+extern __typeof (g_node_new) IA__g_node_new __attribute((visibility("hidden")));
+#define g_node_new IA__g_node_new
+
+extern __typeof (g_node_n_nodes) IA__g_node_n_nodes __attribute((visibility("hidden")));
+#define g_node_n_nodes IA__g_node_n_nodes
+
+extern __typeof (g_node_nth_child) IA__g_node_nth_child __attribute((visibility("hidden")));
+#define g_node_nth_child IA__g_node_nth_child
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_node_pop_allocator) IA__g_node_pop_allocator __attribute((visibility("hidden")));
+#define g_node_pop_allocator IA__g_node_pop_allocator
+
+#endif
+extern __typeof (g_node_prepend) IA__g_node_prepend __attribute((visibility("hidden")));
+#define g_node_prepend IA__g_node_prepend
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_node_push_allocator) IA__g_node_push_allocator __attribute((visibility("hidden")));
+#define g_node_push_allocator IA__g_node_push_allocator
+
+#endif
+extern __typeof (g_node_reverse_children) IA__g_node_reverse_children __attribute((visibility("hidden")));
+#define g_node_reverse_children IA__g_node_reverse_children
+
+extern __typeof (g_node_traverse) IA__g_node_traverse __attribute((visibility("hidden")));
+#define g_node_traverse IA__g_node_traverse
+
+extern __typeof (g_node_unlink) IA__g_node_unlink __attribute((visibility("hidden")));
+#define g_node_unlink IA__g_node_unlink
+
+#endif
+#endif
+#if IN_HEADER(__G_OPTION_H__)
+#if IN_FILE(__G_OPTION_C__)
+extern __typeof (g_option_context_add_group) IA__g_option_context_add_group __attribute((visibility("hidden")));
+#define g_option_context_add_group IA__g_option_context_add_group
+
+extern __typeof (g_option_context_add_main_entries) IA__g_option_context_add_main_entries __attribute((visibility("hidden")));
+#define g_option_context_add_main_entries IA__g_option_context_add_main_entries
+
+extern __typeof (g_option_error_quark) IA__g_option_error_quark __attribute((visibility("hidden")));
+#define g_option_error_quark IA__g_option_error_quark
+
+extern __typeof (g_option_context_free) IA__g_option_context_free __attribute((visibility("hidden")));
+#define g_option_context_free IA__g_option_context_free
+
+extern __typeof (g_option_context_get_description) IA__g_option_context_get_description __attribute((visibility("hidden")));
+#define g_option_context_get_description IA__g_option_context_get_description
+
+extern __typeof (g_option_context_get_help_enabled) IA__g_option_context_get_help_enabled __attribute((visibility("hidden")));
+#define g_option_context_get_help_enabled IA__g_option_context_get_help_enabled
+
+extern __typeof (g_option_context_get_ignore_unknown_options) IA__g_option_context_get_ignore_unknown_options __attribute((visibility("hidden")));
+#define g_option_context_get_ignore_unknown_options IA__g_option_context_get_ignore_unknown_options
+
+extern __typeof (g_option_context_get_main_group) IA__g_option_context_get_main_group __attribute((visibility("hidden")));
+#define g_option_context_get_main_group IA__g_option_context_get_main_group
+
+extern __typeof (g_option_context_get_summary) IA__g_option_context_get_summary __attribute((visibility("hidden")));
+#define g_option_context_get_summary IA__g_option_context_get_summary
+
+extern __typeof (g_option_context_new) IA__g_option_context_new __attribute((visibility("hidden")));
+#define g_option_context_new IA__g_option_context_new
+
+extern __typeof (g_option_context_parse) IA__g_option_context_parse __attribute((visibility("hidden")));
+#define g_option_context_parse IA__g_option_context_parse
+
+extern __typeof (g_option_context_set_description) IA__g_option_context_set_description __attribute((visibility("hidden")));
+#define g_option_context_set_description IA__g_option_context_set_description
+
+extern __typeof (g_option_context_set_help_enabled) IA__g_option_context_set_help_enabled __attribute((visibility("hidden")));
+#define g_option_context_set_help_enabled IA__g_option_context_set_help_enabled
+
+extern __typeof (g_option_context_set_ignore_unknown_options) IA__g_option_context_set_ignore_unknown_options __attribute((visibility("hidden")));
+#define g_option_context_set_ignore_unknown_options IA__g_option_context_set_ignore_unknown_options
+
+extern __typeof (g_option_context_set_main_group) IA__g_option_context_set_main_group __attribute((visibility("hidden")));
+#define g_option_context_set_main_group IA__g_option_context_set_main_group
+
+extern __typeof (g_option_context_set_summary) IA__g_option_context_set_summary __attribute((visibility("hidden")));
+#define g_option_context_set_summary IA__g_option_context_set_summary
+
+extern __typeof (g_option_context_set_translate_func) IA__g_option_context_set_translate_func __attribute((visibility("hidden")));
+#define g_option_context_set_translate_func IA__g_option_context_set_translate_func
+
+extern __typeof (g_option_context_set_translation_domain) IA__g_option_context_set_translation_domain __attribute((visibility("hidden")));
+#define g_option_context_set_translation_domain IA__g_option_context_set_translation_domain
+
+extern __typeof (g_option_context_get_help) IA__g_option_context_get_help __attribute((visibility("hidden")));
+#define g_option_context_get_help IA__g_option_context_get_help
+
+extern __typeof (g_option_group_add_entries) IA__g_option_group_add_entries __attribute((visibility("hidden")));
+#define g_option_group_add_entries IA__g_option_group_add_entries
+
+extern __typeof (g_option_group_free) IA__g_option_group_free __attribute((visibility("hidden")));
+#define g_option_group_free IA__g_option_group_free
+
+extern __typeof (g_option_group_new) IA__g_option_group_new __attribute((visibility("hidden")));
+#define g_option_group_new IA__g_option_group_new
+
+extern __typeof (g_option_group_set_error_hook) IA__g_option_group_set_error_hook __attribute((visibility("hidden")));
+#define g_option_group_set_error_hook IA__g_option_group_set_error_hook
+
+extern __typeof (g_option_group_set_parse_hooks) IA__g_option_group_set_parse_hooks __attribute((visibility("hidden")));
+#define g_option_group_set_parse_hooks IA__g_option_group_set_parse_hooks
+
+extern __typeof (g_option_group_set_translate_func) IA__g_option_group_set_translate_func __attribute((visibility("hidden")));
+#define g_option_group_set_translate_func IA__g_option_group_set_translate_func
+
+extern __typeof (g_option_group_set_translation_domain) IA__g_option_group_set_translation_domain __attribute((visibility("hidden")));
+#define g_option_group_set_translation_domain IA__g_option_group_set_translation_domain
+
+#endif
+#endif
+#if IN_HEADER(__G_PATTERN_H__)
+#if IN_FILE(__G_PATTERN_C__)
+extern __typeof (g_pattern_match) IA__g_pattern_match __attribute((visibility("hidden")));
+#define g_pattern_match IA__g_pattern_match
+
+extern __typeof (g_pattern_match_simple) IA__g_pattern_match_simple __attribute((visibility("hidden")));
+#define g_pattern_match_simple IA__g_pattern_match_simple
+
+extern __typeof (g_pattern_match_string) IA__g_pattern_match_string __attribute((visibility("hidden")));
+#define g_pattern_match_string IA__g_pattern_match_string
+
+extern __typeof (g_pattern_spec_equal) IA__g_pattern_spec_equal __attribute((visibility("hidden")));
+#define g_pattern_spec_equal IA__g_pattern_spec_equal
+
+extern __typeof (g_pattern_spec_free) IA__g_pattern_spec_free __attribute((visibility("hidden")));
+#define g_pattern_spec_free IA__g_pattern_spec_free
+
+extern __typeof (g_pattern_spec_new) IA__g_pattern_spec_new __attribute((visibility("hidden")));
+#define g_pattern_spec_new IA__g_pattern_spec_new
+
+#endif
+#endif
+#if IN_HEADER(__G_POLL_H__)
+#if IN_FILE(__G_POLL_C__)
+extern __typeof (g_poll) IA__g_poll __attribute((visibility("hidden")));
+#define g_poll IA__g_poll
+
+#endif
+#endif
+#if IN_HEADER(__G_PRIMES_H__)
+#if IN_FILE(__G_PRIMES_C__)
+extern __typeof (g_spaced_primes_closest) IA__g_spaced_primes_closest __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_spaced_primes_closest IA__g_spaced_primes_closest
+
+#endif
+#endif
+#if IN_HEADER(__G_PRINTF_H__)
+#if IN_FILE(__G_PRINTF_C__)
+extern __typeof (g_fprintf) IA__g_fprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_fprintf IA__g_fprintf
+
+extern __typeof (g_printf) IA__g_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
+#define g_printf IA__g_printf
+
+extern __typeof (g_sprintf) IA__g_sprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_sprintf IA__g_sprintf
+
+extern __typeof (g_vasprintf) IA__g_vasprintf __attribute((visibility("hidden")));
+#define g_vasprintf IA__g_vasprintf
+
+extern __typeof (g_vfprintf) IA__g_vfprintf __attribute((visibility("hidden")));
+#define g_vfprintf IA__g_vfprintf
+
+extern __typeof (g_vprintf) IA__g_vprintf __attribute((visibility("hidden")));
+#define g_vprintf IA__g_vprintf
+
+extern __typeof (g_vsprintf) IA__g_vsprintf __attribute((visibility("hidden")));
+#define g_vsprintf IA__g_vsprintf
+
+#endif
+#endif
+#if IN_HEADER(__G_UTILS_H__)
+#if IN_FILE(__G_PRINTF_C__)
+extern __typeof (g_snprintf) IA__g_snprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
+#define g_snprintf IA__g_snprintf
+
+extern __typeof (g_vsnprintf) IA__g_vsnprintf __attribute((visibility("hidden")));
+#define g_vsnprintf IA__g_vsnprintf
+
+#endif
+#endif
+#if IN_HEADER(__G_QSORT_H__)
+#if IN_FILE(__G_QSORT_C__)
+extern __typeof (g_qsort_with_data) IA__g_qsort_with_data __attribute((visibility("hidden")));
+#define g_qsort_with_data IA__g_qsort_with_data
+
+#endif
+#endif
+#if IN_HEADER(__G_QUEUE_H__)
+#if IN_FILE(__G_QUEUE_C__)
+extern __typeof (g_queue_clear) IA__g_queue_clear __attribute((visibility("hidden")));
+#define g_queue_clear IA__g_queue_clear
+
+extern __typeof (g_queue_copy) IA__g_queue_copy __attribute((visibility("hidden")));
+#define g_queue_copy IA__g_queue_copy
+
+extern __typeof (g_queue_delete_link) IA__g_queue_delete_link __attribute((visibility("hidden")));
+#define g_queue_delete_link IA__g_queue_delete_link
+
+extern __typeof (g_queue_find) IA__g_queue_find __attribute((visibility("hidden")));
+#define g_queue_find IA__g_queue_find
+
+extern __typeof (g_queue_find_custom) IA__g_queue_find_custom __attribute((visibility("hidden")));
+#define g_queue_find_custom IA__g_queue_find_custom
+
+extern __typeof (g_queue_foreach) IA__g_queue_foreach __attribute((visibility("hidden")));
+#define g_queue_foreach IA__g_queue_foreach
+
+extern __typeof (g_queue_free) IA__g_queue_free __attribute((visibility("hidden")));
+#define g_queue_free IA__g_queue_free
+
+extern __typeof (g_queue_get_length) IA__g_queue_get_length __attribute((visibility("hidden")));
+#define g_queue_get_length IA__g_queue_get_length
+
+extern __typeof (g_queue_index) IA__g_queue_index __attribute((visibility("hidden")));
+#define g_queue_index IA__g_queue_index
+
+extern __typeof (g_queue_init) IA__g_queue_init __attribute((visibility("hidden")));
+#define g_queue_init IA__g_queue_init
+
+extern __typeof (g_queue_insert_after) IA__g_queue_insert_after __attribute((visibility("hidden")));
+#define g_queue_insert_after IA__g_queue_insert_after
+
+extern __typeof (g_queue_insert_before) IA__g_queue_insert_before __attribute((visibility("hidden")));
+#define g_queue_insert_before IA__g_queue_insert_before
+
+extern __typeof (g_queue_insert_sorted) IA__g_queue_insert_sorted __attribute((visibility("hidden")));
+#define g_queue_insert_sorted IA__g_queue_insert_sorted
+
+extern __typeof (g_queue_is_empty) IA__g_queue_is_empty __attribute((visibility("hidden")));
+#define g_queue_is_empty IA__g_queue_is_empty
+
+extern __typeof (g_queue_link_index) IA__g_queue_link_index __attribute((visibility("hidden")));
+#define g_queue_link_index IA__g_queue_link_index
+
+extern __typeof (g_queue_new) IA__g_queue_new __attribute((visibility("hidden")));
+#define g_queue_new IA__g_queue_new
+
+extern __typeof (g_queue_peek_head) IA__g_queue_peek_head __attribute((visibility("hidden")));
+#define g_queue_peek_head IA__g_queue_peek_head
+
+extern __typeof (g_queue_peek_head_link) IA__g_queue_peek_head_link __attribute((visibility("hidden")));
+#define g_queue_peek_head_link IA__g_queue_peek_head_link
+
+extern __typeof (g_queue_peek_nth) IA__g_queue_peek_nth __attribute((visibility("hidden")));
+#define g_queue_peek_nth IA__g_queue_peek_nth
+
+extern __typeof (g_queue_peek_nth_link) IA__g_queue_peek_nth_link __attribute((visibility("hidden")));
+#define g_queue_peek_nth_link IA__g_queue_peek_nth_link
+
+extern __typeof (g_queue_peek_tail) IA__g_queue_peek_tail __attribute((visibility("hidden")));
+#define g_queue_peek_tail IA__g_queue_peek_tail
+
+extern __typeof (g_queue_peek_tail_link) IA__g_queue_peek_tail_link __attribute((visibility("hidden")));
+#define g_queue_peek_tail_link IA__g_queue_peek_tail_link
+
+extern __typeof (g_queue_pop_head) IA__g_queue_pop_head __attribute((visibility("hidden")));
+#define g_queue_pop_head IA__g_queue_pop_head
+
+extern __typeof (g_queue_pop_head_link) IA__g_queue_pop_head_link __attribute((visibility("hidden")));
+#define g_queue_pop_head_link IA__g_queue_pop_head_link
+
+extern __typeof (g_queue_pop_nth) IA__g_queue_pop_nth __attribute((visibility("hidden")));
+#define g_queue_pop_nth IA__g_queue_pop_nth
+
+extern __typeof (g_queue_pop_nth_link) IA__g_queue_pop_nth_link __attribute((visibility("hidden")));
+#define g_queue_pop_nth_link IA__g_queue_pop_nth_link
+
+extern __typeof (g_queue_pop_tail) IA__g_queue_pop_tail __attribute((visibility("hidden")));
+#define g_queue_pop_tail IA__g_queue_pop_tail
+
+extern __typeof (g_queue_pop_tail_link) IA__g_queue_pop_tail_link __attribute((visibility("hidden")));
+#define g_queue_pop_tail_link IA__g_queue_pop_tail_link
+
+extern __typeof (g_queue_push_head) IA__g_queue_push_head __attribute((visibility("hidden")));
+#define g_queue_push_head IA__g_queue_push_head
+
+extern __typeof (g_queue_push_head_link) IA__g_queue_push_head_link __attribute((visibility("hidden")));
+#define g_queue_push_head_link IA__g_queue_push_head_link
+
+extern __typeof (g_queue_push_nth) IA__g_queue_push_nth __attribute((visibility("hidden")));
+#define g_queue_push_nth IA__g_queue_push_nth
+
+extern __typeof (g_queue_push_nth_link) IA__g_queue_push_nth_link __attribute((visibility("hidden")));
+#define g_queue_push_nth_link IA__g_queue_push_nth_link
+
+extern __typeof (g_queue_push_tail) IA__g_queue_push_tail __attribute((visibility("hidden")));
+#define g_queue_push_tail IA__g_queue_push_tail
+
+extern __typeof (g_queue_push_tail_link) IA__g_queue_push_tail_link __attribute((visibility("hidden")));
+#define g_queue_push_tail_link IA__g_queue_push_tail_link
+
+extern __typeof (g_queue_remove) IA__g_queue_remove __attribute((visibility("hidden")));
+#define g_queue_remove IA__g_queue_remove
+
+extern __typeof (g_queue_remove_all) IA__g_queue_remove_all __attribute((visibility("hidden")));
+#define g_queue_remove_all IA__g_queue_remove_all
+
+extern __typeof (g_queue_reverse) IA__g_queue_reverse __attribute((visibility("hidden")));
+#define g_queue_reverse IA__g_queue_reverse
+
+extern __typeof (g_queue_sort) IA__g_queue_sort __attribute((visibility("hidden")));
+#define g_queue_sort IA__g_queue_sort
+
+extern __typeof (g_queue_unlink) IA__g_queue_unlink __attribute((visibility("hidden")));
+#define g_queue_unlink IA__g_queue_unlink
+
+#endif
+#endif
+#if IN_HEADER(__G_RAND_H__)
+#if IN_FILE(__G_RAND_C__)
+extern __typeof (g_rand_copy) IA__g_rand_copy __attribute((visibility("hidden")));
+#define g_rand_copy IA__g_rand_copy
+
+extern __typeof (g_rand_double) IA__g_rand_double __attribute((visibility("hidden")));
+#define g_rand_double IA__g_rand_double
+
+extern __typeof (g_rand_double_range) IA__g_rand_double_range __attribute((visibility("hidden")));
+#define g_rand_double_range IA__g_rand_double_range
+
+extern __typeof (g_rand_free) IA__g_rand_free __attribute((visibility("hidden")));
+#define g_rand_free IA__g_rand_free
+
+extern __typeof (g_rand_int) IA__g_rand_int __attribute((visibility("hidden")));
+#define g_rand_int IA__g_rand_int
+
+extern __typeof (g_rand_int_range) IA__g_rand_int_range __attribute((visibility("hidden")));
+#define g_rand_int_range IA__g_rand_int_range
+
+extern __typeof (g_rand_new) IA__g_rand_new __attribute((visibility("hidden")));
+#define g_rand_new IA__g_rand_new
+
+extern __typeof (g_rand_new_with_seed) IA__g_rand_new_with_seed __attribute((visibility("hidden")));
+#define g_rand_new_with_seed IA__g_rand_new_with_seed
+
+extern __typeof (g_rand_new_with_seed_array) IA__g_rand_new_with_seed_array __attribute((visibility("hidden")));
+#define g_rand_new_with_seed_array IA__g_rand_new_with_seed_array
+
+extern __typeof (g_random_double) IA__g_random_double __attribute((visibility("hidden")));
+#define g_random_double IA__g_random_double
+
+extern __typeof (g_random_double_range) IA__g_random_double_range __attribute((visibility("hidden")));
+#define g_random_double_range IA__g_random_double_range
+
+extern __typeof (g_random_int) IA__g_random_int __attribute((visibility("hidden")));
+#define g_random_int IA__g_random_int
+
+extern __typeof (g_random_int_range) IA__g_random_int_range __attribute((visibility("hidden")));
+#define g_random_int_range IA__g_random_int_range
+
+extern __typeof (g_random_set_seed) IA__g_random_set_seed __attribute((visibility("hidden")));
+#define g_random_set_seed IA__g_random_set_seed
+
+extern __typeof (g_rand_set_seed) IA__g_rand_set_seed __attribute((visibility("hidden")));
+#define g_rand_set_seed IA__g_rand_set_seed
+
+extern __typeof (g_rand_set_seed_array) IA__g_rand_set_seed_array __attribute((visibility("hidden")));
+#define g_rand_set_seed_array IA__g_rand_set_seed_array
+
+#endif
+#endif
+#if IN_HEADER(__G_REL_H__)
+#if IN_FILE(__G_REL_C__)
+extern __typeof (g_relation_count) IA__g_relation_count __attribute((visibility("hidden")));
+#define g_relation_count IA__g_relation_count
+
+extern __typeof (g_relation_delete) IA__g_relation_delete __attribute((visibility("hidden")));
+#define g_relation_delete IA__g_relation_delete
+
+extern __typeof (g_relation_destroy) IA__g_relation_destroy __attribute((visibility("hidden")));
+#define g_relation_destroy IA__g_relation_destroy
+
+extern __typeof (g_relation_exists) IA__g_relation_exists __attribute((visibility("hidden")));
+#define g_relation_exists IA__g_relation_exists
+
+extern __typeof (g_relation_index) IA__g_relation_index __attribute((visibility("hidden")));
+#define g_relation_index IA__g_relation_index
+
+extern __typeof (g_relation_insert) IA__g_relation_insert __attribute((visibility("hidden")));
+#define g_relation_insert IA__g_relation_insert
+
+extern __typeof (g_relation_new) IA__g_relation_new __attribute((visibility("hidden")));
+#define g_relation_new IA__g_relation_new
+
+extern __typeof (g_relation_print) IA__g_relation_print __attribute((visibility("hidden")));
+#define g_relation_print IA__g_relation_print
+
+extern __typeof (g_relation_select) IA__g_relation_select __attribute((visibility("hidden")));
+#define g_relation_select IA__g_relation_select
+
+extern __typeof (g_tuples_destroy) IA__g_tuples_destroy __attribute((visibility("hidden")));
+#define g_tuples_destroy IA__g_tuples_destroy
+
+extern __typeof (g_tuples_index) IA__g_tuples_index __attribute((visibility("hidden")));
+#define g_tuples_index IA__g_tuples_index
+
+#endif
+#endif
+#if IN_HEADER(__G_SCANNER_H__)
+#if IN_FILE(__G_SCANNER_C__)
+extern __typeof (g_scanner_cur_line) IA__g_scanner_cur_line __attribute((visibility("hidden")));
+#define g_scanner_cur_line IA__g_scanner_cur_line
+
+extern __typeof (g_scanner_cur_position) IA__g_scanner_cur_position __attribute((visibility("hidden")));
+#define g_scanner_cur_position IA__g_scanner_cur_position
+
+extern __typeof (g_scanner_cur_token) IA__g_scanner_cur_token __attribute((visibility("hidden")));
+#define g_scanner_cur_token IA__g_scanner_cur_token
+
+extern __typeof (g_scanner_cur_value) IA__g_scanner_cur_value __attribute((visibility("hidden")));
+#define g_scanner_cur_value IA__g_scanner_cur_value
+
+extern __typeof (g_scanner_destroy) IA__g_scanner_destroy __attribute((visibility("hidden")));
+#define g_scanner_destroy IA__g_scanner_destroy
+
+extern __typeof (g_scanner_eof) IA__g_scanner_eof __attribute((visibility("hidden")));
+#define g_scanner_eof IA__g_scanner_eof
+
+extern __typeof (g_scanner_error) IA__g_scanner_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_scanner_error IA__g_scanner_error
+
+extern __typeof (g_scanner_get_next_token) IA__g_scanner_get_next_token __attribute((visibility("hidden")));
+#define g_scanner_get_next_token IA__g_scanner_get_next_token
+
+extern __typeof (g_scanner_input_file) IA__g_scanner_input_file __attribute((visibility("hidden")));
+#define g_scanner_input_file IA__g_scanner_input_file
+
+extern __typeof (g_scanner_input_text) IA__g_scanner_input_text __attribute((visibility("hidden")));
+#define g_scanner_input_text IA__g_scanner_input_text
+
+extern __typeof (g_scanner_lookup_symbol) IA__g_scanner_lookup_symbol __attribute((visibility("hidden")));
+#define g_scanner_lookup_symbol IA__g_scanner_lookup_symbol
+
+extern __typeof (g_scanner_new) IA__g_scanner_new __attribute((visibility("hidden")));
+#define g_scanner_new IA__g_scanner_new
+
+extern __typeof (g_scanner_peek_next_token) IA__g_scanner_peek_next_token __attribute((visibility("hidden")));
+#define g_scanner_peek_next_token IA__g_scanner_peek_next_token
+
+extern __typeof (g_scanner_scope_add_symbol) IA__g_scanner_scope_add_symbol __attribute((visibility("hidden")));
+#define g_scanner_scope_add_symbol IA__g_scanner_scope_add_symbol
+
+extern __typeof (g_scanner_scope_foreach_symbol) IA__g_scanner_scope_foreach_symbol __attribute((visibility("hidden")));
+#define g_scanner_scope_foreach_symbol IA__g_scanner_scope_foreach_symbol
+
+extern __typeof (g_scanner_scope_lookup_symbol) IA__g_scanner_scope_lookup_symbol __attribute((visibility("hidden")));
+#define g_scanner_scope_lookup_symbol IA__g_scanner_scope_lookup_symbol
+
+extern __typeof (g_scanner_scope_remove_symbol) IA__g_scanner_scope_remove_symbol __attribute((visibility("hidden")));
+#define g_scanner_scope_remove_symbol IA__g_scanner_scope_remove_symbol
+
+extern __typeof (g_scanner_set_scope) IA__g_scanner_set_scope __attribute((visibility("hidden")));
+#define g_scanner_set_scope IA__g_scanner_set_scope
+
+extern __typeof (g_scanner_sync_file_offset) IA__g_scanner_sync_file_offset __attribute((visibility("hidden")));
+#define g_scanner_sync_file_offset IA__g_scanner_sync_file_offset
+
+extern __typeof (g_scanner_unexp_token) IA__g_scanner_unexp_token __attribute((visibility("hidden")));
+#define g_scanner_unexp_token IA__g_scanner_unexp_token
+
+extern __typeof (g_scanner_warn) IA__g_scanner_warn __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_scanner_warn IA__g_scanner_warn
+
+#endif
+#endif
+#if IN_HEADER(__G_SEQUENCE_H__)
+#if IN_FILE(__G_SEQUENCE_C__)
+extern __typeof (g_sequence_new) IA__g_sequence_new __attribute((visibility("hidden")));
+#define g_sequence_new IA__g_sequence_new
+
+extern __typeof (g_sequence_free) IA__g_sequence_free __attribute((visibility("hidden")));
+#define g_sequence_free IA__g_sequence_free
+
+extern __typeof (g_sequence_get_length) IA__g_sequence_get_length __attribute((visibility("hidden")));
+#define g_sequence_get_length IA__g_sequence_get_length
+
+extern __typeof (g_sequence_foreach) IA__g_sequence_foreach __attribute((visibility("hidden")));
+#define g_sequence_foreach IA__g_sequence_foreach
+
+extern __typeof (g_sequence_foreach_range) IA__g_sequence_foreach_range __attribute((visibility("hidden")));
+#define g_sequence_foreach_range IA__g_sequence_foreach_range
+
+extern __typeof (g_sequence_sort) IA__g_sequence_sort __attribute((visibility("hidden")));
+#define g_sequence_sort IA__g_sequence_sort
+
+extern __typeof (g_sequence_sort_iter) IA__g_sequence_sort_iter __attribute((visibility("hidden")));
+#define g_sequence_sort_iter IA__g_sequence_sort_iter
+
+extern __typeof (g_sequence_get_begin_iter) IA__g_sequence_get_begin_iter __attribute((visibility("hidden")));
+#define g_sequence_get_begin_iter IA__g_sequence_get_begin_iter
+
+extern __typeof (g_sequence_get_end_iter) IA__g_sequence_get_end_iter __attribute((visibility("hidden")));
+#define g_sequence_get_end_iter IA__g_sequence_get_end_iter
+
+extern __typeof (g_sequence_get_iter_at_pos) IA__g_sequence_get_iter_at_pos __attribute((visibility("hidden")));
+#define g_sequence_get_iter_at_pos IA__g_sequence_get_iter_at_pos
+
+extern __typeof (g_sequence_append) IA__g_sequence_append __attribute((visibility("hidden")));
+#define g_sequence_append IA__g_sequence_append
+
+extern __typeof (g_sequence_prepend) IA__g_sequence_prepend __attribute((visibility("hidden")));
+#define g_sequence_prepend IA__g_sequence_prepend
+
+extern __typeof (g_sequence_insert_before) IA__g_sequence_insert_before __attribute((visibility("hidden")));
+#define g_sequence_insert_before IA__g_sequence_insert_before
+
+extern __typeof (g_sequence_move) IA__g_sequence_move __attribute((visibility("hidden")));
+#define g_sequence_move IA__g_sequence_move
+
+extern __typeof (g_sequence_swap) IA__g_sequence_swap __attribute((visibility("hidden")));
+#define g_sequence_swap IA__g_sequence_swap
+
+extern __typeof (g_sequence_insert_sorted) IA__g_sequence_insert_sorted __attribute((visibility("hidden")));
+#define g_sequence_insert_sorted IA__g_sequence_insert_sorted
+
+extern __typeof (g_sequence_insert_sorted_iter) IA__g_sequence_insert_sorted_iter __attribute((visibility("hidden")));
+#define g_sequence_insert_sorted_iter IA__g_sequence_insert_sorted_iter
+
+extern __typeof (g_sequence_sort_changed) IA__g_sequence_sort_changed __attribute((visibility("hidden")));
+#define g_sequence_sort_changed IA__g_sequence_sort_changed
+
+extern __typeof (g_sequence_sort_changed_iter) IA__g_sequence_sort_changed_iter __attribute((visibility("hidden")));
+#define g_sequence_sort_changed_iter IA__g_sequence_sort_changed_iter
+
+extern __typeof (g_sequence_remove) IA__g_sequence_remove __attribute((visibility("hidden")));
+#define g_sequence_remove IA__g_sequence_remove
+
+extern __typeof (g_sequence_remove_range) IA__g_sequence_remove_range __attribute((visibility("hidden")));
+#define g_sequence_remove_range IA__g_sequence_remove_range
+
+extern __typeof (g_sequence_move_range) IA__g_sequence_move_range __attribute((visibility("hidden")));
+#define g_sequence_move_range IA__g_sequence_move_range
+
+extern __typeof (g_sequence_search) IA__g_sequence_search __attribute((visibility("hidden")));
+#define g_sequence_search IA__g_sequence_search
+
+extern __typeof (g_sequence_search_iter) IA__g_sequence_search_iter __attribute((visibility("hidden")));
+#define g_sequence_search_iter IA__g_sequence_search_iter
+
+extern __typeof (g_sequence_get) IA__g_sequence_get __attribute((visibility("hidden")));
+#define g_sequence_get IA__g_sequence_get
+
+extern __typeof (g_sequence_set) IA__g_sequence_set __attribute((visibility("hidden")));
+#define g_sequence_set IA__g_sequence_set
+
+extern __typeof (g_sequence_iter_is_begin) IA__g_sequence_iter_is_begin __attribute((visibility("hidden")));
+#define g_sequence_iter_is_begin IA__g_sequence_iter_is_begin
+
+extern __typeof (g_sequence_iter_is_end) IA__g_sequence_iter_is_end __attribute((visibility("hidden")));
+#define g_sequence_iter_is_end IA__g_sequence_iter_is_end
+
+extern __typeof (g_sequence_iter_next) IA__g_sequence_iter_next __attribute((visibility("hidden")));
+#define g_sequence_iter_next IA__g_sequence_iter_next
+
+extern __typeof (g_sequence_iter_prev) IA__g_sequence_iter_prev __attribute((visibility("hidden")));
+#define g_sequence_iter_prev IA__g_sequence_iter_prev
+
+extern __typeof (g_sequence_iter_get_position) IA__g_sequence_iter_get_position __attribute((visibility("hidden")));
+#define g_sequence_iter_get_position IA__g_sequence_iter_get_position
+
+extern __typeof (g_sequence_iter_move) IA__g_sequence_iter_move __attribute((visibility("hidden")));
+#define g_sequence_iter_move IA__g_sequence_iter_move
+
+extern __typeof (g_sequence_iter_get_sequence) IA__g_sequence_iter_get_sequence __attribute((visibility("hidden")));
+#define g_sequence_iter_get_sequence IA__g_sequence_iter_get_sequence
+
+extern __typeof (g_sequence_iter_compare) IA__g_sequence_iter_compare __attribute((visibility("hidden")));
+#define g_sequence_iter_compare IA__g_sequence_iter_compare
+
+extern __typeof (g_sequence_range_get_midpoint) IA__g_sequence_range_get_midpoint __attribute((visibility("hidden")));
+#define g_sequence_range_get_midpoint IA__g_sequence_range_get_midpoint
+
+#endif
+#endif
+#if IN_HEADER(__G_SHELL_H__)
+#if IN_FILE(__G_SHELL_C__)
+extern __typeof (g_shell_error_quark) IA__g_shell_error_quark __attribute((visibility("hidden")));
+#define g_shell_error_quark IA__g_shell_error_quark
+
+extern __typeof (g_shell_parse_argv) IA__g_shell_parse_argv __attribute((visibility("hidden")));
+#define g_shell_parse_argv IA__g_shell_parse_argv
+
+extern __typeof (g_shell_quote) IA__g_shell_quote __attribute((visibility("hidden")));
+#define g_shell_quote IA__g_shell_quote
+
+extern __typeof (g_shell_unquote) IA__g_shell_unquote __attribute((visibility("hidden")));
+#define g_shell_unquote IA__g_shell_unquote
+
+#endif
+#endif
+#if IN_HEADER(__G_SLIST_H__)
+#if IN_FILE(__G_SLIST_C__)
+extern __typeof (g_slist_alloc) IA__g_slist_alloc __attribute((visibility("hidden")));
+#define g_slist_alloc IA__g_slist_alloc
+
+extern __typeof (g_slist_append) IA__g_slist_append __attribute((visibility("hidden")));
+#define g_slist_append IA__g_slist_append
+
+extern __typeof (g_slist_concat) IA__g_slist_concat __attribute((visibility("hidden")));
+#define g_slist_concat IA__g_slist_concat
+
+extern __typeof (g_slist_copy) IA__g_slist_copy __attribute((visibility("hidden")));
+#define g_slist_copy IA__g_slist_copy
+
+extern __typeof (g_slist_delete_link) IA__g_slist_delete_link __attribute((visibility("hidden")));
+#define g_slist_delete_link IA__g_slist_delete_link
+
+extern __typeof (g_slist_find) IA__g_slist_find __attribute((visibility("hidden")));
+#define g_slist_find IA__g_slist_find
+
+extern __typeof (g_slist_find_custom) IA__g_slist_find_custom __attribute((visibility("hidden")));
+#define g_slist_find_custom IA__g_slist_find_custom
+
+extern __typeof (g_slist_foreach) IA__g_slist_foreach __attribute((visibility("hidden")));
+#define g_slist_foreach IA__g_slist_foreach
+
+extern __typeof (g_slist_free) IA__g_slist_free __attribute((visibility("hidden")));
+#define g_slist_free IA__g_slist_free
+
+extern __typeof (g_slist_free_1) IA__g_slist_free_1 __attribute((visibility("hidden")));
+#define g_slist_free_1 IA__g_slist_free_1
+
+extern __typeof (g_slist_index) IA__g_slist_index __attribute((visibility("hidden")));
+#define g_slist_index IA__g_slist_index
+
+extern __typeof (g_slist_insert) IA__g_slist_insert __attribute((visibility("hidden")));
+#define g_slist_insert IA__g_slist_insert
+
+extern __typeof (g_slist_insert_before) IA__g_slist_insert_before __attribute((visibility("hidden")));
+#define g_slist_insert_before IA__g_slist_insert_before
+
+extern __typeof (g_slist_insert_sorted) IA__g_slist_insert_sorted __attribute((visibility("hidden")));
+#define g_slist_insert_sorted IA__g_slist_insert_sorted
+
+extern __typeof (g_slist_insert_sorted_with_data) IA__g_slist_insert_sorted_with_data __attribute((visibility("hidden")));
+#define g_slist_insert_sorted_with_data IA__g_slist_insert_sorted_with_data
+
+extern __typeof (g_slist_last) IA__g_slist_last __attribute((visibility("hidden")));
+#define g_slist_last IA__g_slist_last
+
+extern __typeof (g_slist_length) IA__g_slist_length __attribute((visibility("hidden")));
+#define g_slist_length IA__g_slist_length
+
+extern __typeof (g_slist_nth) IA__g_slist_nth __attribute((visibility("hidden")));
+#define g_slist_nth IA__g_slist_nth
+
+extern __typeof (g_slist_nth_data) IA__g_slist_nth_data __attribute((visibility("hidden")));
+#define g_slist_nth_data IA__g_slist_nth_data
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_slist_pop_allocator) IA__g_slist_pop_allocator __attribute((visibility("hidden")));
+#define g_slist_pop_allocator IA__g_slist_pop_allocator
+
+#endif
+extern __typeof (g_slist_position) IA__g_slist_position __attribute((visibility("hidden")));
+#define g_slist_position IA__g_slist_position
+
+extern __typeof (g_slist_prepend) IA__g_slist_prepend __attribute((visibility("hidden")));
+#define g_slist_prepend IA__g_slist_prepend
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_slist_push_allocator) IA__g_slist_push_allocator __attribute((visibility("hidden")));
+#define g_slist_push_allocator IA__g_slist_push_allocator
+
+#endif
+extern __typeof (g_slist_remove) IA__g_slist_remove __attribute((visibility("hidden")));
+#define g_slist_remove IA__g_slist_remove
+
+extern __typeof (g_slist_remove_all) IA__g_slist_remove_all __attribute((visibility("hidden")));
+#define g_slist_remove_all IA__g_slist_remove_all
+
+extern __typeof (g_slist_remove_link) IA__g_slist_remove_link __attribute((visibility("hidden")));
+#define g_slist_remove_link IA__g_slist_remove_link
+
+extern __typeof (g_slist_reverse) IA__g_slist_reverse __attribute((visibility("hidden")));
+#define g_slist_reverse IA__g_slist_reverse
+
+extern __typeof (g_slist_sort) IA__g_slist_sort __attribute((visibility("hidden")));
+#define g_slist_sort IA__g_slist_sort
+
+extern __typeof (g_slist_sort_with_data) IA__g_slist_sort_with_data __attribute((visibility("hidden")));
+#define g_slist_sort_with_data IA__g_slist_sort_with_data
+
+#endif
+#endif
+#if IN_HEADER(__G_SPAWN_H__)
+#if IN_FILE(__G_SPAWN_C__)
+#ifndef _WIN64
+extern __typeof (g_spawn_async) IA__g_spawn_async __attribute((visibility("hidden")));
+#define g_spawn_async IA__g_spawn_async
+
+extern __typeof (g_spawn_async_with_pipes) IA__g_spawn_async_with_pipes __attribute((visibility("hidden")));
+#define g_spawn_async_with_pipes IA__g_spawn_async_with_pipes
+
+#endif
+extern __typeof (g_spawn_close_pid) IA__g_spawn_close_pid __attribute((visibility("hidden")));
+#define g_spawn_close_pid IA__g_spawn_close_pid
+
+#ifndef _WIN64
+extern __typeof (g_spawn_command_line_async) IA__g_spawn_command_line_async __attribute((visibility("hidden")));
+#define g_spawn_command_line_async IA__g_spawn_command_line_async
+
+extern __typeof (g_spawn_command_line_sync) IA__g_spawn_command_line_sync __attribute((visibility("hidden")));
+#define g_spawn_command_line_sync IA__g_spawn_command_line_sync
+
+#endif
+extern __typeof (g_spawn_error_quark) IA__g_spawn_error_quark __attribute((visibility("hidden")));
+#define g_spawn_error_quark IA__g_spawn_error_quark
+
+#ifndef _WIN64
+extern __typeof (g_spawn_sync) IA__g_spawn_sync __attribute((visibility("hidden")));
+#define g_spawn_sync IA__g_spawn_sync
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_spawn_async_utf8) IA__g_spawn_async_utf8 __attribute((visibility("hidden")));
+#define g_spawn_async_utf8 IA__g_spawn_async_utf8
+
+extern __typeof (g_spawn_async_with_pipes_utf8) IA__g_spawn_async_with_pipes_utf8 __attribute((visibility("hidden")));
+#define g_spawn_async_with_pipes_utf8 IA__g_spawn_async_with_pipes_utf8
+
+extern __typeof (g_spawn_command_line_async_utf8) IA__g_spawn_command_line_async_utf8 __attribute((visibility("hidden")));
+#define g_spawn_command_line_async_utf8 IA__g_spawn_command_line_async_utf8
+
+extern __typeof (g_spawn_command_line_sync_utf8) IA__g_spawn_command_line_sync_utf8 __attribute((visibility("hidden")));
+#define g_spawn_command_line_sync_utf8 IA__g_spawn_command_line_sync_utf8
+
+extern __typeof (g_spawn_sync_utf8) IA__g_spawn_sync_utf8 __attribute((visibility("hidden")));
+#define g_spawn_sync_utf8 IA__g_spawn_sync_utf8
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_STDIO_H__)
+#if IN_FILE(__G_STDIO_C__)
+#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
+extern __typeof (g_chmod) IA__g_chmod __attribute((visibility("hidden")));
+#define g_chmod IA__g_chmod
+
+extern __typeof (g_open) IA__g_open __attribute((visibility("hidden")));
+#define g_open IA__g_open
+
+extern __typeof (g_creat) IA__g_creat __attribute((visibility("hidden")));
+#define g_creat IA__g_creat
+
+extern __typeof (g_rename) IA__g_rename __attribute((visibility("hidden")));
+#define g_rename IA__g_rename
+
+extern __typeof (g_mkdir) IA__g_mkdir __attribute((visibility("hidden")));
+#define g_mkdir IA__g_mkdir
+
+extern __typeof (g_stat) IA__g_stat __attribute((visibility("hidden")));
+#define g_stat IA__g_stat
+
+extern __typeof (g_lstat) IA__g_lstat __attribute((visibility("hidden")));
+#define g_lstat IA__g_lstat
+
+extern __typeof (g_remove) IA__g_remove __attribute((visibility("hidden")));
+#define g_remove IA__g_remove
+
+extern __typeof (g_fopen) IA__g_fopen __attribute((visibility("hidden")));
+#define g_fopen IA__g_fopen
+
+extern __typeof (g_freopen) IA__g_freopen __attribute((visibility("hidden")));
+#define g_freopen IA__g_freopen
+
+extern __typeof (g_utime) IA__g_utime __attribute((visibility("hidden")));
+#define g_utime IA__g_utime
+
+#endif
+extern __typeof (g_access) IA__g_access __attribute((visibility("hidden")));
+#define g_access IA__g_access
+
+extern __typeof (g_chdir) IA__g_chdir __attribute((visibility("hidden")));
+#define g_chdir IA__g_chdir
+
+extern __typeof (g_unlink) IA__g_unlink __attribute((visibility("hidden")));
+#define g_unlink IA__g_unlink
+
+extern __typeof (g_rmdir) IA__g_rmdir __attribute((visibility("hidden")));
+#define g_rmdir IA__g_rmdir
+
+#endif
+#endif
+#if IN_HEADER(__G_STRFUNCS_H__)
+#if IN_FILE(__G_STRFUNCS_C__)
+extern __typeof (g_ascii_digit_value) IA__g_ascii_digit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_ascii_digit_value IA__g_ascii_digit_value
+
+extern __typeof (g_ascii_dtostr) IA__g_ascii_dtostr __attribute((visibility("hidden")));
+#define g_ascii_dtostr IA__g_ascii_dtostr
+
+extern __typeof (g_ascii_formatd) IA__g_ascii_formatd __attribute((visibility("hidden")));
+#define g_ascii_formatd IA__g_ascii_formatd
+
+extern __typeof (g_ascii_strdown) IA__g_ascii_strdown __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_ascii_strdown IA__g_ascii_strdown
+
+extern __typeof (g_ascii_strtod) IA__g_ascii_strtod __attribute((visibility("hidden")));
+#define g_ascii_strtod IA__g_ascii_strtod
+
+extern __typeof (g_ascii_strtoull) IA__g_ascii_strtoull __attribute((visibility("hidden")));
+#define g_ascii_strtoull IA__g_ascii_strtoull
+
+extern __typeof (g_ascii_strtoll) IA__g_ascii_strtoll __attribute((visibility("hidden")));
+#define g_ascii_strtoll IA__g_ascii_strtoll
+
+extern __typeof (g_ascii_strup) IA__g_ascii_strup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_ascii_strup IA__g_ascii_strup
+
+extern __typeof (g_ascii_tolower) IA__g_ascii_tolower __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_ascii_tolower IA__g_ascii_tolower
+
+extern __typeof (g_ascii_toupper) IA__g_ascii_toupper __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_ascii_toupper IA__g_ascii_toupper
+
+extern __typeof (g_ascii_xdigit_value) IA__g_ascii_xdigit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_ascii_xdigit_value IA__g_ascii_xdigit_value
+
+extern __typeof (g_ascii_strcasecmp) IA__g_ascii_strcasecmp __attribute((visibility("hidden")));
+#define g_ascii_strcasecmp IA__g_ascii_strcasecmp
+
+extern __typeof (g_ascii_strncasecmp) IA__g_ascii_strncasecmp __attribute((visibility("hidden")));
+#define g_ascii_strncasecmp IA__g_ascii_strncasecmp
+
+extern __typeof (g_memdup) IA__g_memdup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_memdup IA__g_memdup
+
+extern __typeof (g_stpcpy) IA__g_stpcpy __attribute((visibility("hidden")));
+#define g_stpcpy IA__g_stpcpy
+
+extern __typeof (g_strcanon) IA__g_strcanon __attribute((visibility("hidden")));
+#define g_strcanon IA__g_strcanon
+
+extern __typeof (g_strchomp) IA__g_strchomp __attribute((visibility("hidden")));
+#define g_strchomp IA__g_strchomp
+
+extern __typeof (g_strchug) IA__g_strchug __attribute((visibility("hidden")));
+#define g_strchug IA__g_strchug
+
+extern __typeof (g_strcompress) IA__g_strcompress __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strcompress IA__g_strcompress
+
+extern __typeof (g_strconcat) IA__g_strconcat __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+#define g_strconcat IA__g_strconcat
+
+extern __typeof (g_strdelimit) IA__g_strdelimit __attribute((visibility("hidden")));
+#define g_strdelimit IA__g_strdelimit
+
+extern __typeof (g_strdup) IA__g_strdup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strdup IA__g_strdup
+
+extern __typeof (g_strdup_printf) IA__g_strdup_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2) G_GNUC_MALLOC;
+#define g_strdup_printf IA__g_strdup_printf
+
+extern __typeof (g_strdupv) IA__g_strdupv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strdupv IA__g_strdupv
+
+extern __typeof (g_strdup_vprintf) IA__g_strdup_vprintf __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strdup_vprintf IA__g_strdup_vprintf
+
+extern __typeof (g_strerror) IA__g_strerror __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_strerror IA__g_strerror
+
+extern __typeof (g_strescape) IA__g_strescape __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strescape IA__g_strescape
+
+extern __typeof (g_strfreev) IA__g_strfreev __attribute((visibility("hidden")));
+#define g_strfreev IA__g_strfreev
+
+extern __typeof (g_str_has_prefix) IA__g_str_has_prefix __attribute((visibility("hidden")));
+#define g_str_has_prefix IA__g_str_has_prefix
+
+extern __typeof (g_str_has_suffix) IA__g_str_has_suffix __attribute((visibility("hidden")));
+#define g_str_has_suffix IA__g_str_has_suffix
+
+extern __typeof (g_strjoin) IA__g_strjoin __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+#define g_strjoin IA__g_strjoin
+
+extern __typeof (g_strjoinv) IA__g_strjoinv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strjoinv IA__g_strjoinv
+
+extern __typeof (g_strlcat) IA__g_strlcat __attribute((visibility("hidden")));
+#define g_strlcat IA__g_strlcat
+
+extern __typeof (g_strlcpy) IA__g_strlcpy __attribute((visibility("hidden")));
+#define g_strlcpy IA__g_strlcpy
+
+extern __typeof (g_strndup) IA__g_strndup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strndup IA__g_strndup
+
+extern __typeof (g_strnfill) IA__g_strnfill __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strnfill IA__g_strnfill
+
+extern __typeof (g_strreverse) IA__g_strreverse __attribute((visibility("hidden")));
+#define g_strreverse IA__g_strreverse
+
+extern __typeof (g_strrstr) IA__g_strrstr __attribute((visibility("hidden")));
+#define g_strrstr IA__g_strrstr
+
+extern __typeof (g_strrstr_len) IA__g_strrstr_len __attribute((visibility("hidden")));
+#define g_strrstr_len IA__g_strrstr_len
+
+extern __typeof (g_strsignal) IA__g_strsignal __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_strsignal IA__g_strsignal
+
+extern __typeof (g_strsplit) IA__g_strsplit __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strsplit IA__g_strsplit
+
+extern __typeof (g_strsplit_set) IA__g_strsplit_set __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_strsplit_set IA__g_strsplit_set
+
+extern __typeof (g_strstr_len) IA__g_strstr_len __attribute((visibility("hidden")));
+#define g_strstr_len IA__g_strstr_len
+
+extern __typeof (g_strtod) IA__g_strtod __attribute((visibility("hidden")));
+#define g_strtod IA__g_strtod
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_strcasecmp) IA__g_strcasecmp __attribute((visibility("hidden")));
+#define g_strcasecmp IA__g_strcasecmp
+
+extern __typeof (g_strncasecmp) IA__g_strncasecmp __attribute((visibility("hidden")));
+#define g_strncasecmp IA__g_strncasecmp
+
+extern __typeof (g_strup) IA__g_strup __attribute((visibility("hidden")));
+#define g_strup IA__g_strup
+
+extern __typeof (g_strdown) IA__g_strdown __attribute((visibility("hidden")));
+#define g_strdown IA__g_strdown
+
+#endif
+extern __typeof (g_strv_length) IA__g_strv_length __attribute((visibility("hidden")));
+#define g_strv_length IA__g_strv_length
+
+extern __typeof (g_strip_context) IA__g_strip_context __attribute((visibility("hidden"))) G_GNUC_FORMAT(1);
+#define g_strip_context IA__g_strip_context
+
+extern __typeof (g_dgettext) IA__g_dgettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(2);
+#define g_dgettext IA__g_dgettext
+
+extern __typeof (g_dngettext) IA__g_dngettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(3);
+#define g_dngettext IA__g_dngettext
+
+extern __typeof (g_dpgettext) IA__g_dpgettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(2);
+#define g_dpgettext IA__g_dpgettext
+
+extern __typeof (g_dpgettext2) IA__g_dpgettext2 __attribute((visibility("hidden"))) G_GNUC_FORMAT(3);
+#define g_dpgettext2 IA__g_dpgettext2
+
+#endif
+#endif
+#if IN_HEADER(__G_URI_FUNCS_H__)
+#if IN_FILE(__G_URI_FUNCS_C__)
+extern __typeof (g_uri_unescape_string) IA__g_uri_unescape_string __attribute((visibility("hidden")));
+#define g_uri_unescape_string IA__g_uri_unescape_string
+
+extern __typeof (g_uri_unescape_segment) IA__g_uri_unescape_segment __attribute((visibility("hidden")));
+#define g_uri_unescape_segment IA__g_uri_unescape_segment
+
+extern __typeof (g_uri_parse_scheme) IA__g_uri_parse_scheme __attribute((visibility("hidden")));
+#define g_uri_parse_scheme IA__g_uri_parse_scheme
+
+extern __typeof (g_uri_escape_string) IA__g_uri_escape_string __attribute((visibility("hidden")));
+#define g_uri_escape_string IA__g_uri_escape_string
+
+#endif
+#endif
+#if IN_HEADER(__G_STRING_H__)
+#if IN_FILE(__G_STRING_C__)
+extern __typeof (g_string_append) IA__g_string_append __attribute((visibility("hidden")));
+#define g_string_append IA__g_string_append
+
+extern __typeof (g_string_append_len) IA__g_string_append_len __attribute((visibility("hidden")));
+#define g_string_append_len IA__g_string_append_len
+
+extern __typeof (g_string_append_printf) IA__g_string_append_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_string_append_printf IA__g_string_append_printf
+
+extern __typeof (g_string_append_unichar) IA__g_string_append_unichar __attribute((visibility("hidden")));
+#define g_string_append_unichar IA__g_string_append_unichar
+
+extern __typeof (g_string_append_vprintf) IA__g_string_append_vprintf __attribute((visibility("hidden")));
+#define g_string_append_vprintf IA__g_string_append_vprintf
+
+extern __typeof (g_string_ascii_down) IA__g_string_ascii_down __attribute((visibility("hidden")));
+#define g_string_ascii_down IA__g_string_ascii_down
+
+extern __typeof (g_string_ascii_up) IA__g_string_ascii_up __attribute((visibility("hidden")));
+#define g_string_ascii_up IA__g_string_ascii_up
+
+extern __typeof (g_string_assign) IA__g_string_assign __attribute((visibility("hidden")));
+#define g_string_assign IA__g_string_assign
+
+extern __typeof (g_string_chunk_free) IA__g_string_chunk_free __attribute((visibility("hidden")));
+#define g_string_chunk_free IA__g_string_chunk_free
+
+extern __typeof (g_string_chunk_clear) IA__g_string_chunk_clear __attribute((visibility("hidden")));
+#define g_string_chunk_clear IA__g_string_chunk_clear
+
+extern __typeof (g_string_chunk_insert) IA__g_string_chunk_insert __attribute((visibility("hidden")));
+#define g_string_chunk_insert IA__g_string_chunk_insert
+
+extern __typeof (g_string_chunk_insert_const) IA__g_string_chunk_insert_const __attribute((visibility("hidden")));
+#define g_string_chunk_insert_const IA__g_string_chunk_insert_const
+
+extern __typeof (g_string_chunk_insert_len) IA__g_string_chunk_insert_len __attribute((visibility("hidden")));
+#define g_string_chunk_insert_len IA__g_string_chunk_insert_len
+
+extern __typeof (g_string_chunk_new) IA__g_string_chunk_new __attribute((visibility("hidden")));
+#define g_string_chunk_new IA__g_string_chunk_new
+
+extern __typeof (g_string_equal) IA__g_string_equal __attribute((visibility("hidden")));
+#define g_string_equal IA__g_string_equal
+
+extern __typeof (g_string_erase) IA__g_string_erase __attribute((visibility("hidden")));
+#define g_string_erase IA__g_string_erase
+
+extern __typeof (g_string_free) IA__g_string_free __attribute((visibility("hidden")));
+#define g_string_free IA__g_string_free
+
+extern __typeof (g_string_hash) IA__g_string_hash __attribute((visibility("hidden")));
+#define g_string_hash IA__g_string_hash
+
+extern __typeof (g_string_insert) IA__g_string_insert __attribute((visibility("hidden")));
+#define g_string_insert IA__g_string_insert
+
+extern __typeof (g_string_insert_c) IA__g_string_insert_c __attribute((visibility("hidden")));
+#define g_string_insert_c IA__g_string_insert_c
+
+extern __typeof (g_string_insert_len) IA__g_string_insert_len __attribute((visibility("hidden")));
+#define g_string_insert_len IA__g_string_insert_len
+
+extern __typeof (g_string_insert_unichar) IA__g_string_insert_unichar __attribute((visibility("hidden")));
+#define g_string_insert_unichar IA__g_string_insert_unichar
+
+extern __typeof (g_string_new) IA__g_string_new __attribute((visibility("hidden")));
+#define g_string_new IA__g_string_new
+
+extern __typeof (g_string_new_len) IA__g_string_new_len __attribute((visibility("hidden")));
+#define g_string_new_len IA__g_string_new_len
+
+extern __typeof (g_string_overwrite) IA__g_string_overwrite __attribute((visibility("hidden")));
+#define g_string_overwrite IA__g_string_overwrite
+
+extern __typeof (g_string_overwrite_len) IA__g_string_overwrite_len __attribute((visibility("hidden")));
+#define g_string_overwrite_len IA__g_string_overwrite_len
+
+extern __typeof (g_string_prepend) IA__g_string_prepend __attribute((visibility("hidden")));
+#define g_string_prepend IA__g_string_prepend
+
+extern __typeof (g_string_prepend_c) IA__g_string_prepend_c __attribute((visibility("hidden")));
+#define g_string_prepend_c IA__g_string_prepend_c
+
+extern __typeof (g_string_prepend_len) IA__g_string_prepend_len __attribute((visibility("hidden")));
+#define g_string_prepend_len IA__g_string_prepend_len
+
+extern __typeof (g_string_prepend_unichar) IA__g_string_prepend_unichar __attribute((visibility("hidden")));
+#define g_string_prepend_unichar IA__g_string_prepend_unichar
+
+extern __typeof (g_string_printf) IA__g_string_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
+#define g_string_printf IA__g_string_printf
+
+extern __typeof (g_string_set_size) IA__g_string_set_size __attribute((visibility("hidden")));
+#define g_string_set_size IA__g_string_set_size
+
+extern __typeof (g_string_sized_new) IA__g_string_sized_new __attribute((visibility("hidden")));
+#define g_string_sized_new IA__g_string_sized_new
+
+extern __typeof (g_string_truncate) IA__g_string_truncate __attribute((visibility("hidden")));
+#define g_string_truncate IA__g_string_truncate
+
+extern __typeof (g_string_append_uri_escaped) IA__g_string_append_uri_escaped __attribute((visibility("hidden")));
+#define g_string_append_uri_escaped IA__g_string_append_uri_escaped
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_string_down) IA__g_string_down __attribute((visibility("hidden")));
+#define g_string_down IA__g_string_down
+
+extern __typeof (g_string_up) IA__g_string_up __attribute((visibility("hidden")));
+#define g_string_up IA__g_string_up
+
+#endif
+extern __typeof (g_string_vprintf) IA__g_string_vprintf __attribute((visibility("hidden")));
+#define g_string_vprintf IA__g_string_vprintf
+
+extern __typeof (g_str_equal) IA__g_str_equal __attribute((visibility("hidden")));
+#define g_str_equal IA__g_str_equal
+
+extern __typeof (g_str_hash) IA__g_str_hash __attribute((visibility("hidden")));
+#define g_str_hash IA__g_str_hash
+
+#endif
+#endif
+#if IN_HEADER(__G_THREAD_H__)
+#if IN_FILE(__G_THREAD_C__)
+extern __typeof (g_once_impl) IA__g_once_impl __attribute((visibility("hidden")));
+#define g_once_impl IA__g_once_impl
+
+extern __typeof (g_once_init_enter_impl) IA__g_once_init_enter_impl __attribute((visibility("hidden")));
+#define g_once_init_enter_impl IA__g_once_init_enter_impl
+
+extern __typeof (g_once_init_leave) IA__g_once_init_leave __attribute((visibility("hidden")));
+#define g_once_init_leave IA__g_once_init_leave
+
+extern __typeof (g_thread_create_full) IA__g_thread_create_full __attribute((visibility("hidden")));
+#define g_thread_create_full IA__g_thread_create_full
+
+extern __typeof (g_thread_error_quark) IA__g_thread_error_quark __attribute((visibility("hidden")));
+#define g_thread_error_quark IA__g_thread_error_quark
+
+extern __typeof (g_thread_exit) IA__g_thread_exit __attribute((visibility("hidden")));
+#define g_thread_exit IA__g_thread_exit
+
+extern __typeof (g_thread_join) IA__g_thread_join __attribute((visibility("hidden")));
+#define g_thread_join IA__g_thread_join
+
+extern __typeof (g_thread_self) IA__g_thread_self __attribute((visibility("hidden")));
+#define g_thread_self IA__g_thread_self
+
+extern __typeof (g_thread_set_priority) IA__g_thread_set_priority __attribute((visibility("hidden")));
+#define g_thread_set_priority IA__g_thread_set_priority
+
+extern __typeof (g_static_mutex_free) IA__g_static_mutex_free __attribute((visibility("hidden")));
+#define g_static_mutex_free IA__g_static_mutex_free
+
+extern __typeof (g_static_mutex_get_mutex_impl) IA__g_static_mutex_get_mutex_impl __attribute((visibility("hidden")));
+#define g_static_mutex_get_mutex_impl IA__g_static_mutex_get_mutex_impl
+
+extern __typeof (g_static_mutex_init) IA__g_static_mutex_init __attribute((visibility("hidden")));
+#define g_static_mutex_init IA__g_static_mutex_init
+
+extern __typeof (g_static_private_free) IA__g_static_private_free __attribute((visibility("hidden")));
+#define g_static_private_free IA__g_static_private_free
+
+extern __typeof (g_static_private_get) IA__g_static_private_get __attribute((visibility("hidden")));
+#define g_static_private_get IA__g_static_private_get
+
+extern __typeof (g_static_private_init) IA__g_static_private_init __attribute((visibility("hidden")));
+#define g_static_private_init IA__g_static_private_init
+
+extern __typeof (g_static_private_set) IA__g_static_private_set __attribute((visibility("hidden")));
+#define g_static_private_set IA__g_static_private_set
+
+extern __typeof (g_static_rec_mutex_free) IA__g_static_rec_mutex_free __attribute((visibility("hidden")));
+#define g_static_rec_mutex_free IA__g_static_rec_mutex_free
+
+extern __typeof (g_static_rec_mutex_init) IA__g_static_rec_mutex_init __attribute((visibility("hidden")));
+#define g_static_rec_mutex_init IA__g_static_rec_mutex_init
+
+extern __typeof (g_static_rec_mutex_lock) IA__g_static_rec_mutex_lock __attribute((visibility("hidden")));
+#define g_static_rec_mutex_lock IA__g_static_rec_mutex_lock
+
+extern __typeof (g_static_rec_mutex_lock_full) IA__g_static_rec_mutex_lock_full __attribute((visibility("hidden")));
+#define g_static_rec_mutex_lock_full IA__g_static_rec_mutex_lock_full
+
+extern __typeof (g_static_rec_mutex_trylock) IA__g_static_rec_mutex_trylock __attribute((visibility("hidden")));
+#define g_static_rec_mutex_trylock IA__g_static_rec_mutex_trylock
+
+extern __typeof (g_static_rec_mutex_unlock) IA__g_static_rec_mutex_unlock __attribute((visibility("hidden")));
+#define g_static_rec_mutex_unlock IA__g_static_rec_mutex_unlock
+
+extern __typeof (g_static_rec_mutex_unlock_full) IA__g_static_rec_mutex_unlock_full __attribute((visibility("hidden")));
+#define g_static_rec_mutex_unlock_full IA__g_static_rec_mutex_unlock_full
+
+extern __typeof (g_static_rw_lock_free) IA__g_static_rw_lock_free __attribute((visibility("hidden")));
+#define g_static_rw_lock_free IA__g_static_rw_lock_free
+
+extern __typeof (g_static_rw_lock_init) IA__g_static_rw_lock_init __attribute((visibility("hidden")));
+#define g_static_rw_lock_init IA__g_static_rw_lock_init
+
+extern __typeof (g_static_rw_lock_reader_lock) IA__g_static_rw_lock_reader_lock __attribute((visibility("hidden")));
+#define g_static_rw_lock_reader_lock IA__g_static_rw_lock_reader_lock
+
+extern __typeof (g_static_rw_lock_reader_trylock) IA__g_static_rw_lock_reader_trylock __attribute((visibility("hidden")));
+#define g_static_rw_lock_reader_trylock IA__g_static_rw_lock_reader_trylock
+
+extern __typeof (g_static_rw_lock_reader_unlock) IA__g_static_rw_lock_reader_unlock __attribute((visibility("hidden")));
+#define g_static_rw_lock_reader_unlock IA__g_static_rw_lock_reader_unlock
+
+extern __typeof (g_static_rw_lock_writer_lock) IA__g_static_rw_lock_writer_lock __attribute((visibility("hidden")));
+#define g_static_rw_lock_writer_lock IA__g_static_rw_lock_writer_lock
+
+extern __typeof (g_static_rw_lock_writer_trylock) IA__g_static_rw_lock_writer_trylock __attribute((visibility("hidden")));
+#define g_static_rw_lock_writer_trylock IA__g_static_rw_lock_writer_trylock
+
+extern __typeof (g_static_rw_lock_writer_unlock) IA__g_static_rw_lock_writer_unlock __attribute((visibility("hidden")));
+#define g_static_rw_lock_writer_unlock IA__g_static_rw_lock_writer_unlock
+
+extern __typeof (g_thread_foreach) IA__g_thread_foreach __attribute((visibility("hidden")));
+#define g_thread_foreach IA__g_thread_foreach
+
+extern __typeof (g_thread_get_initialized) IA__g_thread_get_initialized __attribute((visibility("hidden")));
+#define g_thread_get_initialized IA__g_thread_get_initialized
+
+#endif
+#endif
+#if IN_HEADER(__G_THREADPOOL_H__)
+#if IN_FILE(__G_THREADPOOL_C__)
+extern __typeof (g_thread_pool_free) IA__g_thread_pool_free __attribute((visibility("hidden")));
+#define g_thread_pool_free IA__g_thread_pool_free
+
+extern __typeof (g_thread_pool_get_max_threads) IA__g_thread_pool_get_max_threads __attribute((visibility("hidden")));
+#define g_thread_pool_get_max_threads IA__g_thread_pool_get_max_threads
+
+extern __typeof (g_thread_pool_get_max_unused_threads) IA__g_thread_pool_get_max_unused_threads __attribute((visibility("hidden")));
+#define g_thread_pool_get_max_unused_threads IA__g_thread_pool_get_max_unused_threads
+
+extern __typeof (g_thread_pool_get_max_idle_time) IA__g_thread_pool_get_max_idle_time __attribute((visibility("hidden")));
+#define g_thread_pool_get_max_idle_time IA__g_thread_pool_get_max_idle_time
+
+extern __typeof (g_thread_pool_get_num_threads) IA__g_thread_pool_get_num_threads __attribute((visibility("hidden")));
+#define g_thread_pool_get_num_threads IA__g_thread_pool_get_num_threads
+
+extern __typeof (g_thread_pool_get_num_unused_threads) IA__g_thread_pool_get_num_unused_threads __attribute((visibility("hidden")));
+#define g_thread_pool_get_num_unused_threads IA__g_thread_pool_get_num_unused_threads
+
+extern __typeof (g_thread_pool_new) IA__g_thread_pool_new __attribute((visibility("hidden")));
+#define g_thread_pool_new IA__g_thread_pool_new
+
+extern __typeof (g_thread_pool_push) IA__g_thread_pool_push __attribute((visibility("hidden")));
+#define g_thread_pool_push IA__g_thread_pool_push
+
+extern __typeof (g_thread_pool_set_max_threads) IA__g_thread_pool_set_max_threads __attribute((visibility("hidden")));
+#define g_thread_pool_set_max_threads IA__g_thread_pool_set_max_threads
+
+extern __typeof (g_thread_pool_set_max_unused_threads) IA__g_thread_pool_set_max_unused_threads __attribute((visibility("hidden")));
+#define g_thread_pool_set_max_unused_threads IA__g_thread_pool_set_max_unused_threads
+
+extern __typeof (g_thread_pool_set_max_idle_time) IA__g_thread_pool_set_max_idle_time __attribute((visibility("hidden")));
+#define g_thread_pool_set_max_idle_time IA__g_thread_pool_set_max_idle_time
+
+extern __typeof (g_thread_pool_stop_unused_threads) IA__g_thread_pool_stop_unused_threads __attribute((visibility("hidden")));
+#define g_thread_pool_stop_unused_threads IA__g_thread_pool_stop_unused_threads
+
+extern __typeof (g_thread_pool_unprocessed) IA__g_thread_pool_unprocessed __attribute((visibility("hidden")));
+#define g_thread_pool_unprocessed IA__g_thread_pool_unprocessed
+
+extern __typeof (g_thread_pool_set_sort_function) IA__g_thread_pool_set_sort_function __attribute((visibility("hidden")));
+#define g_thread_pool_set_sort_function IA__g_thread_pool_set_sort_function
+
+#endif
+#endif
+#if IN_HEADER(__G_TEST_UTILS_H__)
+#if IN_FILE(__G_TEST_UTILS_C__)
+extern __typeof (g_assertion_message) IA__g_assertion_message __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assertion_message IA__g_assertion_message
+
+extern __typeof (g_assertion_message_cmpnum) IA__g_assertion_message_cmpnum __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assertion_message_cmpnum IA__g_assertion_message_cmpnum
+
+extern __typeof (g_assertion_message_cmpstr) IA__g_assertion_message_cmpstr __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assertion_message_cmpstr IA__g_assertion_message_cmpstr
+
+extern __typeof (g_assertion_message_expr) IA__g_assertion_message_expr __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assertion_message_expr IA__g_assertion_message_expr
+
+extern __typeof (g_assertion_message_error) IA__g_assertion_message_error __attribute((visibility("hidden"))) G_GNUC_NORETURN;
+#define g_assertion_message_error IA__g_assertion_message_error
+
+extern __typeof (g_strcmp0) IA__g_strcmp0 __attribute((visibility("hidden")));
+#define g_strcmp0 IA__g_strcmp0
+
+extern __typeof (g_test_add_data_func) IA__g_test_add_data_func __attribute((visibility("hidden")));
+#define g_test_add_data_func IA__g_test_add_data_func
+
+extern __typeof (g_test_add_func) IA__g_test_add_func __attribute((visibility("hidden")));
+#define g_test_add_func IA__g_test_add_func
+
+extern __typeof (g_test_add_vtable) IA__g_test_add_vtable __attribute((visibility("hidden")));
+#define g_test_add_vtable IA__g_test_add_vtable
+
+extern __typeof (g_test_bug) IA__g_test_bug __attribute((visibility("hidden")));
+#define g_test_bug IA__g_test_bug
+
+extern __typeof (g_test_bug_base) IA__g_test_bug_base __attribute((visibility("hidden")));
+#define g_test_bug_base IA__g_test_bug_base
+
+extern __typeof (g_test_create_case) IA__g_test_create_case __attribute((visibility("hidden")));
+#define g_test_create_case IA__g_test_create_case
+
+extern __typeof (g_test_create_suite) IA__g_test_create_suite __attribute((visibility("hidden")));
+#define g_test_create_suite IA__g_test_create_suite
+
+extern __typeof (g_test_get_root) IA__g_test_get_root __attribute((visibility("hidden")));
+#define g_test_get_root IA__g_test_get_root
+
+extern __typeof (g_test_init) IA__g_test_init __attribute((visibility("hidden")));
+#define g_test_init IA__g_test_init
+
+extern __typeof (g_test_log_buffer_free) IA__g_test_log_buffer_free __attribute((visibility("hidden")));
+#define g_test_log_buffer_free IA__g_test_log_buffer_free
+
+extern __typeof (g_test_log_buffer_new) IA__g_test_log_buffer_new __attribute((visibility("hidden")));
+#define g_test_log_buffer_new IA__g_test_log_buffer_new
+
+extern __typeof (g_test_log_buffer_pop) IA__g_test_log_buffer_pop __attribute((visibility("hidden")));
+#define g_test_log_buffer_pop IA__g_test_log_buffer_pop
+
+extern __typeof (g_test_log_buffer_push) IA__g_test_log_buffer_push __attribute((visibility("hidden")));
+#define g_test_log_buffer_push IA__g_test_log_buffer_push
+
+extern __typeof (g_test_log_msg_free) IA__g_test_log_msg_free __attribute((visibility("hidden")));
+#define g_test_log_msg_free IA__g_test_log_msg_free
+
+extern __typeof (g_test_log_type_name) IA__g_test_log_type_name __attribute((visibility("hidden")));
+#define g_test_log_type_name IA__g_test_log_type_name
+
+extern __typeof (g_test_maximized_result) IA__g_test_maximized_result __attribute((visibility("hidden")));
+#define g_test_maximized_result IA__g_test_maximized_result
+
+extern __typeof (g_test_message) IA__g_test_message __attribute((visibility("hidden")));
+#define g_test_message IA__g_test_message
+
+extern __typeof (g_test_minimized_result) IA__g_test_minimized_result __attribute((visibility("hidden")));
+#define g_test_minimized_result IA__g_test_minimized_result
+
+extern __typeof (g_test_queue_destroy) IA__g_test_queue_destroy __attribute((visibility("hidden")));
+#define g_test_queue_destroy IA__g_test_queue_destroy
+
+extern __typeof (g_test_queue_free) IA__g_test_queue_free __attribute((visibility("hidden")));
+#define g_test_queue_free IA__g_test_queue_free
+
+extern __typeof (g_test_rand_double) IA__g_test_rand_double __attribute((visibility("hidden")));
+#define g_test_rand_double IA__g_test_rand_double
+
+extern __typeof (g_test_rand_double_range) IA__g_test_rand_double_range __attribute((visibility("hidden")));
+#define g_test_rand_double_range IA__g_test_rand_double_range
+
+extern __typeof (g_test_rand_int) IA__g_test_rand_int __attribute((visibility("hidden")));
+#define g_test_rand_int IA__g_test_rand_int
+
+extern __typeof (g_test_rand_int_range) IA__g_test_rand_int_range __attribute((visibility("hidden")));
+#define g_test_rand_int_range IA__g_test_rand_int_range
+
+extern __typeof (g_test_run) IA__g_test_run __attribute((visibility("hidden")));
+#define g_test_run IA__g_test_run
+
+extern __typeof (g_test_run_suite) IA__g_test_run_suite __attribute((visibility("hidden")));
+#define g_test_run_suite IA__g_test_run_suite
+
+extern __typeof (g_test_suite_add) IA__g_test_suite_add __attribute((visibility("hidden")));
+#define g_test_suite_add IA__g_test_suite_add
+
+extern __typeof (g_test_suite_add_suite) IA__g_test_suite_add_suite __attribute((visibility("hidden")));
+#define g_test_suite_add_suite IA__g_test_suite_add_suite
+
+extern __typeof (g_test_timer_elapsed) IA__g_test_timer_elapsed __attribute((visibility("hidden")));
+#define g_test_timer_elapsed IA__g_test_timer_elapsed
+
+extern __typeof (g_test_timer_last) IA__g_test_timer_last __attribute((visibility("hidden")));
+#define g_test_timer_last IA__g_test_timer_last
+
+extern __typeof (g_test_timer_start) IA__g_test_timer_start __attribute((visibility("hidden")));
+#define g_test_timer_start IA__g_test_timer_start
+
+extern __typeof (g_test_trap_assertions) IA__g_test_trap_assertions __attribute((visibility("hidden")));
+#define g_test_trap_assertions IA__g_test_trap_assertions
+
+extern __typeof (g_test_trap_fork) IA__g_test_trap_fork __attribute((visibility("hidden")));
+#define g_test_trap_fork IA__g_test_trap_fork
+
+extern __typeof (g_test_trap_has_passed) IA__g_test_trap_has_passed __attribute((visibility("hidden")));
+#define g_test_trap_has_passed IA__g_test_trap_has_passed
+
+extern __typeof (g_test_trap_reached_timeout) IA__g_test_trap_reached_timeout __attribute((visibility("hidden")));
+#define g_test_trap_reached_timeout IA__g_test_trap_reached_timeout
+
+#endif
+#endif
+#if IN_HEADER(__G_TIMER_H__)
+#if IN_FILE(__G_TIMER_C__)
+extern __typeof (g_timer_continue) IA__g_timer_continue __attribute((visibility("hidden")));
+#define g_timer_continue IA__g_timer_continue
+
+extern __typeof (g_timer_destroy) IA__g_timer_destroy __attribute((visibility("hidden")));
+#define g_timer_destroy IA__g_timer_destroy
+
+extern __typeof (g_timer_elapsed) IA__g_timer_elapsed __attribute((visibility("hidden")));
+#define g_timer_elapsed IA__g_timer_elapsed
+
+extern __typeof (g_timer_new) IA__g_timer_new __attribute((visibility("hidden")));
+#define g_timer_new IA__g_timer_new
+
+extern __typeof (g_timer_reset) IA__g_timer_reset __attribute((visibility("hidden")));
+#define g_timer_reset IA__g_timer_reset
+
+extern __typeof (g_timer_start) IA__g_timer_start __attribute((visibility("hidden")));
+#define g_timer_start IA__g_timer_start
+
+extern __typeof (g_timer_stop) IA__g_timer_stop __attribute((visibility("hidden")));
+#define g_timer_stop IA__g_timer_stop
+
+extern __typeof (g_time_val_add) IA__g_time_val_add __attribute((visibility("hidden")));
+#define g_time_val_add IA__g_time_val_add
+
+extern __typeof (g_time_val_from_iso8601) IA__g_time_val_from_iso8601 __attribute((visibility("hidden")));
+#define g_time_val_from_iso8601 IA__g_time_val_from_iso8601
+
+extern __typeof (g_time_val_to_iso8601) IA__g_time_val_to_iso8601 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_time_val_to_iso8601 IA__g_time_val_to_iso8601
+
+extern __typeof (g_usleep) IA__g_usleep __attribute((visibility("hidden")));
+#define g_usleep IA__g_usleep
+
+#endif
+#endif
+#if IN_HEADER(__G_TREE_H__)
+#if IN_FILE(__G_TREE_C__)
+extern __typeof (g_tree_destroy) IA__g_tree_destroy __attribute((visibility("hidden")));
+#define g_tree_destroy IA__g_tree_destroy
+
+extern __typeof (g_tree_foreach) IA__g_tree_foreach __attribute((visibility("hidden")));
+#define g_tree_foreach IA__g_tree_foreach
+
+extern __typeof (g_tree_height) IA__g_tree_height __attribute((visibility("hidden")));
+#define g_tree_height IA__g_tree_height
+
+extern __typeof (g_tree_insert) IA__g_tree_insert __attribute((visibility("hidden")));
+#define g_tree_insert IA__g_tree_insert
+
+extern __typeof (g_tree_lookup) IA__g_tree_lookup __attribute((visibility("hidden")));
+#define g_tree_lookup IA__g_tree_lookup
+
+extern __typeof (g_tree_lookup_extended) IA__g_tree_lookup_extended __attribute((visibility("hidden")));
+#define g_tree_lookup_extended IA__g_tree_lookup_extended
+
+extern __typeof (g_tree_new) IA__g_tree_new __attribute((visibility("hidden")));
+#define g_tree_new IA__g_tree_new
+
+extern __typeof (g_tree_new_full) IA__g_tree_new_full __attribute((visibility("hidden")));
+#define g_tree_new_full IA__g_tree_new_full
+
+extern __typeof (g_tree_new_with_data) IA__g_tree_new_with_data __attribute((visibility("hidden")));
+#define g_tree_new_with_data IA__g_tree_new_with_data
+
+extern __typeof (g_tree_nnodes) IA__g_tree_nnodes __attribute((visibility("hidden")));
+#define g_tree_nnodes IA__g_tree_nnodes
+
+extern __typeof (g_tree_remove) IA__g_tree_remove __attribute((visibility("hidden")));
+#define g_tree_remove IA__g_tree_remove
+
+extern __typeof (g_tree_replace) IA__g_tree_replace __attribute((visibility("hidden")));
+#define g_tree_replace IA__g_tree_replace
+
+extern __typeof (g_tree_search) IA__g_tree_search __attribute((visibility("hidden")));
+#define g_tree_search IA__g_tree_search
+
+extern __typeof (g_tree_steal) IA__g_tree_steal __attribute((visibility("hidden")));
+#define g_tree_steal IA__g_tree_steal
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_tree_traverse) IA__g_tree_traverse __attribute((visibility("hidden")));
+#define g_tree_traverse IA__g_tree_traverse
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIBREAK_C__)
+extern __typeof (g_unichar_break_type) IA__g_unichar_break_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_break_type IA__g_unichar_break_type
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNICOLLATE_C__)
+extern __typeof (g_utf8_collate) IA__g_utf8_collate __attribute((visibility("hidden")));
+#define g_utf8_collate IA__g_utf8_collate
+
+extern __typeof (g_utf8_collate_key) IA__g_utf8_collate_key __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_collate_key IA__g_utf8_collate_key
+
+extern __typeof (g_utf8_collate_key_for_filename) IA__g_utf8_collate_key_for_filename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_collate_key_for_filename IA__g_utf8_collate_key_for_filename
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIDECOMP_C__)
+extern __typeof (g_unicode_canonical_decomposition) IA__g_unicode_canonical_decomposition __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_unicode_canonical_decomposition IA__g_unicode_canonical_decomposition
+
+extern __typeof (g_unicode_canonical_ordering) IA__g_unicode_canonical_ordering __attribute((visibility("hidden")));
+#define g_unicode_canonical_ordering IA__g_unicode_canonical_ordering
+
+extern __typeof (g_unichar_combining_class) IA__g_unichar_combining_class __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_combining_class IA__g_unichar_combining_class
+
+extern __typeof (g_utf8_normalize) IA__g_utf8_normalize __attribute((visibility("hidden")));
+#define g_utf8_normalize IA__g_utf8_normalize
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIPROP_C__)
+extern __typeof (g_unichar_isalnum) IA__g_unichar_isalnum __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isalnum IA__g_unichar_isalnum
+
+extern __typeof (g_unichar_isalpha) IA__g_unichar_isalpha __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isalpha IA__g_unichar_isalpha
+
+extern __typeof (g_unichar_iscntrl) IA__g_unichar_iscntrl __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_iscntrl IA__g_unichar_iscntrl
+
+extern __typeof (g_unichar_isdefined) IA__g_unichar_isdefined __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isdefined IA__g_unichar_isdefined
+
+extern __typeof (g_unichar_isdigit) IA__g_unichar_isdigit __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isdigit IA__g_unichar_isdigit
+
+extern __typeof (g_unichar_isgraph) IA__g_unichar_isgraph __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isgraph IA__g_unichar_isgraph
+
+extern __typeof (g_unichar_islower) IA__g_unichar_islower __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_islower IA__g_unichar_islower
+
+extern __typeof (g_unichar_isprint) IA__g_unichar_isprint __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isprint IA__g_unichar_isprint
+
+extern __typeof (g_unichar_ispunct) IA__g_unichar_ispunct __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_ispunct IA__g_unichar_ispunct
+
+extern __typeof (g_unichar_isspace) IA__g_unichar_isspace __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isspace IA__g_unichar_isspace
+
+extern __typeof (g_unichar_istitle) IA__g_unichar_istitle __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_istitle IA__g_unichar_istitle
+
+extern __typeof (g_unichar_isupper) IA__g_unichar_isupper __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isupper IA__g_unichar_isupper
+
+extern __typeof (g_unichar_iswide) IA__g_unichar_iswide __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_iswide IA__g_unichar_iswide
+
+extern __typeof (g_unichar_iswide_cjk) IA__g_unichar_iswide_cjk __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_iswide_cjk IA__g_unichar_iswide_cjk
+
+extern __typeof (g_unichar_isxdigit) IA__g_unichar_isxdigit __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_isxdigit IA__g_unichar_isxdigit
+
+extern __typeof (g_unichar_iszerowidth) IA__g_unichar_iszerowidth __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_iszerowidth IA__g_unichar_iszerowidth
+
+extern __typeof (g_unichar_tolower) IA__g_unichar_tolower __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_tolower IA__g_unichar_tolower
+
+extern __typeof (g_unichar_totitle) IA__g_unichar_totitle __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_totitle IA__g_unichar_totitle
+
+extern __typeof (g_unichar_toupper) IA__g_unichar_toupper __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_toupper IA__g_unichar_toupper
+
+extern __typeof (g_unichar_ismark) IA__g_unichar_ismark __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_ismark IA__g_unichar_ismark
+
+extern __typeof (g_unichar_get_mirror_char) IA__g_unichar_get_mirror_char __attribute((visibility("hidden")));
+#define g_unichar_get_mirror_char IA__g_unichar_get_mirror_char
+
+extern __typeof (g_unichar_get_script) IA__g_unichar_get_script __attribute((visibility("hidden")));
+#define g_unichar_get_script IA__g_unichar_get_script
+
+extern __typeof (g_unichar_digit_value) IA__g_unichar_digit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_digit_value IA__g_unichar_digit_value
+
+extern __typeof (g_unichar_xdigit_value) IA__g_unichar_xdigit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_xdigit_value IA__g_unichar_xdigit_value
+
+extern __typeof (g_unichar_type) IA__g_unichar_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_unichar_type IA__g_unichar_type
+
+extern __typeof (g_utf8_casefold) IA__g_utf8_casefold __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_casefold IA__g_utf8_casefold
+
+extern __typeof (g_utf8_strup) IA__g_utf8_strup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_strup IA__g_utf8_strup
+
+extern __typeof (g_utf8_strdown) IA__g_utf8_strdown __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_strdown IA__g_utf8_strdown
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UTF8_C__)
+extern __typeof (g_get_charset) IA__g_get_charset __attribute((visibility("hidden")));
+#define g_get_charset IA__g_get_charset
+
+extern __typeof (g_ucs4_to_utf16) IA__g_ucs4_to_utf16 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_ucs4_to_utf16 IA__g_ucs4_to_utf16
+
+extern __typeof (g_ucs4_to_utf8) IA__g_ucs4_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_ucs4_to_utf8 IA__g_ucs4_to_utf8
+
+extern __typeof (g_utf16_to_ucs4) IA__g_utf16_to_ucs4 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf16_to_ucs4 IA__g_utf16_to_ucs4
+
+extern __typeof (g_utf16_to_utf8) IA__g_utf16_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf16_to_utf8 IA__g_utf16_to_utf8
+
+extern __typeof (g_utf8_find_next_char) IA__g_utf8_find_next_char __attribute((visibility("hidden")));
+#define g_utf8_find_next_char IA__g_utf8_find_next_char
+
+extern __typeof (g_utf8_find_prev_char) IA__g_utf8_find_prev_char __attribute((visibility("hidden")));
+#define g_utf8_find_prev_char IA__g_utf8_find_prev_char
+
+extern __typeof (g_utf8_get_char) IA__g_utf8_get_char __attribute((visibility("hidden")));
+#define g_utf8_get_char IA__g_utf8_get_char
+
+extern __typeof (g_utf8_get_char_validated) IA__g_utf8_get_char_validated __attribute((visibility("hidden")));
+#define g_utf8_get_char_validated IA__g_utf8_get_char_validated
+
+extern __typeof (g_utf8_offset_to_pointer) IA__g_utf8_offset_to_pointer __attribute((visibility("hidden")));
+#define g_utf8_offset_to_pointer IA__g_utf8_offset_to_pointer
+
+extern __typeof (g_utf8_pointer_to_offset) IA__g_utf8_pointer_to_offset __attribute((visibility("hidden")));
+#define g_utf8_pointer_to_offset IA__g_utf8_pointer_to_offset
+
+extern __typeof (g_utf8_prev_char) IA__g_utf8_prev_char __attribute((visibility("hidden")));
+#define g_utf8_prev_char IA__g_utf8_prev_char
+
+extern __typeof (g_utf8_strchr) IA__g_utf8_strchr __attribute((visibility("hidden")));
+#define g_utf8_strchr IA__g_utf8_strchr
+
+extern __typeof (g_utf8_strlen) IA__g_utf8_strlen __attribute((visibility("hidden")));
+#define g_utf8_strlen IA__g_utf8_strlen
+
+extern __typeof (g_utf8_strncpy) IA__g_utf8_strncpy __attribute((visibility("hidden")));
+#define g_utf8_strncpy IA__g_utf8_strncpy
+
+extern __typeof (g_utf8_strrchr) IA__g_utf8_strrchr __attribute((visibility("hidden")));
+#define g_utf8_strrchr IA__g_utf8_strrchr
+
+extern __typeof (g_utf8_strreverse) IA__g_utf8_strreverse __attribute((visibility("hidden")));
+#define g_utf8_strreverse IA__g_utf8_strreverse
+
+extern __typeof (g_utf8_to_ucs4) IA__g_utf8_to_ucs4 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_to_ucs4 IA__g_utf8_to_ucs4
+
+extern __typeof (g_utf8_to_ucs4_fast) IA__g_utf8_to_ucs4_fast __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_to_ucs4_fast IA__g_utf8_to_ucs4_fast
+
+extern __typeof (g_utf8_to_utf16) IA__g_utf8_to_utf16 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_utf8_to_utf16 IA__g_utf8_to_utf16
+
+extern __typeof (g_utf8_validate) IA__g_utf8_validate __attribute((visibility("hidden")));
+#define g_utf8_validate IA__g_utf8_validate
+
+extern __typeof (g_unichar_to_utf8) IA__g_unichar_to_utf8 __attribute((visibility("hidden")));
+#define g_unichar_to_utf8 IA__g_unichar_to_utf8
+
+extern __typeof (g_unichar_validate) IA__g_unichar_validate __attribute((visibility("hidden")));
+#define g_unichar_validate IA__g_unichar_validate
+
+#endif
+#endif
+#if IN_HEADER(__GLIBINTL_H__)
+#if IN_FILE(__G_UTILS_C__)
+extern __typeof (glib_gettext) IA__glib_gettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(1);
+#define glib_gettext IA__glib_gettext
+
+#endif
+#endif
+#if IN_HEADER(__G_HASH_H__)
+#if IN_FILE(__G_UTILS_C__)
+extern __typeof (g_int_equal) IA__g_int_equal __attribute((visibility("hidden")));
+#define g_int_equal IA__g_int_equal
+
+extern __typeof (g_int_hash) IA__g_int_hash __attribute((visibility("hidden")));
+#define g_int_hash IA__g_int_hash
+
+extern __typeof (g_direct_equal) IA__g_direct_equal __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_direct_equal IA__g_direct_equal
+
+extern __typeof (g_direct_hash) IA__g_direct_hash __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define g_direct_hash IA__g_direct_hash
+
+#endif
+#endif
+#if IN_HEADER(__G_UTILS_H__)
+#if IN_FILE(__G_UTILS_C__)
+extern __typeof (g_atexit) IA__g_atexit __attribute((visibility("hidden")));
+#define g_atexit IA__g_atexit
+
+#ifndef G_DISABLE_DEPRECATED
+extern __typeof (g_basename) IA__g_basename __attribute((visibility("hidden")));
+#define g_basename IA__g_basename
+
+#endif
+extern __typeof (g_get_application_name) IA__g_get_application_name __attribute((visibility("hidden")));
+#define g_get_application_name IA__g_get_application_name
+
+#ifndef _WIN64
+extern __typeof (g_find_program_in_path) IA__g_find_program_in_path __attribute((visibility("hidden")));
+#define g_find_program_in_path IA__g_find_program_in_path
+
+extern __typeof (g_get_current_dir) IA__g_get_current_dir __attribute((visibility("hidden")));
+#define g_get_current_dir IA__g_get_current_dir
+
+extern __typeof (g_getenv) IA__g_getenv __attribute((visibility("hidden")));
+#define g_getenv IA__g_getenv
+
+extern __typeof (g_unsetenv) IA__g_unsetenv __attribute((visibility("hidden")));
+#define g_unsetenv IA__g_unsetenv
+
+extern __typeof (g_get_home_dir) IA__g_get_home_dir __attribute((visibility("hidden")));
+#define g_get_home_dir IA__g_get_home_dir
+
+#endif
+extern __typeof (g_get_host_name) IA__g_get_host_name __attribute((visibility("hidden")));
+#define g_get_host_name IA__g_get_host_name
+
+#ifndef _WIN64
+extern __typeof (g_setenv) IA__g_setenv __attribute((visibility("hidden")));
+#define g_setenv IA__g_setenv
+
+#endif
+extern __typeof (g_listenv) IA__g_listenv __attribute((visibility("hidden")));
+#define g_listenv IA__g_listenv
+
+#ifdef G_OS_WIN32
+extern __typeof (g_find_program_in_path_utf8) IA__g_find_program_in_path_utf8 __attribute((visibility("hidden")));
+#define g_find_program_in_path_utf8 IA__g_find_program_in_path_utf8
+
+extern __typeof (g_get_current_dir_utf8) IA__g_get_current_dir_utf8 __attribute((visibility("hidden")));
+#define g_get_current_dir_utf8 IA__g_get_current_dir_utf8
+
+extern __typeof (g_getenv_utf8) IA__g_getenv_utf8 __attribute((visibility("hidden")));
+#define g_getenv_utf8 IA__g_getenv_utf8
+
+extern __typeof (g_unsetenv_utf8) IA__g_unsetenv_utf8 __attribute((visibility("hidden")));
+#define g_unsetenv_utf8 IA__g_unsetenv_utf8
+
+extern __typeof (g_setenv_utf8) IA__g_setenv_utf8 __attribute((visibility("hidden")));
+#define g_setenv_utf8 IA__g_setenv_utf8
+
+extern __typeof (g_get_home_dir_utf8) IA__g_get_home_dir_utf8 __attribute((visibility("hidden")));
+#define g_get_home_dir_utf8 IA__g_get_home_dir_utf8
+
+#endif
+extern __typeof (g_get_language_names) IA__g_get_language_names __attribute((visibility("hidden")));
+#define g_get_language_names IA__g_get_language_names
+
+extern __typeof (g_get_prgname) IA__g_get_prgname __attribute((visibility("hidden")));
+#define g_get_prgname IA__g_get_prgname
+
+#ifndef _WIN64
+extern __typeof (g_get_real_name) IA__g_get_real_name __attribute((visibility("hidden")));
+#define g_get_real_name IA__g_get_real_name
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_get_real_name_utf8) IA__g_get_real_name_utf8 __attribute((visibility("hidden")));
+#define g_get_real_name_utf8 IA__g_get_real_name_utf8
+
+#endif
+extern __typeof (g_get_system_config_dirs) IA__g_get_system_config_dirs __attribute((visibility("hidden")));
+#define g_get_system_config_dirs IA__g_get_system_config_dirs
+
+extern __typeof (g_get_system_data_dirs) IA__g_get_system_data_dirs __attribute((visibility("hidden")));
+#define g_get_system_data_dirs IA__g_get_system_data_dirs
+
+#ifdef G_OS_WIN32
+extern __typeof (g_win32_get_system_data_dirs_for_module) IA__g_win32_get_system_data_dirs_for_module __attribute((visibility("hidden")));
+#define g_win32_get_system_data_dirs_for_module IA__g_win32_get_system_data_dirs_for_module
+
+#endif
+#ifndef _WIN64
+extern __typeof (g_get_tmp_dir) IA__g_get_tmp_dir __attribute((visibility("hidden")));
+#define g_get_tmp_dir IA__g_get_tmp_dir
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_get_tmp_dir_utf8) IA__g_get_tmp_dir_utf8 __attribute((visibility("hidden")));
+#define g_get_tmp_dir_utf8 IA__g_get_tmp_dir_utf8
+
+#endif
+extern __typeof (g_get_user_cache_dir) IA__g_get_user_cache_dir __attribute((visibility("hidden")));
+#define g_get_user_cache_dir IA__g_get_user_cache_dir
+
+extern __typeof (g_get_user_config_dir) IA__g_get_user_config_dir __attribute((visibility("hidden")));
+#define g_get_user_config_dir IA__g_get_user_config_dir
+
+extern __typeof (g_get_user_data_dir) IA__g_get_user_data_dir __attribute((visibility("hidden")));
+#define g_get_user_data_dir IA__g_get_user_data_dir
+
+extern __typeof (g_get_user_special_dir) IA__g_get_user_special_dir __attribute((visibility("hidden")));
+#define g_get_user_special_dir IA__g_get_user_special_dir
+
+#ifndef _WIN64
+extern __typeof (g_get_user_name) IA__g_get_user_name __attribute((visibility("hidden")));
+#define g_get_user_name IA__g_get_user_name
+
+#endif
+#ifdef G_OS_WIN32
+extern __typeof (g_get_user_name_utf8) IA__g_get_user_name_utf8 __attribute((visibility("hidden")));
+#define g_get_user_name_utf8 IA__g_get_user_name_utf8
+
+#endif
+extern __typeof (glib_check_version) IA__glib_check_version __attribute((visibility("hidden")));
+#define glib_check_version IA__glib_check_version
+
+extern __typeof (g_nullify_pointer) IA__g_nullify_pointer __attribute((visibility("hidden")));
+#define g_nullify_pointer IA__g_nullify_pointer
+
+extern __typeof (g_parse_debug_string) IA__g_parse_debug_string __attribute((visibility("hidden")));
+#define g_parse_debug_string IA__g_parse_debug_string
+
+extern __typeof (g_path_get_basename) IA__g_path_get_basename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_path_get_basename IA__g_path_get_basename
+
+extern __typeof (g_path_get_dirname) IA__g_path_get_dirname __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define g_path_get_dirname IA__g_path_get_dirname
+
+extern __typeof (g_path_is_absolute) IA__g_path_is_absolute __attribute((visibility("hidden")));
+#define g_path_is_absolute IA__g_path_is_absolute
+
+extern __typeof (g_path_skip_root) IA__g_path_skip_root __attribute((visibility("hidden")));
+#define g_path_skip_root IA__g_path_skip_root
+
+extern __typeof (g_set_application_name) IA__g_set_application_name __attribute((visibility("hidden")));
+#define g_set_application_name IA__g_set_application_name
+
+extern __typeof (g_set_prgname) IA__g_set_prgname __attribute((visibility("hidden")));
+#define g_set_prgname IA__g_set_prgname
+
+#endif
+#endif
+#if IN_HEADER(__G_REGEX_H__)
+#if IN_FILE(__G_REGEX_C__)
+extern __typeof (g_regex_error_quark) IA__g_regex_error_quark __attribute((visibility("hidden")));
+#define g_regex_error_quark IA__g_regex_error_quark
+
+extern __typeof (g_regex_new) IA__g_regex_new __attribute((visibility("hidden")));
+#define g_regex_new IA__g_regex_new
+
+extern __typeof (g_regex_ref) IA__g_regex_ref __attribute((visibility("hidden")));
+#define g_regex_ref IA__g_regex_ref
+
+extern __typeof (g_regex_unref) IA__g_regex_unref __attribute((visibility("hidden")));
+#define g_regex_unref IA__g_regex_unref
+
+extern __typeof (g_regex_get_pattern) IA__g_regex_get_pattern __attribute((visibility("hidden")));
+#define g_regex_get_pattern IA__g_regex_get_pattern
+
+extern __typeof (g_regex_get_max_backref) IA__g_regex_get_max_backref __attribute((visibility("hidden")));
+#define g_regex_get_max_backref IA__g_regex_get_max_backref
+
+extern __typeof (g_regex_get_capture_count) IA__g_regex_get_capture_count __attribute((visibility("hidden")));
+#define g_regex_get_capture_count IA__g_regex_get_capture_count
+
+extern __typeof (g_regex_get_string_number) IA__g_regex_get_string_number __attribute((visibility("hidden")));
+#define g_regex_get_string_number IA__g_regex_get_string_number
+
+extern __typeof (g_regex_escape_string) IA__g_regex_escape_string __attribute((visibility("hidden")));
+#define g_regex_escape_string IA__g_regex_escape_string
+
+extern __typeof (g_regex_match_simple) IA__g_regex_match_simple __attribute((visibility("hidden")));
+#define g_regex_match_simple IA__g_regex_match_simple
+
+extern __typeof (g_regex_match) IA__g_regex_match __attribute((visibility("hidden")));
+#define g_regex_match IA__g_regex_match
+
+extern __typeof (g_regex_match_full) IA__g_regex_match_full __attribute((visibility("hidden")));
+#define g_regex_match_full IA__g_regex_match_full
+
+extern __typeof (g_regex_match_all) IA__g_regex_match_all __attribute((visibility("hidden")));
+#define g_regex_match_all IA__g_regex_match_all
+
+extern __typeof (g_regex_match_all_full) IA__g_regex_match_all_full __attribute((visibility("hidden")));
+#define g_regex_match_all_full IA__g_regex_match_all_full
+
+extern __typeof (g_regex_split_simple) IA__g_regex_split_simple __attribute((visibility("hidden")));
+#define g_regex_split_simple IA__g_regex_split_simple
+
+extern __typeof (g_regex_split) IA__g_regex_split __attribute((visibility("hidden")));
+#define g_regex_split IA__g_regex_split
+
+extern __typeof (g_regex_split_full) IA__g_regex_split_full __attribute((visibility("hidden")));
+#define g_regex_split_full IA__g_regex_split_full
+
+extern __typeof (g_regex_replace) IA__g_regex_replace __attribute((visibility("hidden")));
+#define g_regex_replace IA__g_regex_replace
+
+extern __typeof (g_regex_replace_literal) IA__g_regex_replace_literal __attribute((visibility("hidden")));
+#define g_regex_replace_literal IA__g_regex_replace_literal
+
+extern __typeof (g_regex_replace_eval) IA__g_regex_replace_eval __attribute((visibility("hidden")));
+#define g_regex_replace_eval IA__g_regex_replace_eval
+
+extern __typeof (g_regex_check_replacement) IA__g_regex_check_replacement __attribute((visibility("hidden")));
+#define g_regex_check_replacement IA__g_regex_check_replacement
+
+extern __typeof (g_match_info_get_regex) IA__g_match_info_get_regex __attribute((visibility("hidden")));
+#define g_match_info_get_regex IA__g_match_info_get_regex
+
+extern __typeof (g_match_info_get_string) IA__g_match_info_get_string __attribute((visibility("hidden")));
+#define g_match_info_get_string IA__g_match_info_get_string
+
+extern __typeof (g_match_info_free) IA__g_match_info_free __attribute((visibility("hidden")));
+#define g_match_info_free IA__g_match_info_free
+
+extern __typeof (g_match_info_next) IA__g_match_info_next __attribute((visibility("hidden")));
+#define g_match_info_next IA__g_match_info_next
+
+extern __typeof (g_match_info_matches) IA__g_match_info_matches __attribute((visibility("hidden")));
+#define g_match_info_matches IA__g_match_info_matches
+
+extern __typeof (g_match_info_get_match_count) IA__g_match_info_get_match_count __attribute((visibility("hidden")));
+#define g_match_info_get_match_count IA__g_match_info_get_match_count
+
+extern __typeof (g_match_info_is_partial_match) IA__g_match_info_is_partial_match __attribute((visibility("hidden")));
+#define g_match_info_is_partial_match IA__g_match_info_is_partial_match
+
+extern __typeof (g_match_info_expand_references) IA__g_match_info_expand_references __attribute((visibility("hidden")));
+#define g_match_info_expand_references IA__g_match_info_expand_references
+
+extern __typeof (g_match_info_fetch) IA__g_match_info_fetch __attribute((visibility("hidden")));
+#define g_match_info_fetch IA__g_match_info_fetch
+
+extern __typeof (g_match_info_fetch_pos) IA__g_match_info_fetch_pos __attribute((visibility("hidden")));
+#define g_match_info_fetch_pos IA__g_match_info_fetch_pos
+
+extern __typeof (g_match_info_fetch_named) IA__g_match_info_fetch_named __attribute((visibility("hidden")));
+#define g_match_info_fetch_named IA__g_match_info_fetch_named
+
+extern __typeof (g_match_info_fetch_named_pos) IA__g_match_info_fetch_named_pos __attribute((visibility("hidden")));
+#define g_match_info_fetch_named_pos IA__g_match_info_fetch_named_pos
+
+extern __typeof (g_match_info_fetch_all) IA__g_match_info_fetch_all __attribute((visibility("hidden")));
+#define g_match_info_fetch_all IA__g_match_info_fetch_all
+
+#endif
+#endif
+#if IN_HEADER(__G_WIN32_H__)
+#if IN_FILE(__G_WIN32_H__)
+#ifdef G_OS_WIN32
+extern __typeof (g_win32_error_message) IA__g_win32_error_message __attribute((visibility("hidden")));
+#define g_win32_error_message IA__g_win32_error_message
+
+extern __typeof (g_win32_ftruncate) IA__g_win32_ftruncate __attribute((visibility("hidden")));
+#define g_win32_ftruncate IA__g_win32_ftruncate
+
+extern __typeof (g_win32_get_package_installation_directory_of_module) IA__g_win32_get_package_installation_directory_of_module __attribute((visibility("hidden")));
+#define g_win32_get_package_installation_directory_of_module IA__g_win32_get_package_installation_directory_of_module
+
+#ifndef _WIN64
+extern __typeof (g_win32_get_package_installation_directory) IA__g_win32_get_package_installation_directory __attribute((visibility("hidden")));
+#define g_win32_get_package_installation_directory IA__g_win32_get_package_installation_directory
+
+#endif
+extern __typeof (g_win32_get_package_installation_directory_utf8) IA__g_win32_get_package_installation_directory_utf8 __attribute((visibility("hidden")));
+#define g_win32_get_package_installation_directory_utf8 IA__g_win32_get_package_installation_directory_utf8
+
+#ifndef _WIN64
+extern __typeof (g_win32_get_package_installation_subdirectory) IA__g_win32_get_package_installation_subdirectory __attribute((visibility("hidden")));
+#define g_win32_get_package_installation_subdirectory IA__g_win32_get_package_installation_subdirectory
+
+#endif
+extern __typeof (g_win32_get_package_installation_subdirectory_utf8) IA__g_win32_get_package_installation_subdirectory_utf8 __attribute((visibility("hidden")));
+#define g_win32_get_package_installation_subdirectory_utf8 IA__g_win32_get_package_installation_subdirectory_utf8
+
+extern __typeof (g_win32_get_windows_version) IA__g_win32_get_windows_version __attribute((visibility("hidden")));
+#define g_win32_get_windows_version IA__g_win32_get_windows_version
+
+extern __typeof (g_win32_getlocale) IA__g_win32_getlocale __attribute((visibility("hidden")));
+#define g_win32_getlocale IA__g_win32_getlocale
+
+extern __typeof (g_win32_locale_filename_from_utf8) IA__g_win32_locale_filename_from_utf8 __attribute((visibility("hidden")));
+#define g_win32_locale_filename_from_utf8 IA__g_win32_locale_filename_from_utf8
+
+#endif
+#endif
+#endif
+
+#endif /* G_HAVE_GNUC_VISIBILITY */
+#endif /* DISABLE_VISIBILITY */
diff --git a/glib/galiasdef.c b/glib/galiasdef.c
new file mode 100644
index 0000000..c8ba51c
--- /dev/null
+++ b/glib/galiasdef.c
@@ -0,0 +1,3897 @@
+/* Generated by makegalias.pl */
+
+#ifndef DISABLE_VISIBILITY
+
+#include "glibconfig.h"
+
+#ifdef G_HAVE_GNUC_VISIBILITY
+
+#undef IN_FILE
+#define IN_FILE defined
+
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+#if IN_HEADER(__G_ARRAY_H__)
+#if IN_FILE(__G_ARRAY_C__)
+#undef g_array_append_vals 
+extern __typeof (g_array_append_vals) g_array_append_vals __attribute((alias("IA__g_array_append_vals"), visibility("default")));
+
+#undef g_array_free 
+extern __typeof (g_array_free) g_array_free __attribute((alias("IA__g_array_free"), visibility("default")));
+
+#undef g_array_insert_vals 
+extern __typeof (g_array_insert_vals) g_array_insert_vals __attribute((alias("IA__g_array_insert_vals"), visibility("default")));
+
+#undef g_array_new 
+extern __typeof (g_array_new) g_array_new __attribute((alias("IA__g_array_new"), visibility("default")));
+
+#undef g_array_prepend_vals 
+extern __typeof (g_array_prepend_vals) g_array_prepend_vals __attribute((alias("IA__g_array_prepend_vals"), visibility("default")));
+
+#undef g_array_remove_index 
+extern __typeof (g_array_remove_index) g_array_remove_index __attribute((alias("IA__g_array_remove_index"), visibility("default")));
+
+#undef g_array_remove_index_fast 
+extern __typeof (g_array_remove_index_fast) g_array_remove_index_fast __attribute((alias("IA__g_array_remove_index_fast"), visibility("default")));
+
+#undef g_array_remove_range 
+extern __typeof (g_array_remove_range) g_array_remove_range __attribute((alias("IA__g_array_remove_range"), visibility("default")));
+
+#undef g_array_set_size 
+extern __typeof (g_array_set_size) g_array_set_size __attribute((alias("IA__g_array_set_size"), visibility("default")));
+
+#undef g_array_sized_new 
+extern __typeof (g_array_sized_new) g_array_sized_new __attribute((alias("IA__g_array_sized_new"), visibility("default")));
+
+#undef g_array_sort 
+extern __typeof (g_array_sort) g_array_sort __attribute((alias("IA__g_array_sort"), visibility("default")));
+
+#undef g_array_sort_with_data 
+extern __typeof (g_array_sort_with_data) g_array_sort_with_data __attribute((alias("IA__g_array_sort_with_data"), visibility("default")));
+
+#undef g_byte_array_append 
+extern __typeof (g_byte_array_append) g_byte_array_append __attribute((alias("IA__g_byte_array_append"), visibility("default")));
+
+#undef g_byte_array_free 
+extern __typeof (g_byte_array_free) g_byte_array_free __attribute((alias("IA__g_byte_array_free"), visibility("default")));
+
+#undef g_byte_array_new 
+extern __typeof (g_byte_array_new) g_byte_array_new __attribute((alias("IA__g_byte_array_new"), visibility("default")));
+
+#undef g_byte_array_prepend 
+extern __typeof (g_byte_array_prepend) g_byte_array_prepend __attribute((alias("IA__g_byte_array_prepend"), visibility("default")));
+
+#undef g_byte_array_remove_index 
+extern __typeof (g_byte_array_remove_index) g_byte_array_remove_index __attribute((alias("IA__g_byte_array_remove_index"), visibility("default")));
+
+#undef g_byte_array_remove_index_fast 
+extern __typeof (g_byte_array_remove_index_fast) g_byte_array_remove_index_fast __attribute((alias("IA__g_byte_array_remove_index_fast"), visibility("default")));
+
+#undef g_byte_array_remove_range 
+extern __typeof (g_byte_array_remove_range) g_byte_array_remove_range __attribute((alias("IA__g_byte_array_remove_range"), visibility("default")));
+
+#undef g_byte_array_set_size 
+extern __typeof (g_byte_array_set_size) g_byte_array_set_size __attribute((alias("IA__g_byte_array_set_size"), visibility("default")));
+
+#undef g_byte_array_sized_new 
+extern __typeof (g_byte_array_sized_new) g_byte_array_sized_new __attribute((alias("IA__g_byte_array_sized_new"), visibility("default")));
+
+#undef g_byte_array_sort 
+extern __typeof (g_byte_array_sort) g_byte_array_sort __attribute((alias("IA__g_byte_array_sort"), visibility("default")));
+
+#undef g_byte_array_sort_with_data 
+extern __typeof (g_byte_array_sort_with_data) g_byte_array_sort_with_data __attribute((alias("IA__g_byte_array_sort_with_data"), visibility("default")));
+
+#undef g_ptr_array_add 
+extern __typeof (g_ptr_array_add) g_ptr_array_add __attribute((alias("IA__g_ptr_array_add"), visibility("default")));
+
+#undef g_ptr_array_foreach 
+extern __typeof (g_ptr_array_foreach) g_ptr_array_foreach __attribute((alias("IA__g_ptr_array_foreach"), visibility("default")));
+
+#undef g_ptr_array_free 
+extern __typeof (g_ptr_array_free) g_ptr_array_free __attribute((alias("IA__g_ptr_array_free"), visibility("default")));
+
+#undef g_ptr_array_new 
+extern __typeof (g_ptr_array_new) g_ptr_array_new __attribute((alias("IA__g_ptr_array_new"), visibility("default")));
+
+#undef g_ptr_array_remove 
+extern __typeof (g_ptr_array_remove) g_ptr_array_remove __attribute((alias("IA__g_ptr_array_remove"), visibility("default")));
+
+#undef g_ptr_array_remove_fast 
+extern __typeof (g_ptr_array_remove_fast) g_ptr_array_remove_fast __attribute((alias("IA__g_ptr_array_remove_fast"), visibility("default")));
+
+#undef g_ptr_array_remove_index 
+extern __typeof (g_ptr_array_remove_index) g_ptr_array_remove_index __attribute((alias("IA__g_ptr_array_remove_index"), visibility("default")));
+
+#undef g_ptr_array_remove_index_fast 
+extern __typeof (g_ptr_array_remove_index_fast) g_ptr_array_remove_index_fast __attribute((alias("IA__g_ptr_array_remove_index_fast"), visibility("default")));
+
+#undef g_ptr_array_remove_range 
+extern __typeof (g_ptr_array_remove_range) g_ptr_array_remove_range __attribute((alias("IA__g_ptr_array_remove_range"), visibility("default")));
+
+#undef g_ptr_array_set_size 
+extern __typeof (g_ptr_array_set_size) g_ptr_array_set_size __attribute((alias("IA__g_ptr_array_set_size"), visibility("default")));
+
+#undef g_ptr_array_sized_new 
+extern __typeof (g_ptr_array_sized_new) g_ptr_array_sized_new __attribute((alias("IA__g_ptr_array_sized_new"), visibility("default")));
+
+#undef g_ptr_array_sort 
+extern __typeof (g_ptr_array_sort) g_ptr_array_sort __attribute((alias("IA__g_ptr_array_sort"), visibility("default")));
+
+#undef g_ptr_array_sort_with_data 
+extern __typeof (g_ptr_array_sort_with_data) g_ptr_array_sort_with_data __attribute((alias("IA__g_ptr_array_sort_with_data"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_ASYNCQUEUE_H__)
+#if IN_FILE(__G_ASYNCQUEUE_C__)
+#undef g_async_queue_length 
+extern __typeof (g_async_queue_length) g_async_queue_length __attribute((alias("IA__g_async_queue_length"), visibility("default")));
+
+#undef g_async_queue_length_unlocked 
+extern __typeof (g_async_queue_length_unlocked) g_async_queue_length_unlocked __attribute((alias("IA__g_async_queue_length_unlocked"), visibility("default")));
+
+#undef g_async_queue_lock 
+extern __typeof (g_async_queue_lock) g_async_queue_lock __attribute((alias("IA__g_async_queue_lock"), visibility("default")));
+
+#undef g_async_queue_new 
+extern __typeof (g_async_queue_new) g_async_queue_new __attribute((alias("IA__g_async_queue_new"), visibility("default")));
+
+#undef g_async_queue_new_full 
+extern __typeof (g_async_queue_new_full) g_async_queue_new_full __attribute((alias("IA__g_async_queue_new_full"), visibility("default")));
+
+#undef g_async_queue_pop 
+extern __typeof (g_async_queue_pop) g_async_queue_pop __attribute((alias("IA__g_async_queue_pop"), visibility("default")));
+
+#undef g_async_queue_pop_unlocked 
+extern __typeof (g_async_queue_pop_unlocked) g_async_queue_pop_unlocked __attribute((alias("IA__g_async_queue_pop_unlocked"), visibility("default")));
+
+#undef g_async_queue_push 
+extern __typeof (g_async_queue_push) g_async_queue_push __attribute((alias("IA__g_async_queue_push"), visibility("default")));
+
+#undef g_async_queue_push_unlocked 
+extern __typeof (g_async_queue_push_unlocked) g_async_queue_push_unlocked __attribute((alias("IA__g_async_queue_push_unlocked"), visibility("default")));
+
+#undef g_async_queue_push_sorted 
+extern __typeof (g_async_queue_push_sorted) g_async_queue_push_sorted __attribute((alias("IA__g_async_queue_push_sorted"), visibility("default")));
+
+#undef g_async_queue_push_sorted_unlocked 
+extern __typeof (g_async_queue_push_sorted_unlocked) g_async_queue_push_sorted_unlocked __attribute((alias("IA__g_async_queue_push_sorted_unlocked"), visibility("default")));
+
+#undef g_async_queue_ref 
+extern __typeof (g_async_queue_ref) g_async_queue_ref __attribute((alias("IA__g_async_queue_ref"), visibility("default")));
+
+#undef g_async_queue_sort 
+extern __typeof (g_async_queue_sort) g_async_queue_sort __attribute((alias("IA__g_async_queue_sort"), visibility("default")));
+
+#undef g_async_queue_sort_unlocked 
+extern __typeof (g_async_queue_sort_unlocked) g_async_queue_sort_unlocked __attribute((alias("IA__g_async_queue_sort_unlocked"), visibility("default")));
+
+#undef g_async_queue_timed_pop 
+extern __typeof (g_async_queue_timed_pop) g_async_queue_timed_pop __attribute((alias("IA__g_async_queue_timed_pop"), visibility("default")));
+
+#undef g_async_queue_timed_pop_unlocked 
+extern __typeof (g_async_queue_timed_pop_unlocked) g_async_queue_timed_pop_unlocked __attribute((alias("IA__g_async_queue_timed_pop_unlocked"), visibility("default")));
+
+#undef g_async_queue_try_pop 
+extern __typeof (g_async_queue_try_pop) g_async_queue_try_pop __attribute((alias("IA__g_async_queue_try_pop"), visibility("default")));
+
+#undef g_async_queue_try_pop_unlocked 
+extern __typeof (g_async_queue_try_pop_unlocked) g_async_queue_try_pop_unlocked __attribute((alias("IA__g_async_queue_try_pop_unlocked"), visibility("default")));
+
+#undef g_async_queue_unlock 
+extern __typeof (g_async_queue_unlock) g_async_queue_unlock __attribute((alias("IA__g_async_queue_unlock"), visibility("default")));
+
+#undef g_async_queue_unref 
+extern __typeof (g_async_queue_unref) g_async_queue_unref __attribute((alias("IA__g_async_queue_unref"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_async_queue_ref_unlocked 
+extern __typeof (g_async_queue_ref_unlocked) g_async_queue_ref_unlocked __attribute((alias("IA__g_async_queue_ref_unlocked"), visibility("default")));
+
+#undef g_async_queue_unref_and_unlock 
+extern __typeof (g_async_queue_unref_and_unlock) g_async_queue_unref_and_unlock __attribute((alias("IA__g_async_queue_unref_and_unlock"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_ATOMIC_H__)
+#if IN_FILE(__G_ATOMIC_C__)
+#undef g_atomic_int_add 
+extern __typeof (g_atomic_int_add) g_atomic_int_add __attribute((alias("IA__g_atomic_int_add"), visibility("default")));
+
+#undef g_atomic_int_compare_and_exchange 
+extern __typeof (g_atomic_int_compare_and_exchange) g_atomic_int_compare_and_exchange __attribute((alias("IA__g_atomic_int_compare_and_exchange"), visibility("default")));
+
+#undef g_atomic_int_exchange_and_add 
+extern __typeof (g_atomic_int_exchange_and_add) g_atomic_int_exchange_and_add __attribute((alias("IA__g_atomic_int_exchange_and_add"), visibility("default")));
+
+#undef g_atomic_pointer_compare_and_exchange 
+extern __typeof (g_atomic_pointer_compare_and_exchange) g_atomic_pointer_compare_and_exchange __attribute((alias("IA__g_atomic_pointer_compare_and_exchange"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_BACKTRACE_H__)
+#if IN_FILE(__G_BACKTRACE_C__)
+#undef g_on_error_query 
+extern __typeof (g_on_error_query) g_on_error_query __attribute((alias("IA__g_on_error_query"), visibility("default")));
+
+#undef g_on_error_stack_trace 
+extern __typeof (g_on_error_stack_trace) g_on_error_stack_trace __attribute((alias("IA__g_on_error_stack_trace"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_BASE64_H__)
+#if IN_FILE(__G_BASE64_C__)
+#undef g_base64_encode_step 
+extern __typeof (g_base64_encode_step) g_base64_encode_step __attribute((alias("IA__g_base64_encode_step"), visibility("default")));
+
+#undef g_base64_encode_close 
+extern __typeof (g_base64_encode_close) g_base64_encode_close __attribute((alias("IA__g_base64_encode_close"), visibility("default")));
+
+#undef g_base64_encode 
+extern __typeof (g_base64_encode) g_base64_encode __attribute((alias("IA__g_base64_encode"), visibility("default")));
+
+#undef g_base64_decode_step 
+extern __typeof (g_base64_decode_step) g_base64_decode_step __attribute((alias("IA__g_base64_decode_step"), visibility("default")));
+
+#undef g_base64_decode 
+extern __typeof (g_base64_decode) g_base64_decode __attribute((alias("IA__g_base64_decode"), visibility("default")));
+
+#undef g_base64_decode_inplace 
+extern __typeof (g_base64_decode_inplace) g_base64_decode_inplace __attribute((alias("IA__g_base64_decode_inplace"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_BOOKMARK_FILE_H__)
+#if IN_FILE(__G_BOOKMARK_FILE_C__)
+#undef g_bookmark_file_error_quark 
+extern __typeof (g_bookmark_file_error_quark) g_bookmark_file_error_quark __attribute((alias("IA__g_bookmark_file_error_quark"), visibility("default")));
+
+#undef g_bookmark_file_new 
+extern __typeof (g_bookmark_file_new) g_bookmark_file_new __attribute((alias("IA__g_bookmark_file_new"), visibility("default")));
+
+#undef g_bookmark_file_free 
+extern __typeof (g_bookmark_file_free) g_bookmark_file_free __attribute((alias("IA__g_bookmark_file_free"), visibility("default")));
+
+#undef g_bookmark_file_load_from_file 
+extern __typeof (g_bookmark_file_load_from_file) g_bookmark_file_load_from_file __attribute((alias("IA__g_bookmark_file_load_from_file"), visibility("default")));
+
+#undef g_bookmark_file_load_from_data 
+extern __typeof (g_bookmark_file_load_from_data) g_bookmark_file_load_from_data __attribute((alias("IA__g_bookmark_file_load_from_data"), visibility("default")));
+
+#undef g_bookmark_file_load_from_data_dirs 
+extern __typeof (g_bookmark_file_load_from_data_dirs) g_bookmark_file_load_from_data_dirs __attribute((alias("IA__g_bookmark_file_load_from_data_dirs"), visibility("default")));
+
+#undef g_bookmark_file_to_data 
+extern __typeof (g_bookmark_file_to_data) g_bookmark_file_to_data __attribute((alias("IA__g_bookmark_file_to_data"), visibility("default")));
+
+#undef g_bookmark_file_to_file 
+extern __typeof (g_bookmark_file_to_file) g_bookmark_file_to_file __attribute((alias("IA__g_bookmark_file_to_file"), visibility("default")));
+
+#undef g_bookmark_file_set_title 
+extern __typeof (g_bookmark_file_set_title) g_bookmark_file_set_title __attribute((alias("IA__g_bookmark_file_set_title"), visibility("default")));
+
+#undef g_bookmark_file_get_title 
+extern __typeof (g_bookmark_file_get_title) g_bookmark_file_get_title __attribute((alias("IA__g_bookmark_file_get_title"), visibility("default")));
+
+#undef g_bookmark_file_set_description 
+extern __typeof (g_bookmark_file_set_description) g_bookmark_file_set_description __attribute((alias("IA__g_bookmark_file_set_description"), visibility("default")));
+
+#undef g_bookmark_file_get_description 
+extern __typeof (g_bookmark_file_get_description) g_bookmark_file_get_description __attribute((alias("IA__g_bookmark_file_get_description"), visibility("default")));
+
+#undef g_bookmark_file_set_mime_type 
+extern __typeof (g_bookmark_file_set_mime_type) g_bookmark_file_set_mime_type __attribute((alias("IA__g_bookmark_file_set_mime_type"), visibility("default")));
+
+#undef g_bookmark_file_get_mime_type 
+extern __typeof (g_bookmark_file_get_mime_type) g_bookmark_file_get_mime_type __attribute((alias("IA__g_bookmark_file_get_mime_type"), visibility("default")));
+
+#undef g_bookmark_file_set_groups 
+extern __typeof (g_bookmark_file_set_groups) g_bookmark_file_set_groups __attribute((alias("IA__g_bookmark_file_set_groups"), visibility("default")));
+
+#undef g_bookmark_file_add_group 
+extern __typeof (g_bookmark_file_add_group) g_bookmark_file_add_group __attribute((alias("IA__g_bookmark_file_add_group"), visibility("default")));
+
+#undef g_bookmark_file_has_group 
+extern __typeof (g_bookmark_file_has_group) g_bookmark_file_has_group __attribute((alias("IA__g_bookmark_file_has_group"), visibility("default")));
+
+#undef g_bookmark_file_get_groups 
+extern __typeof (g_bookmark_file_get_groups) g_bookmark_file_get_groups __attribute((alias("IA__g_bookmark_file_get_groups"), visibility("default")));
+
+#undef g_bookmark_file_add_application 
+extern __typeof (g_bookmark_file_add_application) g_bookmark_file_add_application __attribute((alias("IA__g_bookmark_file_add_application"), visibility("default")));
+
+#undef g_bookmark_file_has_application 
+extern __typeof (g_bookmark_file_has_application) g_bookmark_file_has_application __attribute((alias("IA__g_bookmark_file_has_application"), visibility("default")));
+
+#undef g_bookmark_file_get_applications 
+extern __typeof (g_bookmark_file_get_applications) g_bookmark_file_get_applications __attribute((alias("IA__g_bookmark_file_get_applications"), visibility("default")));
+
+#undef g_bookmark_file_set_app_info 
+extern __typeof (g_bookmark_file_set_app_info) g_bookmark_file_set_app_info __attribute((alias("IA__g_bookmark_file_set_app_info"), visibility("default")));
+
+#undef g_bookmark_file_get_app_info 
+extern __typeof (g_bookmark_file_get_app_info) g_bookmark_file_get_app_info __attribute((alias("IA__g_bookmark_file_get_app_info"), visibility("default")));
+
+#undef g_bookmark_file_set_is_private 
+extern __typeof (g_bookmark_file_set_is_private) g_bookmark_file_set_is_private __attribute((alias("IA__g_bookmark_file_set_is_private"), visibility("default")));
+
+#undef g_bookmark_file_get_is_private 
+extern __typeof (g_bookmark_file_get_is_private) g_bookmark_file_get_is_private __attribute((alias("IA__g_bookmark_file_get_is_private"), visibility("default")));
+
+#undef g_bookmark_file_set_icon 
+extern __typeof (g_bookmark_file_set_icon) g_bookmark_file_set_icon __attribute((alias("IA__g_bookmark_file_set_icon"), visibility("default")));
+
+#undef g_bookmark_file_get_icon 
+extern __typeof (g_bookmark_file_get_icon) g_bookmark_file_get_icon __attribute((alias("IA__g_bookmark_file_get_icon"), visibility("default")));
+
+#undef g_bookmark_file_set_added 
+extern __typeof (g_bookmark_file_set_added) g_bookmark_file_set_added __attribute((alias("IA__g_bookmark_file_set_added"), visibility("default")));
+
+#undef g_bookmark_file_get_added 
+extern __typeof (g_bookmark_file_get_added) g_bookmark_file_get_added __attribute((alias("IA__g_bookmark_file_get_added"), visibility("default")));
+
+#undef g_bookmark_file_set_modified 
+extern __typeof (g_bookmark_file_set_modified) g_bookmark_file_set_modified __attribute((alias("IA__g_bookmark_file_set_modified"), visibility("default")));
+
+#undef g_bookmark_file_get_modified 
+extern __typeof (g_bookmark_file_get_modified) g_bookmark_file_get_modified __attribute((alias("IA__g_bookmark_file_get_modified"), visibility("default")));
+
+#undef g_bookmark_file_set_visited 
+extern __typeof (g_bookmark_file_set_visited) g_bookmark_file_set_visited __attribute((alias("IA__g_bookmark_file_set_visited"), visibility("default")));
+
+#undef g_bookmark_file_get_visited 
+extern __typeof (g_bookmark_file_get_visited) g_bookmark_file_get_visited __attribute((alias("IA__g_bookmark_file_get_visited"), visibility("default")));
+
+#undef g_bookmark_file_has_item 
+extern __typeof (g_bookmark_file_has_item) g_bookmark_file_has_item __attribute((alias("IA__g_bookmark_file_has_item"), visibility("default")));
+
+#undef g_bookmark_file_get_size 
+extern __typeof (g_bookmark_file_get_size) g_bookmark_file_get_size __attribute((alias("IA__g_bookmark_file_get_size"), visibility("default")));
+
+#undef g_bookmark_file_get_uris 
+extern __typeof (g_bookmark_file_get_uris) g_bookmark_file_get_uris __attribute((alias("IA__g_bookmark_file_get_uris"), visibility("default")));
+
+#undef g_bookmark_file_remove_group 
+extern __typeof (g_bookmark_file_remove_group) g_bookmark_file_remove_group __attribute((alias("IA__g_bookmark_file_remove_group"), visibility("default")));
+
+#undef g_bookmark_file_remove_application 
+extern __typeof (g_bookmark_file_remove_application) g_bookmark_file_remove_application __attribute((alias("IA__g_bookmark_file_remove_application"), visibility("default")));
+
+#undef g_bookmark_file_remove_item 
+extern __typeof (g_bookmark_file_remove_item) g_bookmark_file_remove_item __attribute((alias("IA__g_bookmark_file_remove_item"), visibility("default")));
+
+#undef g_bookmark_file_move_item 
+extern __typeof (g_bookmark_file_move_item) g_bookmark_file_move_item __attribute((alias("IA__g_bookmark_file_move_item"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_CACHE_H__)
+#if IN_FILE(__G_CACHE_C__)
+#undef g_cache_destroy 
+extern __typeof (g_cache_destroy) g_cache_destroy __attribute((alias("IA__g_cache_destroy"), visibility("default")));
+
+#undef g_cache_insert 
+extern __typeof (g_cache_insert) g_cache_insert __attribute((alias("IA__g_cache_insert"), visibility("default")));
+
+#undef g_cache_key_foreach 
+extern __typeof (g_cache_key_foreach) g_cache_key_foreach __attribute((alias("IA__g_cache_key_foreach"), visibility("default")));
+
+#undef g_cache_new 
+extern __typeof (g_cache_new) g_cache_new __attribute((alias("IA__g_cache_new"), visibility("default")));
+
+#undef g_cache_remove 
+extern __typeof (g_cache_remove) g_cache_remove __attribute((alias("IA__g_cache_remove"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_cache_value_foreach 
+extern __typeof (g_cache_value_foreach) g_cache_value_foreach __attribute((alias("IA__g_cache_value_foreach"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_CHECKSUM_H__)
+#if IN_FILE(__G_CHECKSUM_C__)
+#undef g_checksum_type_get_length 
+extern __typeof (g_checksum_type_get_length) g_checksum_type_get_length __attribute((alias("IA__g_checksum_type_get_length"), visibility("default")));
+
+#undef g_checksum_new 
+extern __typeof (g_checksum_new) g_checksum_new __attribute((alias("IA__g_checksum_new"), visibility("default")));
+
+#undef g_checksum_copy 
+extern __typeof (g_checksum_copy) g_checksum_copy __attribute((alias("IA__g_checksum_copy"), visibility("default")));
+
+#undef g_checksum_free 
+extern __typeof (g_checksum_free) g_checksum_free __attribute((alias("IA__g_checksum_free"), visibility("default")));
+
+#undef g_checksum_update 
+extern __typeof (g_checksum_update) g_checksum_update __attribute((alias("IA__g_checksum_update"), visibility("default")));
+
+#undef g_checksum_reset 
+extern __typeof (g_checksum_reset) g_checksum_reset __attribute((alias("IA__g_checksum_reset"), visibility("default")));
+
+#undef g_checksum_get_string 
+extern __typeof (g_checksum_get_string) g_checksum_get_string __attribute((alias("IA__g_checksum_get_string"), visibility("default")));
+
+#undef g_checksum_get_digest 
+extern __typeof (g_checksum_get_digest) g_checksum_get_digest __attribute((alias("IA__g_checksum_get_digest"), visibility("default")));
+
+#undef g_compute_checksum_for_data 
+extern __typeof (g_compute_checksum_for_data) g_compute_checksum_for_data __attribute((alias("IA__g_compute_checksum_for_data"), visibility("default")));
+
+#undef g_compute_checksum_for_string 
+extern __typeof (g_compute_checksum_for_string) g_compute_checksum_for_string __attribute((alias("IA__g_compute_checksum_for_string"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_COMPLETION_H__)
+#if IN_FILE(__G_COMPLETION_C__)
+#undef g_completion_add_items 
+extern __typeof (g_completion_add_items) g_completion_add_items __attribute((alias("IA__g_completion_add_items"), visibility("default")));
+
+#undef g_completion_clear_items 
+extern __typeof (g_completion_clear_items) g_completion_clear_items __attribute((alias("IA__g_completion_clear_items"), visibility("default")));
+
+#undef g_completion_complete 
+extern __typeof (g_completion_complete) g_completion_complete __attribute((alias("IA__g_completion_complete"), visibility("default")));
+
+#undef g_completion_complete_utf8 
+extern __typeof (g_completion_complete_utf8) g_completion_complete_utf8 __attribute((alias("IA__g_completion_complete_utf8"), visibility("default")));
+
+#undef g_completion_free 
+extern __typeof (g_completion_free) g_completion_free __attribute((alias("IA__g_completion_free"), visibility("default")));
+
+#undef g_completion_new 
+extern __typeof (g_completion_new) g_completion_new __attribute((alias("IA__g_completion_new"), visibility("default")));
+
+#undef g_completion_remove_items 
+extern __typeof (g_completion_remove_items) g_completion_remove_items __attribute((alias("IA__g_completion_remove_items"), visibility("default")));
+
+#undef g_completion_set_compare 
+extern __typeof (g_completion_set_compare) g_completion_set_compare __attribute((alias("IA__g_completion_set_compare"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_CONVERT_H__)
+#if IN_FILE(__G_CONVERT_C__)
+#undef g_get_filename_charsets 
+extern __typeof (g_get_filename_charsets) g_get_filename_charsets __attribute((alias("IA__g_get_filename_charsets"), visibility("default")));
+
+#ifdef ANDROID_STUB
+#undef g_convert 
+extern __typeof (g_convert) g_convert __attribute((alias("IA__g_convert"), visibility("default")));
+#endif
+
+#undef g_convert_error_quark 
+extern __typeof (g_convert_error_quark) g_convert_error_quark __attribute((alias("IA__g_convert_error_quark"), visibility("default")));
+
+#ifdef ANDROID_STUB
+#undef g_convert_with_fallback 
+extern __typeof (g_convert_with_fallback) g_convert_with_fallback __attribute((alias("IA__g_convert_with_fallback"), visibility("default")));
+
+#undef g_convert_with_iconv 
+extern __typeof (g_convert_with_iconv) g_convert_with_iconv __attribute((alias("IA__g_convert_with_iconv"), visibility("default")));
+
+#undef g_iconv 
+extern __typeof (g_iconv) g_iconv __attribute((alias("IA__g_iconv"), visibility("default")));
+
+#undef g_iconv_close 
+extern __typeof (g_iconv_close) g_iconv_close __attribute((alias("IA__g_iconv_close"), visibility("default")));
+
+#undef g_iconv_open 
+extern __typeof (g_iconv_open) g_iconv_open __attribute((alias("IA__g_iconv_open"), visibility("default")));
+#endif
+
+#undef g_locale_from_utf8 
+extern __typeof (g_locale_from_utf8) g_locale_from_utf8 __attribute((alias("IA__g_locale_from_utf8"), visibility("default")));
+
+#undef g_locale_to_utf8 
+extern __typeof (g_locale_to_utf8) g_locale_to_utf8 __attribute((alias("IA__g_locale_to_utf8"), visibility("default")));
+
+#undef g_filename_display_name 
+extern __typeof (g_filename_display_name) g_filename_display_name __attribute((alias("IA__g_filename_display_name"), visibility("default")));
+
+#undef g_filename_display_basename 
+extern __typeof (g_filename_display_basename) g_filename_display_basename __attribute((alias("IA__g_filename_display_basename"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_filename_from_uri 
+extern __typeof (g_filename_from_uri) g_filename_from_uri __attribute((alias("IA__g_filename_from_uri"), visibility("default")));
+
+#undef g_filename_from_utf8 
+extern __typeof (g_filename_from_utf8) g_filename_from_utf8 __attribute((alias("IA__g_filename_from_utf8"), visibility("default")));
+
+#undef g_filename_to_uri 
+extern __typeof (g_filename_to_uri) g_filename_to_uri __attribute((alias("IA__g_filename_to_uri"), visibility("default")));
+
+#undef g_filename_to_utf8 
+extern __typeof (g_filename_to_utf8) g_filename_to_utf8 __attribute((alias("IA__g_filename_to_utf8"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_filename_from_uri_utf8 
+extern __typeof (g_filename_from_uri_utf8) g_filename_from_uri_utf8 __attribute((alias("IA__g_filename_from_uri_utf8"), visibility("default")));
+
+#undef g_filename_from_utf8_utf8 
+extern __typeof (g_filename_from_utf8_utf8) g_filename_from_utf8_utf8 __attribute((alias("IA__g_filename_from_utf8_utf8"), visibility("default")));
+
+#undef g_filename_to_uri_utf8 
+extern __typeof (g_filename_to_uri_utf8) g_filename_to_uri_utf8 __attribute((alias("IA__g_filename_to_uri_utf8"), visibility("default")));
+
+#undef g_filename_to_utf8_utf8 
+extern __typeof (g_filename_to_utf8_utf8) g_filename_to_utf8_utf8 __attribute((alias("IA__g_filename_to_utf8_utf8"), visibility("default")));
+
+#endif
+#undef g_uri_list_extract_uris 
+extern __typeof (g_uri_list_extract_uris) g_uri_list_extract_uris __attribute((alias("IA__g_uri_list_extract_uris"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_DATASET_H__)
+#if IN_FILE(__G_DATASET_C__)
+#undef g_datalist_clear 
+extern __typeof (g_datalist_clear) g_datalist_clear __attribute((alias("IA__g_datalist_clear"), visibility("default")));
+
+#undef g_datalist_foreach 
+extern __typeof (g_datalist_foreach) g_datalist_foreach __attribute((alias("IA__g_datalist_foreach"), visibility("default")));
+
+#undef g_datalist_get_flags 
+extern __typeof (g_datalist_get_flags) g_datalist_get_flags __attribute((alias("IA__g_datalist_get_flags"), visibility("default")));
+
+#undef g_datalist_id_get_data 
+extern __typeof (g_datalist_id_get_data) g_datalist_id_get_data __attribute((alias("IA__g_datalist_id_get_data"), visibility("default")));
+
+#undef g_datalist_id_remove_no_notify 
+extern __typeof (g_datalist_id_remove_no_notify) g_datalist_id_remove_no_notify __attribute((alias("IA__g_datalist_id_remove_no_notify"), visibility("default")));
+
+#undef g_datalist_id_set_data_full 
+extern __typeof (g_datalist_id_set_data_full) g_datalist_id_set_data_full __attribute((alias("IA__g_datalist_id_set_data_full"), visibility("default")));
+
+#undef g_datalist_set_flags 
+extern __typeof (g_datalist_set_flags) g_datalist_set_flags __attribute((alias("IA__g_datalist_set_flags"), visibility("default")));
+
+#undef g_datalist_unset_flags 
+extern __typeof (g_datalist_unset_flags) g_datalist_unset_flags __attribute((alias("IA__g_datalist_unset_flags"), visibility("default")));
+
+#undef g_datalist_init 
+extern __typeof (g_datalist_init) g_datalist_init __attribute((alias("IA__g_datalist_init"), visibility("default")));
+
+#undef g_dataset_destroy 
+extern __typeof (g_dataset_destroy) g_dataset_destroy __attribute((alias("IA__g_dataset_destroy"), visibility("default")));
+
+#undef g_dataset_foreach 
+extern __typeof (g_dataset_foreach) g_dataset_foreach __attribute((alias("IA__g_dataset_foreach"), visibility("default")));
+
+#undef g_dataset_id_get_data 
+extern __typeof (g_dataset_id_get_data) g_dataset_id_get_data __attribute((alias("IA__g_dataset_id_get_data"), visibility("default")));
+
+#undef g_dataset_id_remove_no_notify 
+extern __typeof (g_dataset_id_remove_no_notify) g_dataset_id_remove_no_notify __attribute((alias("IA__g_dataset_id_remove_no_notify"), visibility("default")));
+
+#undef g_dataset_id_set_data_full 
+extern __typeof (g_dataset_id_set_data_full) g_dataset_id_set_data_full __attribute((alias("IA__g_dataset_id_set_data_full"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_QUARK_H__)
+#if IN_FILE(__G_DATASET_C__)
+#undef g_quark_from_static_string 
+extern __typeof (g_quark_from_static_string) g_quark_from_static_string __attribute((alias("IA__g_quark_from_static_string"), visibility("default")));
+
+#undef g_quark_from_string 
+extern __typeof (g_quark_from_string) g_quark_from_string __attribute((alias("IA__g_quark_from_string"), visibility("default")));
+
+#undef g_quark_to_string 
+extern __typeof (g_quark_to_string) g_quark_to_string __attribute((alias("IA__g_quark_to_string"), visibility("default")));
+
+#undef g_quark_try_string 
+extern __typeof (g_quark_try_string) g_quark_try_string __attribute((alias("IA__g_quark_try_string"), visibility("default")));
+
+#undef g_intern_string 
+extern __typeof (g_intern_string) g_intern_string __attribute((alias("IA__g_intern_string"), visibility("default")));
+
+#undef g_intern_static_string 
+extern __typeof (g_intern_static_string) g_intern_static_string __attribute((alias("IA__g_intern_static_string"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_DATE_H__)
+#if IN_FILE(__G_DATE_C__)
+#undef g_date_add_days 
+extern __typeof (g_date_add_days) g_date_add_days __attribute((alias("IA__g_date_add_days"), visibility("default")));
+
+#undef g_date_add_months 
+extern __typeof (g_date_add_months) g_date_add_months __attribute((alias("IA__g_date_add_months"), visibility("default")));
+
+#undef g_date_add_years 
+extern __typeof (g_date_add_years) g_date_add_years __attribute((alias("IA__g_date_add_years"), visibility("default")));
+
+#undef g_date_clamp 
+extern __typeof (g_date_clamp) g_date_clamp __attribute((alias("IA__g_date_clamp"), visibility("default")));
+
+#undef g_date_clear 
+extern __typeof (g_date_clear) g_date_clear __attribute((alias("IA__g_date_clear"), visibility("default")));
+
+#undef g_date_compare 
+extern __typeof (g_date_compare) g_date_compare __attribute((alias("IA__g_date_compare"), visibility("default")));
+
+#undef g_date_days_between 
+extern __typeof (g_date_days_between) g_date_days_between __attribute((alias("IA__g_date_days_between"), visibility("default")));
+
+#undef g_date_free 
+extern __typeof (g_date_free) g_date_free __attribute((alias("IA__g_date_free"), visibility("default")));
+
+#undef g_date_get_day 
+extern __typeof (g_date_get_day) g_date_get_day __attribute((alias("IA__g_date_get_day"), visibility("default")));
+
+#undef g_date_get_day_of_year 
+extern __typeof (g_date_get_day_of_year) g_date_get_day_of_year __attribute((alias("IA__g_date_get_day_of_year"), visibility("default")));
+
+#undef g_date_get_days_in_month 
+extern __typeof (g_date_get_days_in_month) g_date_get_days_in_month __attribute((alias("IA__g_date_get_days_in_month"), visibility("default")));
+
+#undef g_date_get_iso8601_week_of_year 
+extern __typeof (g_date_get_iso8601_week_of_year) g_date_get_iso8601_week_of_year __attribute((alias("IA__g_date_get_iso8601_week_of_year"), visibility("default")));
+
+#undef g_date_get_julian 
+extern __typeof (g_date_get_julian) g_date_get_julian __attribute((alias("IA__g_date_get_julian"), visibility("default")));
+
+#undef g_date_get_monday_week_of_year 
+extern __typeof (g_date_get_monday_week_of_year) g_date_get_monday_week_of_year __attribute((alias("IA__g_date_get_monday_week_of_year"), visibility("default")));
+
+#undef g_date_get_monday_weeks_in_year 
+extern __typeof (g_date_get_monday_weeks_in_year) g_date_get_monday_weeks_in_year __attribute((alias("IA__g_date_get_monday_weeks_in_year"), visibility("default")));
+
+#undef g_date_get_month 
+extern __typeof (g_date_get_month) g_date_get_month __attribute((alias("IA__g_date_get_month"), visibility("default")));
+
+#undef g_date_get_sunday_week_of_year 
+extern __typeof (g_date_get_sunday_week_of_year) g_date_get_sunday_week_of_year __attribute((alias("IA__g_date_get_sunday_week_of_year"), visibility("default")));
+
+#undef g_date_get_sunday_weeks_in_year 
+extern __typeof (g_date_get_sunday_weeks_in_year) g_date_get_sunday_weeks_in_year __attribute((alias("IA__g_date_get_sunday_weeks_in_year"), visibility("default")));
+
+#undef g_date_get_weekday 
+extern __typeof (g_date_get_weekday) g_date_get_weekday __attribute((alias("IA__g_date_get_weekday"), visibility("default")));
+
+#undef g_date_get_year 
+extern __typeof (g_date_get_year) g_date_get_year __attribute((alias("IA__g_date_get_year"), visibility("default")));
+
+#undef g_date_is_first_of_month 
+extern __typeof (g_date_is_first_of_month) g_date_is_first_of_month __attribute((alias("IA__g_date_is_first_of_month"), visibility("default")));
+
+#undef g_date_is_last_of_month 
+extern __typeof (g_date_is_last_of_month) g_date_is_last_of_month __attribute((alias("IA__g_date_is_last_of_month"), visibility("default")));
+
+#undef g_date_is_leap_year 
+extern __typeof (g_date_is_leap_year) g_date_is_leap_year __attribute((alias("IA__g_date_is_leap_year"), visibility("default")));
+
+#undef g_date_new 
+extern __typeof (g_date_new) g_date_new __attribute((alias("IA__g_date_new"), visibility("default")));
+
+#undef g_date_new_dmy 
+extern __typeof (g_date_new_dmy) g_date_new_dmy __attribute((alias("IA__g_date_new_dmy"), visibility("default")));
+
+#undef g_date_new_julian 
+extern __typeof (g_date_new_julian) g_date_new_julian __attribute((alias("IA__g_date_new_julian"), visibility("default")));
+
+#undef g_date_order 
+extern __typeof (g_date_order) g_date_order __attribute((alias("IA__g_date_order"), visibility("default")));
+
+#undef g_date_set_day 
+extern __typeof (g_date_set_day) g_date_set_day __attribute((alias("IA__g_date_set_day"), visibility("default")));
+
+#undef g_date_set_dmy 
+extern __typeof (g_date_set_dmy) g_date_set_dmy __attribute((alias("IA__g_date_set_dmy"), visibility("default")));
+
+#undef g_date_set_julian 
+extern __typeof (g_date_set_julian) g_date_set_julian __attribute((alias("IA__g_date_set_julian"), visibility("default")));
+
+#undef g_date_set_month 
+extern __typeof (g_date_set_month) g_date_set_month __attribute((alias("IA__g_date_set_month"), visibility("default")));
+
+#undef g_date_set_parse 
+extern __typeof (g_date_set_parse) g_date_set_parse __attribute((alias("IA__g_date_set_parse"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_date_set_time 
+extern __typeof (g_date_set_time) g_date_set_time __attribute((alias("IA__g_date_set_time"), visibility("default")));
+
+#endif
+#undef g_date_set_time_t 
+extern __typeof (g_date_set_time_t) g_date_set_time_t __attribute((alias("IA__g_date_set_time_t"), visibility("default")));
+
+#undef g_date_set_time_val 
+extern __typeof (g_date_set_time_val) g_date_set_time_val __attribute((alias("IA__g_date_set_time_val"), visibility("default")));
+
+#undef g_date_set_year 
+extern __typeof (g_date_set_year) g_date_set_year __attribute((alias("IA__g_date_set_year"), visibility("default")));
+
+#undef g_date_strftime 
+extern __typeof (g_date_strftime) g_date_strftime __attribute((alias("IA__g_date_strftime"), visibility("default")));
+
+#undef g_date_subtract_days 
+extern __typeof (g_date_subtract_days) g_date_subtract_days __attribute((alias("IA__g_date_subtract_days"), visibility("default")));
+
+#undef g_date_subtract_months 
+extern __typeof (g_date_subtract_months) g_date_subtract_months __attribute((alias("IA__g_date_subtract_months"), visibility("default")));
+
+#undef g_date_subtract_years 
+extern __typeof (g_date_subtract_years) g_date_subtract_years __attribute((alias("IA__g_date_subtract_years"), visibility("default")));
+
+#undef g_date_to_struct_tm 
+extern __typeof (g_date_to_struct_tm) g_date_to_struct_tm __attribute((alias("IA__g_date_to_struct_tm"), visibility("default")));
+
+#undef g_date_valid 
+extern __typeof (g_date_valid) g_date_valid __attribute((alias("IA__g_date_valid"), visibility("default")));
+
+#undef g_date_valid_day 
+extern __typeof (g_date_valid_day) g_date_valid_day __attribute((alias("IA__g_date_valid_day"), visibility("default")));
+
+#undef g_date_valid_dmy 
+extern __typeof (g_date_valid_dmy) g_date_valid_dmy __attribute((alias("IA__g_date_valid_dmy"), visibility("default")));
+
+#undef g_date_valid_julian 
+extern __typeof (g_date_valid_julian) g_date_valid_julian __attribute((alias("IA__g_date_valid_julian"), visibility("default")));
+
+#undef g_date_valid_month 
+extern __typeof (g_date_valid_month) g_date_valid_month __attribute((alias("IA__g_date_valid_month"), visibility("default")));
+
+#undef g_date_valid_weekday 
+extern __typeof (g_date_valid_weekday) g_date_valid_weekday __attribute((alias("IA__g_date_valid_weekday"), visibility("default")));
+
+#undef g_date_valid_year 
+extern __typeof (g_date_valid_year) g_date_valid_year __attribute((alias("IA__g_date_valid_year"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_DIR_H__)
+#if IN_FILE(__G_DIR_C__)
+#undef g_dir_close 
+extern __typeof (g_dir_close) g_dir_close __attribute((alias("IA__g_dir_close"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_dir_open 
+extern __typeof (g_dir_open) g_dir_open __attribute((alias("IA__g_dir_open"), visibility("default")));
+
+#undef g_dir_read_name 
+extern __typeof (g_dir_read_name) g_dir_read_name __attribute((alias("IA__g_dir_read_name"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_dir_open_utf8 
+extern __typeof (g_dir_open_utf8) g_dir_open_utf8 __attribute((alias("IA__g_dir_open_utf8"), visibility("default")));
+
+#undef g_dir_read_name_utf8 
+extern __typeof (g_dir_read_name_utf8) g_dir_read_name_utf8 __attribute((alias("IA__g_dir_read_name_utf8"), visibility("default")));
+
+#endif
+#undef g_dir_rewind 
+extern __typeof (g_dir_rewind) g_dir_rewind __attribute((alias("IA__g_dir_rewind"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_ERROR_H__)
+#if IN_FILE(__G_ERROR_C__)
+#undef g_clear_error 
+extern __typeof (g_clear_error) g_clear_error __attribute((alias("IA__g_clear_error"), visibility("default")));
+
+#undef g_error_copy 
+extern __typeof (g_error_copy) g_error_copy __attribute((alias("IA__g_error_copy"), visibility("default")));
+
+#undef g_error_free 
+extern __typeof (g_error_free) g_error_free __attribute((alias("IA__g_error_free"), visibility("default")));
+
+#undef g_error_matches 
+extern __typeof (g_error_matches) g_error_matches __attribute((alias("IA__g_error_matches"), visibility("default")));
+
+#undef g_error_new 
+extern __typeof (g_error_new) g_error_new __attribute((alias("IA__g_error_new"), visibility("default")));
+
+#undef g_error_new_literal 
+extern __typeof (g_error_new_literal) g_error_new_literal __attribute((alias("IA__g_error_new_literal"), visibility("default")));
+
+#undef g_propagate_error 
+extern __typeof (g_propagate_error) g_propagate_error __attribute((alias("IA__g_propagate_error"), visibility("default")));
+
+#undef g_set_error 
+extern __typeof (g_set_error) g_set_error __attribute((alias("IA__g_set_error"), visibility("default")));
+
+#undef g_set_error_literal 
+extern __typeof (g_set_error_literal) g_set_error_literal __attribute((alias("IA__g_set_error_literal"), visibility("default")));
+
+#undef g_prefix_error 
+extern __typeof (g_prefix_error) g_prefix_error __attribute((alias("IA__g_prefix_error"), visibility("default")));
+
+#undef g_propagate_prefixed_error 
+extern __typeof (g_propagate_prefixed_error) g_propagate_prefixed_error __attribute((alias("IA__g_propagate_prefixed_error"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_FILEUTILS_H__)
+#if IN_FILE(__G_FILEUTILS_C__)
+#undef g_build_filename 
+extern __typeof (g_build_filename) g_build_filename __attribute((alias("IA__g_build_filename"), visibility("default")));
+
+#undef g_build_filenamev 
+extern __typeof (g_build_filenamev) g_build_filenamev __attribute((alias("IA__g_build_filenamev"), visibility("default")));
+
+#undef g_build_path 
+extern __typeof (g_build_path) g_build_path __attribute((alias("IA__g_build_path"), visibility("default")));
+
+#undef g_build_pathv 
+extern __typeof (g_build_pathv) g_build_pathv __attribute((alias("IA__g_build_pathv"), visibility("default")));
+
+#undef g_file_error_from_errno 
+extern __typeof (g_file_error_from_errno) g_file_error_from_errno __attribute((alias("IA__g_file_error_from_errno"), visibility("default")));
+
+#undef g_file_error_quark 
+extern __typeof (g_file_error_quark) g_file_error_quark __attribute((alias("IA__g_file_error_quark"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_file_get_contents 
+extern __typeof (g_file_get_contents) g_file_get_contents __attribute((alias("IA__g_file_get_contents"), visibility("default")));
+
+#endif
+#undef g_file_set_contents 
+extern __typeof (g_file_set_contents) g_file_set_contents __attribute((alias("IA__g_file_set_contents"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_file_open_tmp 
+extern __typeof (g_file_open_tmp) g_file_open_tmp __attribute((alias("IA__g_file_open_tmp"), visibility("default")));
+
+#undef g_file_test 
+extern __typeof (g_file_test) g_file_test __attribute((alias("IA__g_file_test"), visibility("default")));
+
+#endif
+#undef g_file_read_link 
+extern __typeof (g_file_read_link) g_file_read_link __attribute((alias("IA__g_file_read_link"), visibility("default")));
+
+#undef g_format_size_for_display 
+extern __typeof (g_format_size_for_display) g_format_size_for_display __attribute((alias("IA__g_format_size_for_display"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_mkstemp 
+extern __typeof (g_mkstemp) g_mkstemp __attribute((alias("IA__g_mkstemp"), visibility("default")));
+
+#endif
+#undef g_mkdir_with_parents 
+extern __typeof (g_mkdir_with_parents) g_mkdir_with_parents __attribute((alias("IA__g_mkdir_with_parents"), visibility("default")));
+
+#ifdef G_OS_WIN32
+#undef g_file_get_contents_utf8 
+extern __typeof (g_file_get_contents_utf8) g_file_get_contents_utf8 __attribute((alias("IA__g_file_get_contents_utf8"), visibility("default")));
+
+#undef g_file_open_tmp_utf8 
+extern __typeof (g_file_open_tmp_utf8) g_file_open_tmp_utf8 __attribute((alias("IA__g_file_open_tmp_utf8"), visibility("default")));
+
+#undef g_file_test_utf8 
+extern __typeof (g_file_test_utf8) g_file_test_utf8 __attribute((alias("IA__g_file_test_utf8"), visibility("default")));
+
+#undef g_mkstemp_utf8 
+extern __typeof (g_mkstemp_utf8) g_mkstemp_utf8 __attribute((alias("IA__g_mkstemp_utf8"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_HASH_H__)
+#if IN_FILE(__G_HASH_C__)
+#undef g_hash_table_destroy 
+extern __typeof (g_hash_table_destroy) g_hash_table_destroy __attribute((alias("IA__g_hash_table_destroy"), visibility("default")));
+
+#undef g_hash_table_unref 
+extern __typeof (g_hash_table_unref) g_hash_table_unref __attribute((alias("IA__g_hash_table_unref"), visibility("default")));
+
+#undef g_hash_table_ref 
+extern __typeof (g_hash_table_ref) g_hash_table_ref __attribute((alias("IA__g_hash_table_ref"), visibility("default")));
+
+#undef g_hash_table_find 
+extern __typeof (g_hash_table_find) g_hash_table_find __attribute((alias("IA__g_hash_table_find"), visibility("default")));
+
+#undef g_hash_table_foreach 
+extern __typeof (g_hash_table_foreach) g_hash_table_foreach __attribute((alias("IA__g_hash_table_foreach"), visibility("default")));
+
+#undef g_hash_table_foreach_remove 
+extern __typeof (g_hash_table_foreach_remove) g_hash_table_foreach_remove __attribute((alias("IA__g_hash_table_foreach_remove"), visibility("default")));
+
+#undef g_hash_table_foreach_steal 
+extern __typeof (g_hash_table_foreach_steal) g_hash_table_foreach_steal __attribute((alias("IA__g_hash_table_foreach_steal"), visibility("default")));
+
+#undef g_hash_table_get_keys 
+extern __typeof (g_hash_table_get_keys) g_hash_table_get_keys __attribute((alias("IA__g_hash_table_get_keys"), visibility("default")));
+
+#undef g_hash_table_get_values 
+extern __typeof (g_hash_table_get_values) g_hash_table_get_values __attribute((alias("IA__g_hash_table_get_values"), visibility("default")));
+
+#undef g_hash_table_insert 
+extern __typeof (g_hash_table_insert) g_hash_table_insert __attribute((alias("IA__g_hash_table_insert"), visibility("default")));
+
+#undef g_hash_table_lookup 
+extern __typeof (g_hash_table_lookup) g_hash_table_lookup __attribute((alias("IA__g_hash_table_lookup"), visibility("default")));
+
+#undef g_hash_table_lookup_extended 
+extern __typeof (g_hash_table_lookup_extended) g_hash_table_lookup_extended __attribute((alias("IA__g_hash_table_lookup_extended"), visibility("default")));
+
+#undef g_hash_table_new 
+extern __typeof (g_hash_table_new) g_hash_table_new __attribute((alias("IA__g_hash_table_new"), visibility("default")));
+
+#undef g_hash_table_new_full 
+extern __typeof (g_hash_table_new_full) g_hash_table_new_full __attribute((alias("IA__g_hash_table_new_full"), visibility("default")));
+
+#undef g_hash_table_remove 
+extern __typeof (g_hash_table_remove) g_hash_table_remove __attribute((alias("IA__g_hash_table_remove"), visibility("default")));
+
+#undef g_hash_table_remove_all 
+extern __typeof (g_hash_table_remove_all) g_hash_table_remove_all __attribute((alias("IA__g_hash_table_remove_all"), visibility("default")));
+
+#undef g_hash_table_replace 
+extern __typeof (g_hash_table_replace) g_hash_table_replace __attribute((alias("IA__g_hash_table_replace"), visibility("default")));
+
+#undef g_hash_table_size 
+extern __typeof (g_hash_table_size) g_hash_table_size __attribute((alias("IA__g_hash_table_size"), visibility("default")));
+
+#undef g_hash_table_steal 
+extern __typeof (g_hash_table_steal) g_hash_table_steal __attribute((alias("IA__g_hash_table_steal"), visibility("default")));
+
+#undef g_hash_table_steal_all 
+extern __typeof (g_hash_table_steal_all) g_hash_table_steal_all __attribute((alias("IA__g_hash_table_steal_all"), visibility("default")));
+
+#undef g_hash_table_iter_init 
+extern __typeof (g_hash_table_iter_init) g_hash_table_iter_init __attribute((alias("IA__g_hash_table_iter_init"), visibility("default")));
+
+#undef g_hash_table_iter_next 
+extern __typeof (g_hash_table_iter_next) g_hash_table_iter_next __attribute((alias("IA__g_hash_table_iter_next"), visibility("default")));
+
+#undef g_hash_table_iter_get_hash_table 
+extern __typeof (g_hash_table_iter_get_hash_table) g_hash_table_iter_get_hash_table __attribute((alias("IA__g_hash_table_iter_get_hash_table"), visibility("default")));
+
+#undef g_hash_table_iter_remove 
+extern __typeof (g_hash_table_iter_remove) g_hash_table_iter_remove __attribute((alias("IA__g_hash_table_iter_remove"), visibility("default")));
+
+#undef g_hash_table_iter_steal 
+extern __typeof (g_hash_table_iter_steal) g_hash_table_iter_steal __attribute((alias("IA__g_hash_table_iter_steal"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_HOOK_H__)
+#if IN_FILE(__G_HOOK_C__)
+#undef g_hook_alloc 
+extern __typeof (g_hook_alloc) g_hook_alloc __attribute((alias("IA__g_hook_alloc"), visibility("default")));
+
+#undef g_hook_compare_ids 
+extern __typeof (g_hook_compare_ids) g_hook_compare_ids __attribute((alias("IA__g_hook_compare_ids"), visibility("default")));
+
+#undef g_hook_destroy 
+extern __typeof (g_hook_destroy) g_hook_destroy __attribute((alias("IA__g_hook_destroy"), visibility("default")));
+
+#undef g_hook_destroy_link 
+extern __typeof (g_hook_destroy_link) g_hook_destroy_link __attribute((alias("IA__g_hook_destroy_link"), visibility("default")));
+
+#undef g_hook_find 
+extern __typeof (g_hook_find) g_hook_find __attribute((alias("IA__g_hook_find"), visibility("default")));
+
+#undef g_hook_find_data 
+extern __typeof (g_hook_find_data) g_hook_find_data __attribute((alias("IA__g_hook_find_data"), visibility("default")));
+
+#undef g_hook_find_func 
+extern __typeof (g_hook_find_func) g_hook_find_func __attribute((alias("IA__g_hook_find_func"), visibility("default")));
+
+#undef g_hook_find_func_data 
+extern __typeof (g_hook_find_func_data) g_hook_find_func_data __attribute((alias("IA__g_hook_find_func_data"), visibility("default")));
+
+#undef g_hook_first_valid 
+extern __typeof (g_hook_first_valid) g_hook_first_valid __attribute((alias("IA__g_hook_first_valid"), visibility("default")));
+
+#undef g_hook_free 
+extern __typeof (g_hook_free) g_hook_free __attribute((alias("IA__g_hook_free"), visibility("default")));
+
+#undef g_hook_get 
+extern __typeof (g_hook_get) g_hook_get __attribute((alias("IA__g_hook_get"), visibility("default")));
+
+#undef g_hook_insert_before 
+extern __typeof (g_hook_insert_before) g_hook_insert_before __attribute((alias("IA__g_hook_insert_before"), visibility("default")));
+
+#undef g_hook_insert_sorted 
+extern __typeof (g_hook_insert_sorted) g_hook_insert_sorted __attribute((alias("IA__g_hook_insert_sorted"), visibility("default")));
+
+#undef g_hook_list_clear 
+extern __typeof (g_hook_list_clear) g_hook_list_clear __attribute((alias("IA__g_hook_list_clear"), visibility("default")));
+
+#undef g_hook_list_init 
+extern __typeof (g_hook_list_init) g_hook_list_init __attribute((alias("IA__g_hook_list_init"), visibility("default")));
+
+#undef g_hook_list_invoke 
+extern __typeof (g_hook_list_invoke) g_hook_list_invoke __attribute((alias("IA__g_hook_list_invoke"), visibility("default")));
+
+#undef g_hook_list_invoke_check 
+extern __typeof (g_hook_list_invoke_check) g_hook_list_invoke_check __attribute((alias("IA__g_hook_list_invoke_check"), visibility("default")));
+
+#undef g_hook_list_marshal 
+extern __typeof (g_hook_list_marshal) g_hook_list_marshal __attribute((alias("IA__g_hook_list_marshal"), visibility("default")));
+
+#undef g_hook_list_marshal_check 
+extern __typeof (g_hook_list_marshal_check) g_hook_list_marshal_check __attribute((alias("IA__g_hook_list_marshal_check"), visibility("default")));
+
+#undef g_hook_next_valid 
+extern __typeof (g_hook_next_valid) g_hook_next_valid __attribute((alias("IA__g_hook_next_valid"), visibility("default")));
+
+#undef g_hook_prepend 
+extern __typeof (g_hook_prepend) g_hook_prepend __attribute((alias("IA__g_hook_prepend"), visibility("default")));
+
+#undef g_hook_ref 
+extern __typeof (g_hook_ref) g_hook_ref __attribute((alias("IA__g_hook_ref"), visibility("default")));
+
+#undef g_hook_unref 
+extern __typeof (g_hook_unref) g_hook_unref __attribute((alias("IA__g_hook_unref"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IOCHANNEL_C__)
+#undef g_io_add_watch 
+extern __typeof (g_io_add_watch) g_io_add_watch __attribute((alias("IA__g_io_add_watch"), visibility("default")));
+
+#undef g_io_add_watch_full 
+extern __typeof (g_io_add_watch_full) g_io_add_watch_full __attribute((alias("IA__g_io_add_watch_full"), visibility("default")));
+
+#undef g_io_create_watch 
+extern __typeof (g_io_create_watch) g_io_create_watch __attribute((alias("IA__g_io_create_watch"), visibility("default")));
+
+#undef g_io_channel_error_from_errno 
+extern __typeof (g_io_channel_error_from_errno) g_io_channel_error_from_errno __attribute((alias("IA__g_io_channel_error_from_errno"), visibility("default")));
+
+#undef g_io_channel_error_quark 
+extern __typeof (g_io_channel_error_quark) g_io_channel_error_quark __attribute((alias("IA__g_io_channel_error_quark"), visibility("default")));
+
+#undef g_io_channel_flush 
+extern __typeof (g_io_channel_flush) g_io_channel_flush __attribute((alias("IA__g_io_channel_flush"), visibility("default")));
+
+#undef g_io_channel_get_buffer_condition 
+extern __typeof (g_io_channel_get_buffer_condition) g_io_channel_get_buffer_condition __attribute((alias("IA__g_io_channel_get_buffer_condition"), visibility("default")));
+
+#undef g_io_channel_get_buffered 
+extern __typeof (g_io_channel_get_buffered) g_io_channel_get_buffered __attribute((alias("IA__g_io_channel_get_buffered"), visibility("default")));
+
+#undef g_io_channel_get_buffer_size 
+extern __typeof (g_io_channel_get_buffer_size) g_io_channel_get_buffer_size __attribute((alias("IA__g_io_channel_get_buffer_size"), visibility("default")));
+
+#undef g_io_channel_get_close_on_unref 
+extern __typeof (g_io_channel_get_close_on_unref) g_io_channel_get_close_on_unref __attribute((alias("IA__g_io_channel_get_close_on_unref"), visibility("default")));
+
+#undef g_io_channel_get_encoding 
+extern __typeof (g_io_channel_get_encoding) g_io_channel_get_encoding __attribute((alias("IA__g_io_channel_get_encoding"), visibility("default")));
+
+#undef g_io_channel_get_flags 
+extern __typeof (g_io_channel_get_flags) g_io_channel_get_flags __attribute((alias("IA__g_io_channel_get_flags"), visibility("default")));
+
+#undef g_io_channel_get_line_term 
+extern __typeof (g_io_channel_get_line_term) g_io_channel_get_line_term __attribute((alias("IA__g_io_channel_get_line_term"), visibility("default")));
+
+#undef g_io_channel_init 
+extern __typeof (g_io_channel_init) g_io_channel_init __attribute((alias("IA__g_io_channel_init"), visibility("default")));
+
+#undef g_io_channel_read_chars 
+extern __typeof (g_io_channel_read_chars) g_io_channel_read_chars __attribute((alias("IA__g_io_channel_read_chars"), visibility("default")));
+
+#undef g_io_channel_read_line 
+extern __typeof (g_io_channel_read_line) g_io_channel_read_line __attribute((alias("IA__g_io_channel_read_line"), visibility("default")));
+
+#undef g_io_channel_read_line_string 
+extern __typeof (g_io_channel_read_line_string) g_io_channel_read_line_string __attribute((alias("IA__g_io_channel_read_line_string"), visibility("default")));
+
+#undef g_io_channel_read_to_end 
+extern __typeof (g_io_channel_read_to_end) g_io_channel_read_to_end __attribute((alias("IA__g_io_channel_read_to_end"), visibility("default")));
+
+#undef g_io_channel_read_unichar 
+extern __typeof (g_io_channel_read_unichar) g_io_channel_read_unichar __attribute((alias("IA__g_io_channel_read_unichar"), visibility("default")));
+
+#undef g_io_channel_ref 
+extern __typeof (g_io_channel_ref) g_io_channel_ref __attribute((alias("IA__g_io_channel_ref"), visibility("default")));
+
+#undef g_io_channel_seek_position 
+extern __typeof (g_io_channel_seek_position) g_io_channel_seek_position __attribute((alias("IA__g_io_channel_seek_position"), visibility("default")));
+
+#undef g_io_channel_set_buffered 
+extern __typeof (g_io_channel_set_buffered) g_io_channel_set_buffered __attribute((alias("IA__g_io_channel_set_buffered"), visibility("default")));
+
+#undef g_io_channel_set_buffer_size 
+extern __typeof (g_io_channel_set_buffer_size) g_io_channel_set_buffer_size __attribute((alias("IA__g_io_channel_set_buffer_size"), visibility("default")));
+
+#undef g_io_channel_set_close_on_unref 
+extern __typeof (g_io_channel_set_close_on_unref) g_io_channel_set_close_on_unref __attribute((alias("IA__g_io_channel_set_close_on_unref"), visibility("default")));
+
+#undef g_io_channel_set_encoding 
+extern __typeof (g_io_channel_set_encoding) g_io_channel_set_encoding __attribute((alias("IA__g_io_channel_set_encoding"), visibility("default")));
+
+#undef g_io_channel_set_flags 
+extern __typeof (g_io_channel_set_flags) g_io_channel_set_flags __attribute((alias("IA__g_io_channel_set_flags"), visibility("default")));
+
+#undef g_io_channel_set_line_term 
+extern __typeof (g_io_channel_set_line_term) g_io_channel_set_line_term __attribute((alias("IA__g_io_channel_set_line_term"), visibility("default")));
+
+#undef g_io_channel_shutdown 
+extern __typeof (g_io_channel_shutdown) g_io_channel_shutdown __attribute((alias("IA__g_io_channel_shutdown"), visibility("default")));
+
+#undef g_io_channel_unref 
+extern __typeof (g_io_channel_unref) g_io_channel_unref __attribute((alias("IA__g_io_channel_unref"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_io_channel_close 
+extern __typeof (g_io_channel_close) g_io_channel_close __attribute((alias("IA__g_io_channel_close"), visibility("default")));
+
+#undef g_io_channel_read 
+extern __typeof (g_io_channel_read) g_io_channel_read __attribute((alias("IA__g_io_channel_read"), visibility("default")));
+
+#undef g_io_channel_seek 
+extern __typeof (g_io_channel_seek) g_io_channel_seek __attribute((alias("IA__g_io_channel_seek"), visibility("default")));
+
+#undef g_io_channel_write 
+extern __typeof (g_io_channel_write) g_io_channel_write __attribute((alias("IA__g_io_channel_write"), visibility("default")));
+
+#endif
+#undef g_io_channel_write_chars 
+extern __typeof (g_io_channel_write_chars) g_io_channel_write_chars __attribute((alias("IA__g_io_channel_write_chars"), visibility("default")));
+
+#undef g_io_channel_write_unichar 
+extern __typeof (g_io_channel_write_unichar) g_io_channel_write_unichar __attribute((alias("IA__g_io_channel_write_unichar"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IO_UNIX_C__)
+#ifdef G_OS_UNIX
+#undef g_io_channel_unix_get_fd 
+extern __typeof (g_io_channel_unix_get_fd) g_io_channel_unix_get_fd __attribute((alias("IA__g_io_channel_unix_get_fd"), visibility("default")));
+
+#undef g_io_channel_unix_new 
+extern __typeof (g_io_channel_unix_new) g_io_channel_unix_new __attribute((alias("IA__g_io_channel_unix_new"), visibility("default")));
+
+#undef g_io_channel_new_file 
+extern __typeof (g_io_channel_new_file) g_io_channel_new_file __attribute((alias("IA__g_io_channel_new_file"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_IOCHANNEL_H__)
+#if IN_FILE(__G_IO_WIN32_C__)
+#ifdef G_OS_WIN32
+#undef g_io_channel_unix_get_fd 
+extern __typeof (g_io_channel_unix_get_fd) g_io_channel_unix_get_fd __attribute((alias("IA__g_io_channel_unix_get_fd"), visibility("default")));
+
+#undef g_io_channel_unix_new 
+extern __typeof (g_io_channel_unix_new) g_io_channel_unix_new __attribute((alias("IA__g_io_channel_unix_new"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_io_channel_new_file 
+extern __typeof (g_io_channel_new_file) g_io_channel_new_file __attribute((alias("IA__g_io_channel_new_file"), visibility("default")));
+
+#endif
+#undef g_io_channel_new_file_utf8 
+extern __typeof (g_io_channel_new_file_utf8) g_io_channel_new_file_utf8 __attribute((alias("IA__g_io_channel_new_file_utf8"), visibility("default")));
+
+#undef g_io_channel_win32_get_fd 
+extern __typeof (g_io_channel_win32_get_fd) g_io_channel_win32_get_fd __attribute((alias("IA__g_io_channel_win32_get_fd"), visibility("default")));
+
+#undef g_io_channel_win32_make_pollfd 
+extern __typeof (g_io_channel_win32_make_pollfd) g_io_channel_win32_make_pollfd __attribute((alias("IA__g_io_channel_win32_make_pollfd"), visibility("default")));
+
+#undef g_io_channel_win32_new_fd 
+extern __typeof (g_io_channel_win32_new_fd) g_io_channel_win32_new_fd __attribute((alias("IA__g_io_channel_win32_new_fd"), visibility("default")));
+
+#undef g_io_channel_win32_new_messages 
+extern __typeof (g_io_channel_win32_new_messages) g_io_channel_win32_new_messages __attribute((alias("IA__g_io_channel_win32_new_messages"), visibility("default")));
+
+#undef g_io_channel_win32_new_socket 
+extern __typeof (g_io_channel_win32_new_socket) g_io_channel_win32_new_socket __attribute((alias("IA__g_io_channel_win32_new_socket"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_io_channel_win32_new_stream_socket 
+extern __typeof (g_io_channel_win32_new_stream_socket) g_io_channel_win32_new_stream_socket __attribute((alias("IA__g_io_channel_win32_new_stream_socket"), visibility("default")));
+
+#endif
+#undef g_io_channel_win32_poll 
+extern __typeof (g_io_channel_win32_poll) g_io_channel_win32_poll __attribute((alias("IA__g_io_channel_win32_poll"), visibility("default")));
+
+#undef g_io_channel_win32_set_debug 
+extern __typeof (g_io_channel_win32_set_debug) g_io_channel_win32_set_debug __attribute((alias("IA__g_io_channel_win32_set_debug"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_KEY_FILE_H__)
+#if IN_FILE(__G_KEY_FILE_C__)
+#undef g_key_file_error_quark 
+extern __typeof (g_key_file_error_quark) g_key_file_error_quark __attribute((alias("IA__g_key_file_error_quark"), visibility("default")));
+
+#undef g_key_file_free 
+extern __typeof (g_key_file_free) g_key_file_free __attribute((alias("IA__g_key_file_free"), visibility("default")));
+
+#undef g_key_file_get_boolean 
+extern __typeof (g_key_file_get_boolean) g_key_file_get_boolean __attribute((alias("IA__g_key_file_get_boolean"), visibility("default")));
+
+#undef g_key_file_get_boolean_list 
+extern __typeof (g_key_file_get_boolean_list) g_key_file_get_boolean_list __attribute((alias("IA__g_key_file_get_boolean_list"), visibility("default")));
+
+#undef g_key_file_get_comment 
+extern __typeof (g_key_file_get_comment) g_key_file_get_comment __attribute((alias("IA__g_key_file_get_comment"), visibility("default")));
+
+#undef g_key_file_get_groups 
+extern __typeof (g_key_file_get_groups) g_key_file_get_groups __attribute((alias("IA__g_key_file_get_groups"), visibility("default")));
+
+#undef g_key_file_get_double 
+extern __typeof (g_key_file_get_double) g_key_file_get_double __attribute((alias("IA__g_key_file_get_double"), visibility("default")));
+
+#undef g_key_file_get_double_list 
+extern __typeof (g_key_file_get_double_list) g_key_file_get_double_list __attribute((alias("IA__g_key_file_get_double_list"), visibility("default")));
+
+#undef g_key_file_get_integer 
+extern __typeof (g_key_file_get_integer) g_key_file_get_integer __attribute((alias("IA__g_key_file_get_integer"), visibility("default")));
+
+#undef g_key_file_get_integer_list 
+extern __typeof (g_key_file_get_integer_list) g_key_file_get_integer_list __attribute((alias("IA__g_key_file_get_integer_list"), visibility("default")));
+
+#undef g_key_file_get_keys 
+extern __typeof (g_key_file_get_keys) g_key_file_get_keys __attribute((alias("IA__g_key_file_get_keys"), visibility("default")));
+
+#undef g_key_file_get_locale_string 
+extern __typeof (g_key_file_get_locale_string) g_key_file_get_locale_string __attribute((alias("IA__g_key_file_get_locale_string"), visibility("default")));
+
+#undef g_key_file_get_locale_string_list 
+extern __typeof (g_key_file_get_locale_string_list) g_key_file_get_locale_string_list __attribute((alias("IA__g_key_file_get_locale_string_list"), visibility("default")));
+
+#undef g_key_file_get_start_group 
+extern __typeof (g_key_file_get_start_group) g_key_file_get_start_group __attribute((alias("IA__g_key_file_get_start_group"), visibility("default")));
+
+#undef g_key_file_get_string 
+extern __typeof (g_key_file_get_string) g_key_file_get_string __attribute((alias("IA__g_key_file_get_string"), visibility("default")));
+
+#undef g_key_file_get_string_list 
+extern __typeof (g_key_file_get_string_list) g_key_file_get_string_list __attribute((alias("IA__g_key_file_get_string_list"), visibility("default")));
+
+#undef g_key_file_get_value 
+extern __typeof (g_key_file_get_value) g_key_file_get_value __attribute((alias("IA__g_key_file_get_value"), visibility("default")));
+
+#undef g_key_file_has_group 
+extern __typeof (g_key_file_has_group) g_key_file_has_group __attribute((alias("IA__g_key_file_has_group"), visibility("default")));
+
+#undef g_key_file_has_key 
+extern __typeof (g_key_file_has_key) g_key_file_has_key __attribute((alias("IA__g_key_file_has_key"), visibility("default")));
+
+#undef g_key_file_load_from_dirs 
+extern __typeof (g_key_file_load_from_dirs) g_key_file_load_from_dirs __attribute((alias("IA__g_key_file_load_from_dirs"), visibility("default")));
+
+#undef g_key_file_load_from_data 
+extern __typeof (g_key_file_load_from_data) g_key_file_load_from_data __attribute((alias("IA__g_key_file_load_from_data"), visibility("default")));
+
+#undef g_key_file_load_from_data_dirs 
+extern __typeof (g_key_file_load_from_data_dirs) g_key_file_load_from_data_dirs __attribute((alias("IA__g_key_file_load_from_data_dirs"), visibility("default")));
+
+#undef g_key_file_load_from_file 
+extern __typeof (g_key_file_load_from_file) g_key_file_load_from_file __attribute((alias("IA__g_key_file_load_from_file"), visibility("default")));
+
+#undef g_key_file_new 
+extern __typeof (g_key_file_new) g_key_file_new __attribute((alias("IA__g_key_file_new"), visibility("default")));
+
+#undef g_key_file_remove_comment 
+extern __typeof (g_key_file_remove_comment) g_key_file_remove_comment __attribute((alias("IA__g_key_file_remove_comment"), visibility("default")));
+
+#undef g_key_file_remove_group 
+extern __typeof (g_key_file_remove_group) g_key_file_remove_group __attribute((alias("IA__g_key_file_remove_group"), visibility("default")));
+
+#undef g_key_file_remove_key 
+extern __typeof (g_key_file_remove_key) g_key_file_remove_key __attribute((alias("IA__g_key_file_remove_key"), visibility("default")));
+
+#undef g_key_file_set_boolean 
+extern __typeof (g_key_file_set_boolean) g_key_file_set_boolean __attribute((alias("IA__g_key_file_set_boolean"), visibility("default")));
+
+#undef g_key_file_set_boolean_list 
+extern __typeof (g_key_file_set_boolean_list) g_key_file_set_boolean_list __attribute((alias("IA__g_key_file_set_boolean_list"), visibility("default")));
+
+#undef g_key_file_set_comment 
+extern __typeof (g_key_file_set_comment) g_key_file_set_comment __attribute((alias("IA__g_key_file_set_comment"), visibility("default")));
+
+#undef g_key_file_set_double 
+extern __typeof (g_key_file_set_double) g_key_file_set_double __attribute((alias("IA__g_key_file_set_double"), visibility("default")));
+
+#undef g_key_file_set_double_list 
+extern __typeof (g_key_file_set_double_list) g_key_file_set_double_list __attribute((alias("IA__g_key_file_set_double_list"), visibility("default")));
+
+#undef g_key_file_set_integer 
+extern __typeof (g_key_file_set_integer) g_key_file_set_integer __attribute((alias("IA__g_key_file_set_integer"), visibility("default")));
+
+#undef g_key_file_set_integer_list 
+extern __typeof (g_key_file_set_integer_list) g_key_file_set_integer_list __attribute((alias("IA__g_key_file_set_integer_list"), visibility("default")));
+
+#undef g_key_file_set_list_separator 
+extern __typeof (g_key_file_set_list_separator) g_key_file_set_list_separator __attribute((alias("IA__g_key_file_set_list_separator"), visibility("default")));
+
+#undef g_key_file_set_locale_string 
+extern __typeof (g_key_file_set_locale_string) g_key_file_set_locale_string __attribute((alias("IA__g_key_file_set_locale_string"), visibility("default")));
+
+#undef g_key_file_set_locale_string_list 
+extern __typeof (g_key_file_set_locale_string_list) g_key_file_set_locale_string_list __attribute((alias("IA__g_key_file_set_locale_string_list"), visibility("default")));
+
+#undef g_key_file_set_string 
+extern __typeof (g_key_file_set_string) g_key_file_set_string __attribute((alias("IA__g_key_file_set_string"), visibility("default")));
+
+#undef g_key_file_set_string_list 
+extern __typeof (g_key_file_set_string_list) g_key_file_set_string_list __attribute((alias("IA__g_key_file_set_string_list"), visibility("default")));
+
+#undef g_key_file_set_value 
+extern __typeof (g_key_file_set_value) g_key_file_set_value __attribute((alias("IA__g_key_file_set_value"), visibility("default")));
+
+#undef g_key_file_to_data 
+extern __typeof (g_key_file_to_data) g_key_file_to_data __attribute((alias("IA__g_key_file_to_data"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_LIST_H__)
+#if IN_FILE(__G_LIST_C__)
+#undef g_list_alloc 
+extern __typeof (g_list_alloc) g_list_alloc __attribute((alias("IA__g_list_alloc"), visibility("default")));
+
+#undef g_list_append 
+extern __typeof (g_list_append) g_list_append __attribute((alias("IA__g_list_append"), visibility("default")));
+
+#undef g_list_concat 
+extern __typeof (g_list_concat) g_list_concat __attribute((alias("IA__g_list_concat"), visibility("default")));
+
+#undef g_list_copy 
+extern __typeof (g_list_copy) g_list_copy __attribute((alias("IA__g_list_copy"), visibility("default")));
+
+#undef g_list_delete_link 
+extern __typeof (g_list_delete_link) g_list_delete_link __attribute((alias("IA__g_list_delete_link"), visibility("default")));
+
+#undef g_list_find 
+extern __typeof (g_list_find) g_list_find __attribute((alias("IA__g_list_find"), visibility("default")));
+
+#undef g_list_find_custom 
+extern __typeof (g_list_find_custom) g_list_find_custom __attribute((alias("IA__g_list_find_custom"), visibility("default")));
+
+#undef g_list_first 
+extern __typeof (g_list_first) g_list_first __attribute((alias("IA__g_list_first"), visibility("default")));
+
+#undef g_list_foreach 
+extern __typeof (g_list_foreach) g_list_foreach __attribute((alias("IA__g_list_foreach"), visibility("default")));
+
+#undef g_list_free 
+extern __typeof (g_list_free) g_list_free __attribute((alias("IA__g_list_free"), visibility("default")));
+
+#undef g_list_free_1 
+extern __typeof (g_list_free_1) g_list_free_1 __attribute((alias("IA__g_list_free_1"), visibility("default")));
+
+#undef g_list_index 
+extern __typeof (g_list_index) g_list_index __attribute((alias("IA__g_list_index"), visibility("default")));
+
+#undef g_list_insert 
+extern __typeof (g_list_insert) g_list_insert __attribute((alias("IA__g_list_insert"), visibility("default")));
+
+#undef g_list_insert_before 
+extern __typeof (g_list_insert_before) g_list_insert_before __attribute((alias("IA__g_list_insert_before"), visibility("default")));
+
+#undef g_list_insert_sorted 
+extern __typeof (g_list_insert_sorted) g_list_insert_sorted __attribute((alias("IA__g_list_insert_sorted"), visibility("default")));
+
+#undef g_list_insert_sorted_with_data 
+extern __typeof (g_list_insert_sorted_with_data) g_list_insert_sorted_with_data __attribute((alias("IA__g_list_insert_sorted_with_data"), visibility("default")));
+
+#undef g_list_last 
+extern __typeof (g_list_last) g_list_last __attribute((alias("IA__g_list_last"), visibility("default")));
+
+#undef g_list_length 
+extern __typeof (g_list_length) g_list_length __attribute((alias("IA__g_list_length"), visibility("default")));
+
+#undef g_list_nth 
+extern __typeof (g_list_nth) g_list_nth __attribute((alias("IA__g_list_nth"), visibility("default")));
+
+#undef g_list_nth_data 
+extern __typeof (g_list_nth_data) g_list_nth_data __attribute((alias("IA__g_list_nth_data"), visibility("default")));
+
+#undef g_list_nth_prev 
+extern __typeof (g_list_nth_prev) g_list_nth_prev __attribute((alias("IA__g_list_nth_prev"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_list_pop_allocator 
+extern __typeof (g_list_pop_allocator) g_list_pop_allocator __attribute((alias("IA__g_list_pop_allocator"), visibility("default")));
+
+#endif
+#undef g_list_position 
+extern __typeof (g_list_position) g_list_position __attribute((alias("IA__g_list_position"), visibility("default")));
+
+#undef g_list_prepend 
+extern __typeof (g_list_prepend) g_list_prepend __attribute((alias("IA__g_list_prepend"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_list_push_allocator 
+extern __typeof (g_list_push_allocator) g_list_push_allocator __attribute((alias("IA__g_list_push_allocator"), visibility("default")));
+
+#endif
+#undef g_list_remove 
+extern __typeof (g_list_remove) g_list_remove __attribute((alias("IA__g_list_remove"), visibility("default")));
+
+#undef g_list_remove_all 
+extern __typeof (g_list_remove_all) g_list_remove_all __attribute((alias("IA__g_list_remove_all"), visibility("default")));
+
+#undef g_list_remove_link 
+extern __typeof (g_list_remove_link) g_list_remove_link __attribute((alias("IA__g_list_remove_link"), visibility("default")));
+
+#undef g_list_reverse 
+extern __typeof (g_list_reverse) g_list_reverse __attribute((alias("IA__g_list_reverse"), visibility("default")));
+
+#undef g_list_sort 
+extern __typeof (g_list_sort) g_list_sort __attribute((alias("IA__g_list_sort"), visibility("default")));
+
+#undef g_list_sort_with_data 
+extern __typeof (g_list_sort_with_data) g_list_sort_with_data __attribute((alias("IA__g_list_sort_with_data"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_MAIN_H__)
+#if IN_FILE(__G_MAIN_C__)
+#undef g_child_watch_add 
+extern __typeof (g_child_watch_add) g_child_watch_add __attribute((alias("IA__g_child_watch_add"), visibility("default")));
+
+#undef g_child_watch_add_full 
+extern __typeof (g_child_watch_add_full) g_child_watch_add_full __attribute((alias("IA__g_child_watch_add_full"), visibility("default")));
+
+#undef g_child_watch_source_new 
+extern __typeof (g_child_watch_source_new) g_child_watch_source_new __attribute((alias("IA__g_child_watch_source_new"), visibility("default")));
+
+#undef g_get_current_time 
+extern __typeof (g_get_current_time) g_get_current_time __attribute((alias("IA__g_get_current_time"), visibility("default")));
+
+#undef g_main_context_acquire 
+extern __typeof (g_main_context_acquire) g_main_context_acquire __attribute((alias("IA__g_main_context_acquire"), visibility("default")));
+
+#undef g_main_context_add_poll 
+extern __typeof (g_main_context_add_poll) g_main_context_add_poll __attribute((alias("IA__g_main_context_add_poll"), visibility("default")));
+
+#undef g_main_context_check 
+extern __typeof (g_main_context_check) g_main_context_check __attribute((alias("IA__g_main_context_check"), visibility("default")));
+
+#undef g_main_context_default 
+extern __typeof (g_main_context_default) g_main_context_default __attribute((alias("IA__g_main_context_default"), visibility("default")));
+
+#undef g_main_context_dispatch 
+extern __typeof (g_main_context_dispatch) g_main_context_dispatch __attribute((alias("IA__g_main_context_dispatch"), visibility("default")));
+
+#undef g_main_context_find_source_by_funcs_user_data 
+extern __typeof (g_main_context_find_source_by_funcs_user_data) g_main_context_find_source_by_funcs_user_data __attribute((alias("IA__g_main_context_find_source_by_funcs_user_data"), visibility("default")));
+
+#undef g_main_context_find_source_by_id 
+extern __typeof (g_main_context_find_source_by_id) g_main_context_find_source_by_id __attribute((alias("IA__g_main_context_find_source_by_id"), visibility("default")));
+
+#undef g_main_context_find_source_by_user_data 
+extern __typeof (g_main_context_find_source_by_user_data) g_main_context_find_source_by_user_data __attribute((alias("IA__g_main_context_find_source_by_user_data"), visibility("default")));
+
+#undef g_main_context_get_poll_func 
+extern __typeof (g_main_context_get_poll_func) g_main_context_get_poll_func __attribute((alias("IA__g_main_context_get_poll_func"), visibility("default")));
+
+#undef g_main_context_is_owner 
+extern __typeof (g_main_context_is_owner) g_main_context_is_owner __attribute((alias("IA__g_main_context_is_owner"), visibility("default")));
+
+#undef g_main_context_iteration 
+extern __typeof (g_main_context_iteration) g_main_context_iteration __attribute((alias("IA__g_main_context_iteration"), visibility("default")));
+
+#undef g_main_context_new 
+extern __typeof (g_main_context_new) g_main_context_new __attribute((alias("IA__g_main_context_new"), visibility("default")));
+
+#undef g_main_context_pending 
+extern __typeof (g_main_context_pending) g_main_context_pending __attribute((alias("IA__g_main_context_pending"), visibility("default")));
+
+#undef g_main_context_prepare 
+extern __typeof (g_main_context_prepare) g_main_context_prepare __attribute((alias("IA__g_main_context_prepare"), visibility("default")));
+
+#undef g_main_context_query 
+extern __typeof (g_main_context_query) g_main_context_query __attribute((alias("IA__g_main_context_query"), visibility("default")));
+
+#undef g_main_context_ref 
+extern __typeof (g_main_context_ref) g_main_context_ref __attribute((alias("IA__g_main_context_ref"), visibility("default")));
+
+#undef g_main_context_release 
+extern __typeof (g_main_context_release) g_main_context_release __attribute((alias("IA__g_main_context_release"), visibility("default")));
+
+#undef g_main_context_remove_poll 
+extern __typeof (g_main_context_remove_poll) g_main_context_remove_poll __attribute((alias("IA__g_main_context_remove_poll"), visibility("default")));
+
+#undef g_main_context_set_poll_func 
+extern __typeof (g_main_context_set_poll_func) g_main_context_set_poll_func __attribute((alias("IA__g_main_context_set_poll_func"), visibility("default")));
+
+#undef g_main_context_unref 
+extern __typeof (g_main_context_unref) g_main_context_unref __attribute((alias("IA__g_main_context_unref"), visibility("default")));
+
+#undef g_main_context_wait 
+extern __typeof (g_main_context_wait) g_main_context_wait __attribute((alias("IA__g_main_context_wait"), visibility("default")));
+
+#undef g_main_context_wakeup 
+extern __typeof (g_main_context_wakeup) g_main_context_wakeup __attribute((alias("IA__g_main_context_wakeup"), visibility("default")));
+
+#undef g_main_depth 
+extern __typeof (g_main_depth) g_main_depth __attribute((alias("IA__g_main_depth"), visibility("default")));
+
+#undef g_main_current_source 
+extern __typeof (g_main_current_source) g_main_current_source __attribute((alias("IA__g_main_current_source"), visibility("default")));
+
+#undef g_main_loop_get_context 
+extern __typeof (g_main_loop_get_context) g_main_loop_get_context __attribute((alias("IA__g_main_loop_get_context"), visibility("default")));
+
+#undef g_main_loop_is_running 
+extern __typeof (g_main_loop_is_running) g_main_loop_is_running __attribute((alias("IA__g_main_loop_is_running"), visibility("default")));
+
+#undef g_main_loop_new 
+extern __typeof (g_main_loop_new) g_main_loop_new __attribute((alias("IA__g_main_loop_new"), visibility("default")));
+
+#undef g_main_loop_quit 
+extern __typeof (g_main_loop_quit) g_main_loop_quit __attribute((alias("IA__g_main_loop_quit"), visibility("default")));
+
+#undef g_main_loop_ref 
+extern __typeof (g_main_loop_ref) g_main_loop_ref __attribute((alias("IA__g_main_loop_ref"), visibility("default")));
+
+#undef g_main_loop_run 
+extern __typeof (g_main_loop_run) g_main_loop_run __attribute((alias("IA__g_main_loop_run"), visibility("default")));
+
+#undef g_main_loop_unref 
+extern __typeof (g_main_loop_unref) g_main_loop_unref __attribute((alias("IA__g_main_loop_unref"), visibility("default")));
+
+#undef g_source_add_poll 
+extern __typeof (g_source_add_poll) g_source_add_poll __attribute((alias("IA__g_source_add_poll"), visibility("default")));
+
+#undef g_source_attach 
+extern __typeof (g_source_attach) g_source_attach __attribute((alias("IA__g_source_attach"), visibility("default")));
+
+#undef g_source_destroy 
+extern __typeof (g_source_destroy) g_source_destroy __attribute((alias("IA__g_source_destroy"), visibility("default")));
+
+#undef g_source_get_can_recurse 
+extern __typeof (g_source_get_can_recurse) g_source_get_can_recurse __attribute((alias("IA__g_source_get_can_recurse"), visibility("default")));
+
+#undef g_source_get_context 
+extern __typeof (g_source_get_context) g_source_get_context __attribute((alias("IA__g_source_get_context"), visibility("default")));
+
+#undef g_source_get_current_time 
+extern __typeof (g_source_get_current_time) g_source_get_current_time __attribute((alias("IA__g_source_get_current_time"), visibility("default")));
+
+#undef g_source_get_id 
+extern __typeof (g_source_get_id) g_source_get_id __attribute((alias("IA__g_source_get_id"), visibility("default")));
+
+#undef g_source_get_priority 
+extern __typeof (g_source_get_priority) g_source_get_priority __attribute((alias("IA__g_source_get_priority"), visibility("default")));
+
+#undef g_source_new 
+extern __typeof (g_source_new) g_source_new __attribute((alias("IA__g_source_new"), visibility("default")));
+
+#undef g_source_ref 
+extern __typeof (g_source_ref) g_source_ref __attribute((alias("IA__g_source_ref"), visibility("default")));
+
+#undef g_source_remove 
+extern __typeof (g_source_remove) g_source_remove __attribute((alias("IA__g_source_remove"), visibility("default")));
+
+#undef g_source_remove_by_funcs_user_data 
+extern __typeof (g_source_remove_by_funcs_user_data) g_source_remove_by_funcs_user_data __attribute((alias("IA__g_source_remove_by_funcs_user_data"), visibility("default")));
+
+#undef g_source_remove_by_user_data 
+extern __typeof (g_source_remove_by_user_data) g_source_remove_by_user_data __attribute((alias("IA__g_source_remove_by_user_data"), visibility("default")));
+
+#undef g_source_remove_poll 
+extern __typeof (g_source_remove_poll) g_source_remove_poll __attribute((alias("IA__g_source_remove_poll"), visibility("default")));
+
+#undef g_source_set_callback 
+extern __typeof (g_source_set_callback) g_source_set_callback __attribute((alias("IA__g_source_set_callback"), visibility("default")));
+
+#undef g_source_set_callback_indirect 
+extern __typeof (g_source_set_callback_indirect) g_source_set_callback_indirect __attribute((alias("IA__g_source_set_callback_indirect"), visibility("default")));
+
+#undef g_source_set_can_recurse 
+extern __typeof (g_source_set_can_recurse) g_source_set_can_recurse __attribute((alias("IA__g_source_set_can_recurse"), visibility("default")));
+
+#undef g_source_set_funcs 
+extern __typeof (g_source_set_funcs) g_source_set_funcs __attribute((alias("IA__g_source_set_funcs"), visibility("default")));
+
+#undef g_source_is_destroyed 
+extern __typeof (g_source_is_destroyed) g_source_is_destroyed __attribute((alias("IA__g_source_is_destroyed"), visibility("default")));
+
+#undef g_source_set_priority 
+extern __typeof (g_source_set_priority) g_source_set_priority __attribute((alias("IA__g_source_set_priority"), visibility("default")));
+
+#undef g_source_unref 
+extern __typeof (g_source_unref) g_source_unref __attribute((alias("IA__g_source_unref"), visibility("default")));
+
+#undef g_idle_add 
+extern __typeof (g_idle_add) g_idle_add __attribute((alias("IA__g_idle_add"), visibility("default")));
+
+#undef g_idle_add_full 
+extern __typeof (g_idle_add_full) g_idle_add_full __attribute((alias("IA__g_idle_add_full"), visibility("default")));
+
+#undef g_idle_remove_by_data 
+extern __typeof (g_idle_remove_by_data) g_idle_remove_by_data __attribute((alias("IA__g_idle_remove_by_data"), visibility("default")));
+
+#undef g_idle_source_new 
+extern __typeof (g_idle_source_new) g_idle_source_new __attribute((alias("IA__g_idle_source_new"), visibility("default")));
+
+#undef g_timeout_add 
+extern __typeof (g_timeout_add) g_timeout_add __attribute((alias("IA__g_timeout_add"), visibility("default")));
+
+#undef g_timeout_add_seconds 
+extern __typeof (g_timeout_add_seconds) g_timeout_add_seconds __attribute((alias("IA__g_timeout_add_seconds"), visibility("default")));
+
+#undef g_timeout_add_full 
+extern __typeof (g_timeout_add_full) g_timeout_add_full __attribute((alias("IA__g_timeout_add_full"), visibility("default")));
+
+#undef g_timeout_add_seconds_full 
+extern __typeof (g_timeout_add_seconds_full) g_timeout_add_seconds_full __attribute((alias("IA__g_timeout_add_seconds_full"), visibility("default")));
+
+#undef g_timeout_source_new 
+extern __typeof (g_timeout_source_new) g_timeout_source_new __attribute((alias("IA__g_timeout_source_new"), visibility("default")));
+
+#undef g_timeout_source_new_seconds 
+extern __typeof (g_timeout_source_new_seconds) g_timeout_source_new_seconds __attribute((alias("IA__g_timeout_source_new_seconds"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_MAPPED_FILE_H__)
+#if IN_FILE(__G_MAPPED_FILE_C__)
+#undef g_mapped_file_new 
+extern __typeof (g_mapped_file_new) g_mapped_file_new __attribute((alias("IA__g_mapped_file_new"), visibility("default")));
+
+#undef g_mapped_file_get_length 
+extern __typeof (g_mapped_file_get_length) g_mapped_file_get_length __attribute((alias("IA__g_mapped_file_get_length"), visibility("default")));
+
+#undef g_mapped_file_get_contents 
+extern __typeof (g_mapped_file_get_contents) g_mapped_file_get_contents __attribute((alias("IA__g_mapped_file_get_contents"), visibility("default")));
+
+#undef g_mapped_file_free 
+extern __typeof (g_mapped_file_free) g_mapped_file_free __attribute((alias("IA__g_mapped_file_free"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_MARKUP_H__)
+#if IN_FILE(__G_MARKUP_C__)
+#undef g_markup_error_quark 
+extern __typeof (g_markup_error_quark) g_markup_error_quark __attribute((alias("IA__g_markup_error_quark"), visibility("default")));
+
+#undef g_markup_escape_text 
+extern __typeof (g_markup_escape_text) g_markup_escape_text __attribute((alias("IA__g_markup_escape_text"), visibility("default")));
+
+#undef g_markup_parse_context_end_parse 
+extern __typeof (g_markup_parse_context_end_parse) g_markup_parse_context_end_parse __attribute((alias("IA__g_markup_parse_context_end_parse"), visibility("default")));
+
+#undef g_markup_parse_context_free 
+extern __typeof (g_markup_parse_context_free) g_markup_parse_context_free __attribute((alias("IA__g_markup_parse_context_free"), visibility("default")));
+
+#undef g_markup_parse_context_get_element 
+extern __typeof (g_markup_parse_context_get_element) g_markup_parse_context_get_element __attribute((alias("IA__g_markup_parse_context_get_element"), visibility("default")));
+
+#undef g_markup_parse_context_get_element_stack 
+extern __typeof (g_markup_parse_context_get_element_stack) g_markup_parse_context_get_element_stack __attribute((alias("IA__g_markup_parse_context_get_element_stack"), visibility("default")));
+
+#undef g_markup_parse_context_get_position 
+extern __typeof (g_markup_parse_context_get_position) g_markup_parse_context_get_position __attribute((alias("IA__g_markup_parse_context_get_position"), visibility("default")));
+
+#undef g_markup_parse_context_get_user_data 
+extern __typeof (g_markup_parse_context_get_user_data) g_markup_parse_context_get_user_data __attribute((alias("IA__g_markup_parse_context_get_user_data"), visibility("default")));
+
+#undef g_markup_parse_context_new 
+extern __typeof (g_markup_parse_context_new) g_markup_parse_context_new __attribute((alias("IA__g_markup_parse_context_new"), visibility("default")));
+
+#undef g_markup_parse_context_parse 
+extern __typeof (g_markup_parse_context_parse) g_markup_parse_context_parse __attribute((alias("IA__g_markup_parse_context_parse"), visibility("default")));
+
+#undef g_markup_parse_context_push 
+extern __typeof (g_markup_parse_context_push) g_markup_parse_context_push __attribute((alias("IA__g_markup_parse_context_push"), visibility("default")));
+
+#undef g_markup_parse_context_pop 
+extern __typeof (g_markup_parse_context_pop) g_markup_parse_context_pop __attribute((alias("IA__g_markup_parse_context_pop"), visibility("default")));
+
+#undef g_markup_printf_escaped 
+extern __typeof (g_markup_printf_escaped) g_markup_printf_escaped __attribute((alias("IA__g_markup_printf_escaped"), visibility("default")));
+
+#undef g_markup_vprintf_escaped 
+extern __typeof (g_markup_vprintf_escaped) g_markup_vprintf_escaped __attribute((alias("IA__g_markup_vprintf_escaped"), visibility("default")));
+
+#undef g_markup_collect_attributes 
+extern __typeof (g_markup_collect_attributes) g_markup_collect_attributes __attribute((alias("IA__g_markup_collect_attributes"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_MEM_H__)
+#if IN_FILE(__G_MEM_C__)
+#undef g_free 
+extern __typeof (g_free) g_free __attribute((alias("IA__g_free"), visibility("default")));
+
+#undef g_malloc 
+extern __typeof (g_malloc) g_malloc __attribute((alias("IA__g_malloc"), visibility("default")));
+
+#undef g_malloc0 
+extern __typeof (g_malloc0) g_malloc0 __attribute((alias("IA__g_malloc0"), visibility("default")));
+
+#undef g_mem_is_system_malloc 
+extern __typeof (g_mem_is_system_malloc) g_mem_is_system_malloc __attribute((alias("IA__g_mem_is_system_malloc"), visibility("default")));
+
+#undef g_mem_profile 
+extern __typeof (g_mem_profile) g_mem_profile __attribute((alias("IA__g_mem_profile"), visibility("default")));
+
+#undef g_mem_set_vtable 
+extern __typeof (g_mem_set_vtable) g_mem_set_vtable __attribute((alias("IA__g_mem_set_vtable"), visibility("default")));
+
+#undef g_realloc 
+extern __typeof (g_realloc) g_realloc __attribute((alias("IA__g_realloc"), visibility("default")));
+
+#undef g_try_malloc 
+extern __typeof (g_try_malloc) g_try_malloc __attribute((alias("IA__g_try_malloc"), visibility("default")));
+
+#undef g_try_malloc0 
+extern __typeof (g_try_malloc0) g_try_malloc0 __attribute((alias("IA__g_try_malloc0"), visibility("default")));
+
+#undef g_try_realloc 
+extern __typeof (g_try_realloc) g_try_realloc __attribute((alias("IA__g_try_realloc"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_allocator_free 
+extern __typeof (g_allocator_free) g_allocator_free __attribute((alias("IA__g_allocator_free"), visibility("default")));
+
+#undef g_allocator_new 
+extern __typeof (g_allocator_new) g_allocator_new __attribute((alias("IA__g_allocator_new"), visibility("default")));
+
+#undef g_mem_chunk_alloc 
+extern __typeof (g_mem_chunk_alloc) g_mem_chunk_alloc __attribute((alias("IA__g_mem_chunk_alloc"), visibility("default")));
+
+#undef g_mem_chunk_alloc0 
+extern __typeof (g_mem_chunk_alloc0) g_mem_chunk_alloc0 __attribute((alias("IA__g_mem_chunk_alloc0"), visibility("default")));
+
+#undef g_mem_chunk_clean 
+extern __typeof (g_mem_chunk_clean) g_mem_chunk_clean __attribute((alias("IA__g_mem_chunk_clean"), visibility("default")));
+
+#undef g_mem_chunk_destroy 
+extern __typeof (g_mem_chunk_destroy) g_mem_chunk_destroy __attribute((alias("IA__g_mem_chunk_destroy"), visibility("default")));
+
+#undef g_mem_chunk_free 
+extern __typeof (g_mem_chunk_free) g_mem_chunk_free __attribute((alias("IA__g_mem_chunk_free"), visibility("default")));
+
+#undef g_mem_chunk_info 
+extern __typeof (g_mem_chunk_info) g_mem_chunk_info __attribute((alias("IA__g_mem_chunk_info"), visibility("default")));
+
+#undef g_mem_chunk_new 
+extern __typeof (g_mem_chunk_new) g_mem_chunk_new __attribute((alias("IA__g_mem_chunk_new"), visibility("default")));
+
+#undef g_mem_chunk_print 
+extern __typeof (g_mem_chunk_print) g_mem_chunk_print __attribute((alias("IA__g_mem_chunk_print"), visibility("default")));
+
+#undef g_mem_chunk_reset 
+extern __typeof (g_mem_chunk_reset) g_mem_chunk_reset __attribute((alias("IA__g_mem_chunk_reset"), visibility("default")));
+
+#undef g_blow_chunks 
+extern __typeof (g_blow_chunks) g_blow_chunks __attribute((alias("IA__g_blow_chunks"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_SLICE_H__)
+#if IN_FILE(__G_SLICE_C__)
+#undef g_slice_alloc 
+extern __typeof (g_slice_alloc) g_slice_alloc __attribute((alias("IA__g_slice_alloc"), visibility("default")));
+
+#undef g_slice_alloc0 
+extern __typeof (g_slice_alloc0) g_slice_alloc0 __attribute((alias("IA__g_slice_alloc0"), visibility("default")));
+
+#undef g_slice_copy 
+extern __typeof (g_slice_copy) g_slice_copy __attribute((alias("IA__g_slice_copy"), visibility("default")));
+
+#undef g_slice_free1 
+extern __typeof (g_slice_free1) g_slice_free1 __attribute((alias("IA__g_slice_free1"), visibility("default")));
+
+#undef g_slice_free_chain_with_offset 
+extern __typeof (g_slice_free_chain_with_offset) g_slice_free_chain_with_offset __attribute((alias("IA__g_slice_free_chain_with_offset"), visibility("default")));
+
+#undef g_slice_set_config 
+extern __typeof (g_slice_set_config) g_slice_set_config __attribute((alias("IA__g_slice_set_config"), visibility("default")));
+
+#undef g_slice_get_config 
+extern __typeof (g_slice_get_config) g_slice_get_config __attribute((alias("IA__g_slice_get_config"), visibility("default")));
+
+#undef g_slice_get_config_state 
+extern __typeof (g_slice_get_config_state) g_slice_get_config_state __attribute((alias("IA__g_slice_get_config_state"), visibility("default")));
+
+#ifdef G_ENABLE_DEBUG
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_MESSAGES_H__)
+#if IN_FILE(__G_MESSAGES_C__)
+#undef g_printf_string_upper_bound 
+extern __typeof (g_printf_string_upper_bound) g_printf_string_upper_bound __attribute((alias("IA__g_printf_string_upper_bound"), visibility("default")));
+
+#undef g_log 
+extern __typeof (g_log) g_log __attribute((alias("IA__g_log"), visibility("default")));
+
+#undef g_log_default_handler 
+extern __typeof (g_log_default_handler) g_log_default_handler __attribute((alias("IA__g_log_default_handler"), visibility("default")));
+
+#undef g_log_remove_handler 
+extern __typeof (g_log_remove_handler) g_log_remove_handler __attribute((alias("IA__g_log_remove_handler"), visibility("default")));
+
+#undef g_log_set_always_fatal 
+extern __typeof (g_log_set_always_fatal) g_log_set_always_fatal __attribute((alias("IA__g_log_set_always_fatal"), visibility("default")));
+
+#undef g_log_set_default_handler 
+extern __typeof (g_log_set_default_handler) g_log_set_default_handler __attribute((alias("IA__g_log_set_default_handler"), visibility("default")));
+
+#undef g_log_set_fatal_mask 
+extern __typeof (g_log_set_fatal_mask) g_log_set_fatal_mask __attribute((alias("IA__g_log_set_fatal_mask"), visibility("default")));
+
+#undef g_log_set_handler 
+extern __typeof (g_log_set_handler) g_log_set_handler __attribute((alias("IA__g_log_set_handler"), visibility("default")));
+
+#undef g_logv 
+extern __typeof (g_logv) g_logv __attribute((alias("IA__g_logv"), visibility("default")));
+
+#undef g_return_if_fail_warning 
+extern __typeof (g_return_if_fail_warning) g_return_if_fail_warning __attribute((alias("IA__g_return_if_fail_warning"), visibility("default")));
+
+#undef g_warn_message 
+extern __typeof (g_warn_message) g_warn_message __attribute((alias("IA__g_warn_message"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_assert_warning 
+extern __typeof (g_assert_warning) g_assert_warning __attribute((alias("IA__g_assert_warning"), visibility("default")));
+
+#endif
+#undef g_print 
+extern __typeof (g_print) g_print __attribute((alias("IA__g_print"), visibility("default")));
+
+#undef g_printerr 
+extern __typeof (g_printerr) g_printerr __attribute((alias("IA__g_printerr"), visibility("default")));
+
+#undef g_set_printerr_handler 
+extern __typeof (g_set_printerr_handler) g_set_printerr_handler __attribute((alias("IA__g_set_printerr_handler"), visibility("default")));
+
+#undef g_set_print_handler 
+extern __typeof (g_set_print_handler) g_set_print_handler __attribute((alias("IA__g_set_print_handler"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_NODE_H__)
+#if IN_FILE(__G_NODE_C__)
+#undef g_node_child_index 
+extern __typeof (g_node_child_index) g_node_child_index __attribute((alias("IA__g_node_child_index"), visibility("default")));
+
+#undef g_node_child_position 
+extern __typeof (g_node_child_position) g_node_child_position __attribute((alias("IA__g_node_child_position"), visibility("default")));
+
+#undef g_node_children_foreach 
+extern __typeof (g_node_children_foreach) g_node_children_foreach __attribute((alias("IA__g_node_children_foreach"), visibility("default")));
+
+#undef g_node_copy 
+extern __typeof (g_node_copy) g_node_copy __attribute((alias("IA__g_node_copy"), visibility("default")));
+
+#undef g_node_copy_deep 
+extern __typeof (g_node_copy_deep) g_node_copy_deep __attribute((alias("IA__g_node_copy_deep"), visibility("default")));
+
+#undef g_node_depth 
+extern __typeof (g_node_depth) g_node_depth __attribute((alias("IA__g_node_depth"), visibility("default")));
+
+#undef g_node_destroy 
+extern __typeof (g_node_destroy) g_node_destroy __attribute((alias("IA__g_node_destroy"), visibility("default")));
+
+#undef g_node_find 
+extern __typeof (g_node_find) g_node_find __attribute((alias("IA__g_node_find"), visibility("default")));
+
+#undef g_node_find_child 
+extern __typeof (g_node_find_child) g_node_find_child __attribute((alias("IA__g_node_find_child"), visibility("default")));
+
+#undef g_node_first_sibling 
+extern __typeof (g_node_first_sibling) g_node_first_sibling __attribute((alias("IA__g_node_first_sibling"), visibility("default")));
+
+#undef g_node_get_root 
+extern __typeof (g_node_get_root) g_node_get_root __attribute((alias("IA__g_node_get_root"), visibility("default")));
+
+#undef g_node_insert 
+extern __typeof (g_node_insert) g_node_insert __attribute((alias("IA__g_node_insert"), visibility("default")));
+
+#undef g_node_insert_after 
+extern __typeof (g_node_insert_after) g_node_insert_after __attribute((alias("IA__g_node_insert_after"), visibility("default")));
+
+#undef g_node_insert_before 
+extern __typeof (g_node_insert_before) g_node_insert_before __attribute((alias("IA__g_node_insert_before"), visibility("default")));
+
+#undef g_node_is_ancestor 
+extern __typeof (g_node_is_ancestor) g_node_is_ancestor __attribute((alias("IA__g_node_is_ancestor"), visibility("default")));
+
+#undef g_node_last_child 
+extern __typeof (g_node_last_child) g_node_last_child __attribute((alias("IA__g_node_last_child"), visibility("default")));
+
+#undef g_node_last_sibling 
+extern __typeof (g_node_last_sibling) g_node_last_sibling __attribute((alias("IA__g_node_last_sibling"), visibility("default")));
+
+#undef g_node_max_height 
+extern __typeof (g_node_max_height) g_node_max_height __attribute((alias("IA__g_node_max_height"), visibility("default")));
+
+#undef g_node_n_children 
+extern __typeof (g_node_n_children) g_node_n_children __attribute((alias("IA__g_node_n_children"), visibility("default")));
+
+#undef g_node_new 
+extern __typeof (g_node_new) g_node_new __attribute((alias("IA__g_node_new"), visibility("default")));
+
+#undef g_node_n_nodes 
+extern __typeof (g_node_n_nodes) g_node_n_nodes __attribute((alias("IA__g_node_n_nodes"), visibility("default")));
+
+#undef g_node_nth_child 
+extern __typeof (g_node_nth_child) g_node_nth_child __attribute((alias("IA__g_node_nth_child"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_node_pop_allocator 
+extern __typeof (g_node_pop_allocator) g_node_pop_allocator __attribute((alias("IA__g_node_pop_allocator"), visibility("default")));
+
+#endif
+#undef g_node_prepend 
+extern __typeof (g_node_prepend) g_node_prepend __attribute((alias("IA__g_node_prepend"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_node_push_allocator 
+extern __typeof (g_node_push_allocator) g_node_push_allocator __attribute((alias("IA__g_node_push_allocator"), visibility("default")));
+
+#endif
+#undef g_node_reverse_children 
+extern __typeof (g_node_reverse_children) g_node_reverse_children __attribute((alias("IA__g_node_reverse_children"), visibility("default")));
+
+#undef g_node_traverse 
+extern __typeof (g_node_traverse) g_node_traverse __attribute((alias("IA__g_node_traverse"), visibility("default")));
+
+#undef g_node_unlink 
+extern __typeof (g_node_unlink) g_node_unlink __attribute((alias("IA__g_node_unlink"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_OPTION_H__)
+#if IN_FILE(__G_OPTION_C__)
+#undef g_option_context_add_group 
+extern __typeof (g_option_context_add_group) g_option_context_add_group __attribute((alias("IA__g_option_context_add_group"), visibility("default")));
+
+#undef g_option_context_add_main_entries 
+extern __typeof (g_option_context_add_main_entries) g_option_context_add_main_entries __attribute((alias("IA__g_option_context_add_main_entries"), visibility("default")));
+
+#undef g_option_error_quark 
+extern __typeof (g_option_error_quark) g_option_error_quark __attribute((alias("IA__g_option_error_quark"), visibility("default")));
+
+#undef g_option_context_free 
+extern __typeof (g_option_context_free) g_option_context_free __attribute((alias("IA__g_option_context_free"), visibility("default")));
+
+#undef g_option_context_get_description 
+extern __typeof (g_option_context_get_description) g_option_context_get_description __attribute((alias("IA__g_option_context_get_description"), visibility("default")));
+
+#undef g_option_context_get_help_enabled 
+extern __typeof (g_option_context_get_help_enabled) g_option_context_get_help_enabled __attribute((alias("IA__g_option_context_get_help_enabled"), visibility("default")));
+
+#undef g_option_context_get_ignore_unknown_options 
+extern __typeof (g_option_context_get_ignore_unknown_options) g_option_context_get_ignore_unknown_options __attribute((alias("IA__g_option_context_get_ignore_unknown_options"), visibility("default")));
+
+#undef g_option_context_get_main_group 
+extern __typeof (g_option_context_get_main_group) g_option_context_get_main_group __attribute((alias("IA__g_option_context_get_main_group"), visibility("default")));
+
+#undef g_option_context_get_summary 
+extern __typeof (g_option_context_get_summary) g_option_context_get_summary __attribute((alias("IA__g_option_context_get_summary"), visibility("default")));
+
+#undef g_option_context_new 
+extern __typeof (g_option_context_new) g_option_context_new __attribute((alias("IA__g_option_context_new"), visibility("default")));
+
+#undef g_option_context_parse 
+extern __typeof (g_option_context_parse) g_option_context_parse __attribute((alias("IA__g_option_context_parse"), visibility("default")));
+
+#undef g_option_context_set_description 
+extern __typeof (g_option_context_set_description) g_option_context_set_description __attribute((alias("IA__g_option_context_set_description"), visibility("default")));
+
+#undef g_option_context_set_help_enabled 
+extern __typeof (g_option_context_set_help_enabled) g_option_context_set_help_enabled __attribute((alias("IA__g_option_context_set_help_enabled"), visibility("default")));
+
+#undef g_option_context_set_ignore_unknown_options 
+extern __typeof (g_option_context_set_ignore_unknown_options) g_option_context_set_ignore_unknown_options __attribute((alias("IA__g_option_context_set_ignore_unknown_options"), visibility("default")));
+
+#undef g_option_context_set_main_group 
+extern __typeof (g_option_context_set_main_group) g_option_context_set_main_group __attribute((alias("IA__g_option_context_set_main_group"), visibility("default")));
+
+#undef g_option_context_set_summary 
+extern __typeof (g_option_context_set_summary) g_option_context_set_summary __attribute((alias("IA__g_option_context_set_summary"), visibility("default")));
+
+#undef g_option_context_set_translate_func 
+extern __typeof (g_option_context_set_translate_func) g_option_context_set_translate_func __attribute((alias("IA__g_option_context_set_translate_func"), visibility("default")));
+
+#undef g_option_context_set_translation_domain 
+extern __typeof (g_option_context_set_translation_domain) g_option_context_set_translation_domain __attribute((alias("IA__g_option_context_set_translation_domain"), visibility("default")));
+
+#undef g_option_context_get_help 
+extern __typeof (g_option_context_get_help) g_option_context_get_help __attribute((alias("IA__g_option_context_get_help"), visibility("default")));
+
+#undef g_option_group_add_entries 
+extern __typeof (g_option_group_add_entries) g_option_group_add_entries __attribute((alias("IA__g_option_group_add_entries"), visibility("default")));
+
+#undef g_option_group_free 
+extern __typeof (g_option_group_free) g_option_group_free __attribute((alias("IA__g_option_group_free"), visibility("default")));
+
+#undef g_option_group_new 
+extern __typeof (g_option_group_new) g_option_group_new __attribute((alias("IA__g_option_group_new"), visibility("default")));
+
+#undef g_option_group_set_error_hook 
+extern __typeof (g_option_group_set_error_hook) g_option_group_set_error_hook __attribute((alias("IA__g_option_group_set_error_hook"), visibility("default")));
+
+#undef g_option_group_set_parse_hooks 
+extern __typeof (g_option_group_set_parse_hooks) g_option_group_set_parse_hooks __attribute((alias("IA__g_option_group_set_parse_hooks"), visibility("default")));
+
+#undef g_option_group_set_translate_func 
+extern __typeof (g_option_group_set_translate_func) g_option_group_set_translate_func __attribute((alias("IA__g_option_group_set_translate_func"), visibility("default")));
+
+#undef g_option_group_set_translation_domain 
+extern __typeof (g_option_group_set_translation_domain) g_option_group_set_translation_domain __attribute((alias("IA__g_option_group_set_translation_domain"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_PATTERN_H__)
+#if IN_FILE(__G_PATTERN_C__)
+#undef g_pattern_match 
+extern __typeof (g_pattern_match) g_pattern_match __attribute((alias("IA__g_pattern_match"), visibility("default")));
+
+#undef g_pattern_match_simple 
+extern __typeof (g_pattern_match_simple) g_pattern_match_simple __attribute((alias("IA__g_pattern_match_simple"), visibility("default")));
+
+#undef g_pattern_match_string 
+extern __typeof (g_pattern_match_string) g_pattern_match_string __attribute((alias("IA__g_pattern_match_string"), visibility("default")));
+
+#undef g_pattern_spec_equal 
+extern __typeof (g_pattern_spec_equal) g_pattern_spec_equal __attribute((alias("IA__g_pattern_spec_equal"), visibility("default")));
+
+#undef g_pattern_spec_free 
+extern __typeof (g_pattern_spec_free) g_pattern_spec_free __attribute((alias("IA__g_pattern_spec_free"), visibility("default")));
+
+#undef g_pattern_spec_new 
+extern __typeof (g_pattern_spec_new) g_pattern_spec_new __attribute((alias("IA__g_pattern_spec_new"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_POLL_H__)
+#if IN_FILE(__G_POLL_C__)
+#undef g_poll 
+extern __typeof (g_poll) g_poll __attribute((alias("IA__g_poll"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_PRIMES_H__)
+#if IN_FILE(__G_PRIMES_C__)
+#undef g_spaced_primes_closest 
+extern __typeof (g_spaced_primes_closest) g_spaced_primes_closest __attribute((alias("IA__g_spaced_primes_closest"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_PRINTF_H__)
+#if IN_FILE(__G_PRINTF_C__)
+#undef g_fprintf 
+extern __typeof (g_fprintf) g_fprintf __attribute((alias("IA__g_fprintf"), visibility("default")));
+
+#undef g_printf 
+extern __typeof (g_printf) g_printf __attribute((alias("IA__g_printf"), visibility("default")));
+
+#undef g_sprintf 
+extern __typeof (g_sprintf) g_sprintf __attribute((alias("IA__g_sprintf"), visibility("default")));
+
+#undef g_vasprintf 
+extern __typeof (g_vasprintf) g_vasprintf __attribute((alias("IA__g_vasprintf"), visibility("default")));
+
+#undef g_vfprintf 
+extern __typeof (g_vfprintf) g_vfprintf __attribute((alias("IA__g_vfprintf"), visibility("default")));
+
+#undef g_vprintf 
+extern __typeof (g_vprintf) g_vprintf __attribute((alias("IA__g_vprintf"), visibility("default")));
+
+#undef g_vsprintf 
+extern __typeof (g_vsprintf) g_vsprintf __attribute((alias("IA__g_vsprintf"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UTILS_H__)
+#if IN_FILE(__G_PRINTF_C__)
+#undef g_snprintf 
+extern __typeof (g_snprintf) g_snprintf __attribute((alias("IA__g_snprintf"), visibility("default")));
+
+#undef g_vsnprintf 
+extern __typeof (g_vsnprintf) g_vsnprintf __attribute((alias("IA__g_vsnprintf"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_QSORT_H__)
+#if IN_FILE(__G_QSORT_C__)
+#undef g_qsort_with_data 
+extern __typeof (g_qsort_with_data) g_qsort_with_data __attribute((alias("IA__g_qsort_with_data"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_QUEUE_H__)
+#if IN_FILE(__G_QUEUE_C__)
+#undef g_queue_clear 
+extern __typeof (g_queue_clear) g_queue_clear __attribute((alias("IA__g_queue_clear"), visibility("default")));
+
+#undef g_queue_copy 
+extern __typeof (g_queue_copy) g_queue_copy __attribute((alias("IA__g_queue_copy"), visibility("default")));
+
+#undef g_queue_delete_link 
+extern __typeof (g_queue_delete_link) g_queue_delete_link __attribute((alias("IA__g_queue_delete_link"), visibility("default")));
+
+#undef g_queue_find 
+extern __typeof (g_queue_find) g_queue_find __attribute((alias("IA__g_queue_find"), visibility("default")));
+
+#undef g_queue_find_custom 
+extern __typeof (g_queue_find_custom) g_queue_find_custom __attribute((alias("IA__g_queue_find_custom"), visibility("default")));
+
+#undef g_queue_foreach 
+extern __typeof (g_queue_foreach) g_queue_foreach __attribute((alias("IA__g_queue_foreach"), visibility("default")));
+
+#undef g_queue_free 
+extern __typeof (g_queue_free) g_queue_free __attribute((alias("IA__g_queue_free"), visibility("default")));
+
+#undef g_queue_get_length 
+extern __typeof (g_queue_get_length) g_queue_get_length __attribute((alias("IA__g_queue_get_length"), visibility("default")));
+
+#undef g_queue_index 
+extern __typeof (g_queue_index) g_queue_index __attribute((alias("IA__g_queue_index"), visibility("default")));
+
+#undef g_queue_init 
+extern __typeof (g_queue_init) g_queue_init __attribute((alias("IA__g_queue_init"), visibility("default")));
+
+#undef g_queue_insert_after 
+extern __typeof (g_queue_insert_after) g_queue_insert_after __attribute((alias("IA__g_queue_insert_after"), visibility("default")));
+
+#undef g_queue_insert_before 
+extern __typeof (g_queue_insert_before) g_queue_insert_before __attribute((alias("IA__g_queue_insert_before"), visibility("default")));
+
+#undef g_queue_insert_sorted 
+extern __typeof (g_queue_insert_sorted) g_queue_insert_sorted __attribute((alias("IA__g_queue_insert_sorted"), visibility("default")));
+
+#undef g_queue_is_empty 
+extern __typeof (g_queue_is_empty) g_queue_is_empty __attribute((alias("IA__g_queue_is_empty"), visibility("default")));
+
+#undef g_queue_link_index 
+extern __typeof (g_queue_link_index) g_queue_link_index __attribute((alias("IA__g_queue_link_index"), visibility("default")));
+
+#undef g_queue_new 
+extern __typeof (g_queue_new) g_queue_new __attribute((alias("IA__g_queue_new"), visibility("default")));
+
+#undef g_queue_peek_head 
+extern __typeof (g_queue_peek_head) g_queue_peek_head __attribute((alias("IA__g_queue_peek_head"), visibility("default")));
+
+#undef g_queue_peek_head_link 
+extern __typeof (g_queue_peek_head_link) g_queue_peek_head_link __attribute((alias("IA__g_queue_peek_head_link"), visibility("default")));
+
+#undef g_queue_peek_nth 
+extern __typeof (g_queue_peek_nth) g_queue_peek_nth __attribute((alias("IA__g_queue_peek_nth"), visibility("default")));
+
+#undef g_queue_peek_nth_link 
+extern __typeof (g_queue_peek_nth_link) g_queue_peek_nth_link __attribute((alias("IA__g_queue_peek_nth_link"), visibility("default")));
+
+#undef g_queue_peek_tail 
+extern __typeof (g_queue_peek_tail) g_queue_peek_tail __attribute((alias("IA__g_queue_peek_tail"), visibility("default")));
+
+#undef g_queue_peek_tail_link 
+extern __typeof (g_queue_peek_tail_link) g_queue_peek_tail_link __attribute((alias("IA__g_queue_peek_tail_link"), visibility("default")));
+
+#undef g_queue_pop_head 
+extern __typeof (g_queue_pop_head) g_queue_pop_head __attribute((alias("IA__g_queue_pop_head"), visibility("default")));
+
+#undef g_queue_pop_head_link 
+extern __typeof (g_queue_pop_head_link) g_queue_pop_head_link __attribute((alias("IA__g_queue_pop_head_link"), visibility("default")));
+
+#undef g_queue_pop_nth 
+extern __typeof (g_queue_pop_nth) g_queue_pop_nth __attribute((alias("IA__g_queue_pop_nth"), visibility("default")));
+
+#undef g_queue_pop_nth_link 
+extern __typeof (g_queue_pop_nth_link) g_queue_pop_nth_link __attribute((alias("IA__g_queue_pop_nth_link"), visibility("default")));
+
+#undef g_queue_pop_tail 
+extern __typeof (g_queue_pop_tail) g_queue_pop_tail __attribute((alias("IA__g_queue_pop_tail"), visibility("default")));
+
+#undef g_queue_pop_tail_link 
+extern __typeof (g_queue_pop_tail_link) g_queue_pop_tail_link __attribute((alias("IA__g_queue_pop_tail_link"), visibility("default")));
+
+#undef g_queue_push_head 
+extern __typeof (g_queue_push_head) g_queue_push_head __attribute((alias("IA__g_queue_push_head"), visibility("default")));
+
+#undef g_queue_push_head_link 
+extern __typeof (g_queue_push_head_link) g_queue_push_head_link __attribute((alias("IA__g_queue_push_head_link"), visibility("default")));
+
+#undef g_queue_push_nth 
+extern __typeof (g_queue_push_nth) g_queue_push_nth __attribute((alias("IA__g_queue_push_nth"), visibility("default")));
+
+#undef g_queue_push_nth_link 
+extern __typeof (g_queue_push_nth_link) g_queue_push_nth_link __attribute((alias("IA__g_queue_push_nth_link"), visibility("default")));
+
+#undef g_queue_push_tail 
+extern __typeof (g_queue_push_tail) g_queue_push_tail __attribute((alias("IA__g_queue_push_tail"), visibility("default")));
+
+#undef g_queue_push_tail_link 
+extern __typeof (g_queue_push_tail_link) g_queue_push_tail_link __attribute((alias("IA__g_queue_push_tail_link"), visibility("default")));
+
+#undef g_queue_remove 
+extern __typeof (g_queue_remove) g_queue_remove __attribute((alias("IA__g_queue_remove"), visibility("default")));
+
+#undef g_queue_remove_all 
+extern __typeof (g_queue_remove_all) g_queue_remove_all __attribute((alias("IA__g_queue_remove_all"), visibility("default")));
+
+#undef g_queue_reverse 
+extern __typeof (g_queue_reverse) g_queue_reverse __attribute((alias("IA__g_queue_reverse"), visibility("default")));
+
+#undef g_queue_sort 
+extern __typeof (g_queue_sort) g_queue_sort __attribute((alias("IA__g_queue_sort"), visibility("default")));
+
+#undef g_queue_unlink 
+extern __typeof (g_queue_unlink) g_queue_unlink __attribute((alias("IA__g_queue_unlink"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_RAND_H__)
+#if IN_FILE(__G_RAND_C__)
+#undef g_rand_copy 
+extern __typeof (g_rand_copy) g_rand_copy __attribute((alias("IA__g_rand_copy"), visibility("default")));
+
+#undef g_rand_double 
+extern __typeof (g_rand_double) g_rand_double __attribute((alias("IA__g_rand_double"), visibility("default")));
+
+#undef g_rand_double_range 
+extern __typeof (g_rand_double_range) g_rand_double_range __attribute((alias("IA__g_rand_double_range"), visibility("default")));
+
+#undef g_rand_free 
+extern __typeof (g_rand_free) g_rand_free __attribute((alias("IA__g_rand_free"), visibility("default")));
+
+#undef g_rand_int 
+extern __typeof (g_rand_int) g_rand_int __attribute((alias("IA__g_rand_int"), visibility("default")));
+
+#undef g_rand_int_range 
+extern __typeof (g_rand_int_range) g_rand_int_range __attribute((alias("IA__g_rand_int_range"), visibility("default")));
+
+#undef g_rand_new 
+extern __typeof (g_rand_new) g_rand_new __attribute((alias("IA__g_rand_new"), visibility("default")));
+
+#undef g_rand_new_with_seed 
+extern __typeof (g_rand_new_with_seed) g_rand_new_with_seed __attribute((alias("IA__g_rand_new_with_seed"), visibility("default")));
+
+#undef g_rand_new_with_seed_array 
+extern __typeof (g_rand_new_with_seed_array) g_rand_new_with_seed_array __attribute((alias("IA__g_rand_new_with_seed_array"), visibility("default")));
+
+#undef g_random_double 
+extern __typeof (g_random_double) g_random_double __attribute((alias("IA__g_random_double"), visibility("default")));
+
+#undef g_random_double_range 
+extern __typeof (g_random_double_range) g_random_double_range __attribute((alias("IA__g_random_double_range"), visibility("default")));
+
+#undef g_random_int 
+extern __typeof (g_random_int) g_random_int __attribute((alias("IA__g_random_int"), visibility("default")));
+
+#undef g_random_int_range 
+extern __typeof (g_random_int_range) g_random_int_range __attribute((alias("IA__g_random_int_range"), visibility("default")));
+
+#undef g_random_set_seed 
+extern __typeof (g_random_set_seed) g_random_set_seed __attribute((alias("IA__g_random_set_seed"), visibility("default")));
+
+#undef g_rand_set_seed 
+extern __typeof (g_rand_set_seed) g_rand_set_seed __attribute((alias("IA__g_rand_set_seed"), visibility("default")));
+
+#undef g_rand_set_seed_array 
+extern __typeof (g_rand_set_seed_array) g_rand_set_seed_array __attribute((alias("IA__g_rand_set_seed_array"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_REL_H__)
+#if IN_FILE(__G_REL_C__)
+#undef g_relation_count 
+extern __typeof (g_relation_count) g_relation_count __attribute((alias("IA__g_relation_count"), visibility("default")));
+
+#undef g_relation_delete 
+extern __typeof (g_relation_delete) g_relation_delete __attribute((alias("IA__g_relation_delete"), visibility("default")));
+
+#undef g_relation_destroy 
+extern __typeof (g_relation_destroy) g_relation_destroy __attribute((alias("IA__g_relation_destroy"), visibility("default")));
+
+#undef g_relation_exists 
+extern __typeof (g_relation_exists) g_relation_exists __attribute((alias("IA__g_relation_exists"), visibility("default")));
+
+#undef g_relation_index 
+extern __typeof (g_relation_index) g_relation_index __attribute((alias("IA__g_relation_index"), visibility("default")));
+
+#undef g_relation_insert 
+extern __typeof (g_relation_insert) g_relation_insert __attribute((alias("IA__g_relation_insert"), visibility("default")));
+
+#undef g_relation_new 
+extern __typeof (g_relation_new) g_relation_new __attribute((alias("IA__g_relation_new"), visibility("default")));
+
+#undef g_relation_print 
+extern __typeof (g_relation_print) g_relation_print __attribute((alias("IA__g_relation_print"), visibility("default")));
+
+#undef g_relation_select 
+extern __typeof (g_relation_select) g_relation_select __attribute((alias("IA__g_relation_select"), visibility("default")));
+
+#undef g_tuples_destroy 
+extern __typeof (g_tuples_destroy) g_tuples_destroy __attribute((alias("IA__g_tuples_destroy"), visibility("default")));
+
+#undef g_tuples_index 
+extern __typeof (g_tuples_index) g_tuples_index __attribute((alias("IA__g_tuples_index"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_SCANNER_H__)
+#if IN_FILE(__G_SCANNER_C__)
+#undef g_scanner_cur_line 
+extern __typeof (g_scanner_cur_line) g_scanner_cur_line __attribute((alias("IA__g_scanner_cur_line"), visibility("default")));
+
+#undef g_scanner_cur_position 
+extern __typeof (g_scanner_cur_position) g_scanner_cur_position __attribute((alias("IA__g_scanner_cur_position"), visibility("default")));
+
+#undef g_scanner_cur_token 
+extern __typeof (g_scanner_cur_token) g_scanner_cur_token __attribute((alias("IA__g_scanner_cur_token"), visibility("default")));
+
+#undef g_scanner_cur_value 
+extern __typeof (g_scanner_cur_value) g_scanner_cur_value __attribute((alias("IA__g_scanner_cur_value"), visibility("default")));
+
+#undef g_scanner_destroy 
+extern __typeof (g_scanner_destroy) g_scanner_destroy __attribute((alias("IA__g_scanner_destroy"), visibility("default")));
+
+#undef g_scanner_eof 
+extern __typeof (g_scanner_eof) g_scanner_eof __attribute((alias("IA__g_scanner_eof"), visibility("default")));
+
+#undef g_scanner_error 
+extern __typeof (g_scanner_error) g_scanner_error __attribute((alias("IA__g_scanner_error"), visibility("default")));
+
+#undef g_scanner_get_next_token 
+extern __typeof (g_scanner_get_next_token) g_scanner_get_next_token __attribute((alias("IA__g_scanner_get_next_token"), visibility("default")));
+
+#undef g_scanner_input_file 
+extern __typeof (g_scanner_input_file) g_scanner_input_file __attribute((alias("IA__g_scanner_input_file"), visibility("default")));
+
+#undef g_scanner_input_text 
+extern __typeof (g_scanner_input_text) g_scanner_input_text __attribute((alias("IA__g_scanner_input_text"), visibility("default")));
+
+#undef g_scanner_lookup_symbol 
+extern __typeof (g_scanner_lookup_symbol) g_scanner_lookup_symbol __attribute((alias("IA__g_scanner_lookup_symbol"), visibility("default")));
+
+#undef g_scanner_new 
+extern __typeof (g_scanner_new) g_scanner_new __attribute((alias("IA__g_scanner_new"), visibility("default")));
+
+#undef g_scanner_peek_next_token 
+extern __typeof (g_scanner_peek_next_token) g_scanner_peek_next_token __attribute((alias("IA__g_scanner_peek_next_token"), visibility("default")));
+
+#undef g_scanner_scope_add_symbol 
+extern __typeof (g_scanner_scope_add_symbol) g_scanner_scope_add_symbol __attribute((alias("IA__g_scanner_scope_add_symbol"), visibility("default")));
+
+#undef g_scanner_scope_foreach_symbol 
+extern __typeof (g_scanner_scope_foreach_symbol) g_scanner_scope_foreach_symbol __attribute((alias("IA__g_scanner_scope_foreach_symbol"), visibility("default")));
+
+#undef g_scanner_scope_lookup_symbol 
+extern __typeof (g_scanner_scope_lookup_symbol) g_scanner_scope_lookup_symbol __attribute((alias("IA__g_scanner_scope_lookup_symbol"), visibility("default")));
+
+#undef g_scanner_scope_remove_symbol 
+extern __typeof (g_scanner_scope_remove_symbol) g_scanner_scope_remove_symbol __attribute((alias("IA__g_scanner_scope_remove_symbol"), visibility("default")));
+
+#undef g_scanner_set_scope 
+extern __typeof (g_scanner_set_scope) g_scanner_set_scope __attribute((alias("IA__g_scanner_set_scope"), visibility("default")));
+
+#undef g_scanner_sync_file_offset 
+extern __typeof (g_scanner_sync_file_offset) g_scanner_sync_file_offset __attribute((alias("IA__g_scanner_sync_file_offset"), visibility("default")));
+
+#undef g_scanner_unexp_token 
+extern __typeof (g_scanner_unexp_token) g_scanner_unexp_token __attribute((alias("IA__g_scanner_unexp_token"), visibility("default")));
+
+#undef g_scanner_warn 
+extern __typeof (g_scanner_warn) g_scanner_warn __attribute((alias("IA__g_scanner_warn"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_SEQUENCE_H__)
+#if IN_FILE(__G_SEQUENCE_C__)
+#undef g_sequence_new 
+extern __typeof (g_sequence_new) g_sequence_new __attribute((alias("IA__g_sequence_new"), visibility("default")));
+
+#undef g_sequence_free 
+extern __typeof (g_sequence_free) g_sequence_free __attribute((alias("IA__g_sequence_free"), visibility("default")));
+
+#undef g_sequence_get_length 
+extern __typeof (g_sequence_get_length) g_sequence_get_length __attribute((alias("IA__g_sequence_get_length"), visibility("default")));
+
+#undef g_sequence_foreach 
+extern __typeof (g_sequence_foreach) g_sequence_foreach __attribute((alias("IA__g_sequence_foreach"), visibility("default")));
+
+#undef g_sequence_foreach_range 
+extern __typeof (g_sequence_foreach_range) g_sequence_foreach_range __attribute((alias("IA__g_sequence_foreach_range"), visibility("default")));
+
+#undef g_sequence_sort 
+extern __typeof (g_sequence_sort) g_sequence_sort __attribute((alias("IA__g_sequence_sort"), visibility("default")));
+
+#undef g_sequence_sort_iter 
+extern __typeof (g_sequence_sort_iter) g_sequence_sort_iter __attribute((alias("IA__g_sequence_sort_iter"), visibility("default")));
+
+#undef g_sequence_get_begin_iter 
+extern __typeof (g_sequence_get_begin_iter) g_sequence_get_begin_iter __attribute((alias("IA__g_sequence_get_begin_iter"), visibility("default")));
+
+#undef g_sequence_get_end_iter 
+extern __typeof (g_sequence_get_end_iter) g_sequence_get_end_iter __attribute((alias("IA__g_sequence_get_end_iter"), visibility("default")));
+
+#undef g_sequence_get_iter_at_pos 
+extern __typeof (g_sequence_get_iter_at_pos) g_sequence_get_iter_at_pos __attribute((alias("IA__g_sequence_get_iter_at_pos"), visibility("default")));
+
+#undef g_sequence_append 
+extern __typeof (g_sequence_append) g_sequence_append __attribute((alias("IA__g_sequence_append"), visibility("default")));
+
+#undef g_sequence_prepend 
+extern __typeof (g_sequence_prepend) g_sequence_prepend __attribute((alias("IA__g_sequence_prepend"), visibility("default")));
+
+#undef g_sequence_insert_before 
+extern __typeof (g_sequence_insert_before) g_sequence_insert_before __attribute((alias("IA__g_sequence_insert_before"), visibility("default")));
+
+#undef g_sequence_move 
+extern __typeof (g_sequence_move) g_sequence_move __attribute((alias("IA__g_sequence_move"), visibility("default")));
+
+#undef g_sequence_swap 
+extern __typeof (g_sequence_swap) g_sequence_swap __attribute((alias("IA__g_sequence_swap"), visibility("default")));
+
+#undef g_sequence_insert_sorted 
+extern __typeof (g_sequence_insert_sorted) g_sequence_insert_sorted __attribute((alias("IA__g_sequence_insert_sorted"), visibility("default")));
+
+#undef g_sequence_insert_sorted_iter 
+extern __typeof (g_sequence_insert_sorted_iter) g_sequence_insert_sorted_iter __attribute((alias("IA__g_sequence_insert_sorted_iter"), visibility("default")));
+
+#undef g_sequence_sort_changed 
+extern __typeof (g_sequence_sort_changed) g_sequence_sort_changed __attribute((alias("IA__g_sequence_sort_changed"), visibility("default")));
+
+#undef g_sequence_sort_changed_iter 
+extern __typeof (g_sequence_sort_changed_iter) g_sequence_sort_changed_iter __attribute((alias("IA__g_sequence_sort_changed_iter"), visibility("default")));
+
+#undef g_sequence_remove 
+extern __typeof (g_sequence_remove) g_sequence_remove __attribute((alias("IA__g_sequence_remove"), visibility("default")));
+
+#undef g_sequence_remove_range 
+extern __typeof (g_sequence_remove_range) g_sequence_remove_range __attribute((alias("IA__g_sequence_remove_range"), visibility("default")));
+
+#undef g_sequence_move_range 
+extern __typeof (g_sequence_move_range) g_sequence_move_range __attribute((alias("IA__g_sequence_move_range"), visibility("default")));
+
+#undef g_sequence_search 
+extern __typeof (g_sequence_search) g_sequence_search __attribute((alias("IA__g_sequence_search"), visibility("default")));
+
+#undef g_sequence_search_iter 
+extern __typeof (g_sequence_search_iter) g_sequence_search_iter __attribute((alias("IA__g_sequence_search_iter"), visibility("default")));
+
+#undef g_sequence_get 
+extern __typeof (g_sequence_get) g_sequence_get __attribute((alias("IA__g_sequence_get"), visibility("default")));
+
+#undef g_sequence_set 
+extern __typeof (g_sequence_set) g_sequence_set __attribute((alias("IA__g_sequence_set"), visibility("default")));
+
+#undef g_sequence_iter_is_begin 
+extern __typeof (g_sequence_iter_is_begin) g_sequence_iter_is_begin __attribute((alias("IA__g_sequence_iter_is_begin"), visibility("default")));
+
+#undef g_sequence_iter_is_end 
+extern __typeof (g_sequence_iter_is_end) g_sequence_iter_is_end __attribute((alias("IA__g_sequence_iter_is_end"), visibility("default")));
+
+#undef g_sequence_iter_next 
+extern __typeof (g_sequence_iter_next) g_sequence_iter_next __attribute((alias("IA__g_sequence_iter_next"), visibility("default")));
+
+#undef g_sequence_iter_prev 
+extern __typeof (g_sequence_iter_prev) g_sequence_iter_prev __attribute((alias("IA__g_sequence_iter_prev"), visibility("default")));
+
+#undef g_sequence_iter_get_position 
+extern __typeof (g_sequence_iter_get_position) g_sequence_iter_get_position __attribute((alias("IA__g_sequence_iter_get_position"), visibility("default")));
+
+#undef g_sequence_iter_move 
+extern __typeof (g_sequence_iter_move) g_sequence_iter_move __attribute((alias("IA__g_sequence_iter_move"), visibility("default")));
+
+#undef g_sequence_iter_get_sequence 
+extern __typeof (g_sequence_iter_get_sequence) g_sequence_iter_get_sequence __attribute((alias("IA__g_sequence_iter_get_sequence"), visibility("default")));
+
+#undef g_sequence_iter_compare 
+extern __typeof (g_sequence_iter_compare) g_sequence_iter_compare __attribute((alias("IA__g_sequence_iter_compare"), visibility("default")));
+
+#undef g_sequence_range_get_midpoint 
+extern __typeof (g_sequence_range_get_midpoint) g_sequence_range_get_midpoint __attribute((alias("IA__g_sequence_range_get_midpoint"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_SHELL_H__)
+#if IN_FILE(__G_SHELL_C__)
+#undef g_shell_error_quark 
+extern __typeof (g_shell_error_quark) g_shell_error_quark __attribute((alias("IA__g_shell_error_quark"), visibility("default")));
+
+#undef g_shell_parse_argv 
+extern __typeof (g_shell_parse_argv) g_shell_parse_argv __attribute((alias("IA__g_shell_parse_argv"), visibility("default")));
+
+#undef g_shell_quote 
+extern __typeof (g_shell_quote) g_shell_quote __attribute((alias("IA__g_shell_quote"), visibility("default")));
+
+#undef g_shell_unquote 
+extern __typeof (g_shell_unquote) g_shell_unquote __attribute((alias("IA__g_shell_unquote"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_SLIST_H__)
+#if IN_FILE(__G_SLIST_C__)
+#undef g_slist_alloc 
+extern __typeof (g_slist_alloc) g_slist_alloc __attribute((alias("IA__g_slist_alloc"), visibility("default")));
+
+#undef g_slist_append 
+extern __typeof (g_slist_append) g_slist_append __attribute((alias("IA__g_slist_append"), visibility("default")));
+
+#undef g_slist_concat 
+extern __typeof (g_slist_concat) g_slist_concat __attribute((alias("IA__g_slist_concat"), visibility("default")));
+
+#undef g_slist_copy 
+extern __typeof (g_slist_copy) g_slist_copy __attribute((alias("IA__g_slist_copy"), visibility("default")));
+
+#undef g_slist_delete_link 
+extern __typeof (g_slist_delete_link) g_slist_delete_link __attribute((alias("IA__g_slist_delete_link"), visibility("default")));
+
+#undef g_slist_find 
+extern __typeof (g_slist_find) g_slist_find __attribute((alias("IA__g_slist_find"), visibility("default")));
+
+#undef g_slist_find_custom 
+extern __typeof (g_slist_find_custom) g_slist_find_custom __attribute((alias("IA__g_slist_find_custom"), visibility("default")));
+
+#undef g_slist_foreach 
+extern __typeof (g_slist_foreach) g_slist_foreach __attribute((alias("IA__g_slist_foreach"), visibility("default")));
+
+#undef g_slist_free 
+extern __typeof (g_slist_free) g_slist_free __attribute((alias("IA__g_slist_free"), visibility("default")));
+
+#undef g_slist_free_1 
+extern __typeof (g_slist_free_1) g_slist_free_1 __attribute((alias("IA__g_slist_free_1"), visibility("default")));
+
+#undef g_slist_index 
+extern __typeof (g_slist_index) g_slist_index __attribute((alias("IA__g_slist_index"), visibility("default")));
+
+#undef g_slist_insert 
+extern __typeof (g_slist_insert) g_slist_insert __attribute((alias("IA__g_slist_insert"), visibility("default")));
+
+#undef g_slist_insert_before 
+extern __typeof (g_slist_insert_before) g_slist_insert_before __attribute((alias("IA__g_slist_insert_before"), visibility("default")));
+
+#undef g_slist_insert_sorted 
+extern __typeof (g_slist_insert_sorted) g_slist_insert_sorted __attribute((alias("IA__g_slist_insert_sorted"), visibility("default")));
+
+#undef g_slist_insert_sorted_with_data 
+extern __typeof (g_slist_insert_sorted_with_data) g_slist_insert_sorted_with_data __attribute((alias("IA__g_slist_insert_sorted_with_data"), visibility("default")));
+
+#undef g_slist_last 
+extern __typeof (g_slist_last) g_slist_last __attribute((alias("IA__g_slist_last"), visibility("default")));
+
+#undef g_slist_length 
+extern __typeof (g_slist_length) g_slist_length __attribute((alias("IA__g_slist_length"), visibility("default")));
+
+#undef g_slist_nth 
+extern __typeof (g_slist_nth) g_slist_nth __attribute((alias("IA__g_slist_nth"), visibility("default")));
+
+#undef g_slist_nth_data 
+extern __typeof (g_slist_nth_data) g_slist_nth_data __attribute((alias("IA__g_slist_nth_data"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_slist_pop_allocator 
+extern __typeof (g_slist_pop_allocator) g_slist_pop_allocator __attribute((alias("IA__g_slist_pop_allocator"), visibility("default")));
+
+#endif
+#undef g_slist_position 
+extern __typeof (g_slist_position) g_slist_position __attribute((alias("IA__g_slist_position"), visibility("default")));
+
+#undef g_slist_prepend 
+extern __typeof (g_slist_prepend) g_slist_prepend __attribute((alias("IA__g_slist_prepend"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_slist_push_allocator 
+extern __typeof (g_slist_push_allocator) g_slist_push_allocator __attribute((alias("IA__g_slist_push_allocator"), visibility("default")));
+
+#endif
+#undef g_slist_remove 
+extern __typeof (g_slist_remove) g_slist_remove __attribute((alias("IA__g_slist_remove"), visibility("default")));
+
+#undef g_slist_remove_all 
+extern __typeof (g_slist_remove_all) g_slist_remove_all __attribute((alias("IA__g_slist_remove_all"), visibility("default")));
+
+#undef g_slist_remove_link 
+extern __typeof (g_slist_remove_link) g_slist_remove_link __attribute((alias("IA__g_slist_remove_link"), visibility("default")));
+
+#undef g_slist_reverse 
+extern __typeof (g_slist_reverse) g_slist_reverse __attribute((alias("IA__g_slist_reverse"), visibility("default")));
+
+#undef g_slist_sort 
+extern __typeof (g_slist_sort) g_slist_sort __attribute((alias("IA__g_slist_sort"), visibility("default")));
+
+#undef g_slist_sort_with_data 
+extern __typeof (g_slist_sort_with_data) g_slist_sort_with_data __attribute((alias("IA__g_slist_sort_with_data"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_SPAWN_H__)
+#if IN_FILE(__G_SPAWN_C__)
+#ifndef _WIN64
+#undef g_spawn_async 
+extern __typeof (g_spawn_async) g_spawn_async __attribute((alias("IA__g_spawn_async"), visibility("default")));
+
+#undef g_spawn_async_with_pipes 
+extern __typeof (g_spawn_async_with_pipes) g_spawn_async_with_pipes __attribute((alias("IA__g_spawn_async_with_pipes"), visibility("default")));
+
+#endif
+#undef g_spawn_close_pid 
+extern __typeof (g_spawn_close_pid) g_spawn_close_pid __attribute((alias("IA__g_spawn_close_pid"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_spawn_command_line_async 
+extern __typeof (g_spawn_command_line_async) g_spawn_command_line_async __attribute((alias("IA__g_spawn_command_line_async"), visibility("default")));
+
+#undef g_spawn_command_line_sync 
+extern __typeof (g_spawn_command_line_sync) g_spawn_command_line_sync __attribute((alias("IA__g_spawn_command_line_sync"), visibility("default")));
+
+#endif
+#undef g_spawn_error_quark 
+extern __typeof (g_spawn_error_quark) g_spawn_error_quark __attribute((alias("IA__g_spawn_error_quark"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_spawn_sync 
+extern __typeof (g_spawn_sync) g_spawn_sync __attribute((alias("IA__g_spawn_sync"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_spawn_async_utf8 
+extern __typeof (g_spawn_async_utf8) g_spawn_async_utf8 __attribute((alias("IA__g_spawn_async_utf8"), visibility("default")));
+
+#undef g_spawn_async_with_pipes_utf8 
+extern __typeof (g_spawn_async_with_pipes_utf8) g_spawn_async_with_pipes_utf8 __attribute((alias("IA__g_spawn_async_with_pipes_utf8"), visibility("default")));
+
+#undef g_spawn_command_line_async_utf8 
+extern __typeof (g_spawn_command_line_async_utf8) g_spawn_command_line_async_utf8 __attribute((alias("IA__g_spawn_command_line_async_utf8"), visibility("default")));
+
+#undef g_spawn_command_line_sync_utf8 
+extern __typeof (g_spawn_command_line_sync_utf8) g_spawn_command_line_sync_utf8 __attribute((alias("IA__g_spawn_command_line_sync_utf8"), visibility("default")));
+
+#undef g_spawn_sync_utf8 
+extern __typeof (g_spawn_sync_utf8) g_spawn_sync_utf8 __attribute((alias("IA__g_spawn_sync_utf8"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_STDIO_H__)
+#if IN_FILE(__G_STDIO_C__)
+#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
+#undef g_chmod 
+extern __typeof (g_chmod) g_chmod __attribute((alias("IA__g_chmod"), visibility("default")));
+
+#undef g_open 
+extern __typeof (g_open) g_open __attribute((alias("IA__g_open"), visibility("default")));
+
+#undef g_creat 
+extern __typeof (g_creat) g_creat __attribute((alias("IA__g_creat"), visibility("default")));
+
+#undef g_rename 
+extern __typeof (g_rename) g_rename __attribute((alias("IA__g_rename"), visibility("default")));
+
+#undef g_mkdir 
+extern __typeof (g_mkdir) g_mkdir __attribute((alias("IA__g_mkdir"), visibility("default")));
+
+#undef g_stat 
+extern __typeof (g_stat) g_stat __attribute((alias("IA__g_stat"), visibility("default")));
+
+#undef g_lstat 
+extern __typeof (g_lstat) g_lstat __attribute((alias("IA__g_lstat"), visibility("default")));
+
+#undef g_remove 
+extern __typeof (g_remove) g_remove __attribute((alias("IA__g_remove"), visibility("default")));
+
+#undef g_fopen 
+extern __typeof (g_fopen) g_fopen __attribute((alias("IA__g_fopen"), visibility("default")));
+
+#undef g_freopen 
+extern __typeof (g_freopen) g_freopen __attribute((alias("IA__g_freopen"), visibility("default")));
+
+#undef g_utime 
+extern __typeof (g_utime) g_utime __attribute((alias("IA__g_utime"), visibility("default")));
+
+#endif
+#undef g_access 
+extern __typeof (g_access) g_access __attribute((alias("IA__g_access"), visibility("default")));
+
+#undef g_chdir 
+extern __typeof (g_chdir) g_chdir __attribute((alias("IA__g_chdir"), visibility("default")));
+
+#undef g_unlink 
+extern __typeof (g_unlink) g_unlink __attribute((alias("IA__g_unlink"), visibility("default")));
+
+#undef g_rmdir 
+extern __typeof (g_rmdir) g_rmdir __attribute((alias("IA__g_rmdir"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_STRFUNCS_H__)
+#if IN_FILE(__G_STRFUNCS_C__)
+#undef g_ascii_digit_value 
+extern __typeof (g_ascii_digit_value) g_ascii_digit_value __attribute((alias("IA__g_ascii_digit_value"), visibility("default")));
+
+#undef g_ascii_dtostr 
+extern __typeof (g_ascii_dtostr) g_ascii_dtostr __attribute((alias("IA__g_ascii_dtostr"), visibility("default")));
+
+#ifdef ANDROID_STUB
+#undef g_ascii_formatd 
+extern __typeof (g_ascii_formatd) g_ascii_formatd __attribute((alias("IA__g_ascii_formatd"), visibility("default")));
+#endif
+
+#undef g_ascii_strdown 
+extern __typeof (g_ascii_strdown) g_ascii_strdown __attribute((alias("IA__g_ascii_strdown"), visibility("default")));
+
+#ifdef ANDROID_STUB
+#undef g_ascii_strtod 
+extern __typeof (g_ascii_strtod) g_ascii_strtod __attribute((alias("IA__g_ascii_strtod"), visibility("default")));
+#endif
+
+#undef g_ascii_strtoull 
+extern __typeof (g_ascii_strtoull) g_ascii_strtoull __attribute((alias("IA__g_ascii_strtoull"), visibility("default")));
+
+#undef g_ascii_strtoll 
+extern __typeof (g_ascii_strtoll) g_ascii_strtoll __attribute((alias("IA__g_ascii_strtoll"), visibility("default")));
+
+#undef g_ascii_strup 
+extern __typeof (g_ascii_strup) g_ascii_strup __attribute((alias("IA__g_ascii_strup"), visibility("default")));
+
+#undef g_ascii_tolower 
+extern __typeof (g_ascii_tolower) g_ascii_tolower __attribute((alias("IA__g_ascii_tolower"), visibility("default")));
+
+#undef g_ascii_toupper 
+extern __typeof (g_ascii_toupper) g_ascii_toupper __attribute((alias("IA__g_ascii_toupper"), visibility("default")));
+
+#undef g_ascii_xdigit_value 
+extern __typeof (g_ascii_xdigit_value) g_ascii_xdigit_value __attribute((alias("IA__g_ascii_xdigit_value"), visibility("default")));
+
+#undef g_ascii_strcasecmp 
+extern __typeof (g_ascii_strcasecmp) g_ascii_strcasecmp __attribute((alias("IA__g_ascii_strcasecmp"), visibility("default")));
+
+#undef g_ascii_strncasecmp 
+extern __typeof (g_ascii_strncasecmp) g_ascii_strncasecmp __attribute((alias("IA__g_ascii_strncasecmp"), visibility("default")));
+
+#undef g_memdup 
+extern __typeof (g_memdup) g_memdup __attribute((alias("IA__g_memdup"), visibility("default")));
+
+#undef g_stpcpy 
+extern __typeof (g_stpcpy) g_stpcpy __attribute((alias("IA__g_stpcpy"), visibility("default")));
+
+#undef g_strcanon 
+extern __typeof (g_strcanon) g_strcanon __attribute((alias("IA__g_strcanon"), visibility("default")));
+
+#undef g_strchomp 
+extern __typeof (g_strchomp) g_strchomp __attribute((alias("IA__g_strchomp"), visibility("default")));
+
+#undef g_strchug 
+extern __typeof (g_strchug) g_strchug __attribute((alias("IA__g_strchug"), visibility("default")));
+
+#undef g_strcompress 
+extern __typeof (g_strcompress) g_strcompress __attribute((alias("IA__g_strcompress"), visibility("default")));
+
+#undef g_strconcat 
+extern __typeof (g_strconcat) g_strconcat __attribute((alias("IA__g_strconcat"), visibility("default")));
+
+#undef g_strdelimit 
+extern __typeof (g_strdelimit) g_strdelimit __attribute((alias("IA__g_strdelimit"), visibility("default")));
+
+#undef g_strdup 
+extern __typeof (g_strdup) g_strdup __attribute((alias("IA__g_strdup"), visibility("default")));
+
+#undef g_strdup_printf 
+extern __typeof (g_strdup_printf) g_strdup_printf __attribute((alias("IA__g_strdup_printf"), visibility("default")));
+
+#undef g_strdupv 
+extern __typeof (g_strdupv) g_strdupv __attribute((alias("IA__g_strdupv"), visibility("default")));
+
+#undef g_strdup_vprintf 
+extern __typeof (g_strdup_vprintf) g_strdup_vprintf __attribute((alias("IA__g_strdup_vprintf"), visibility("default")));
+
+#undef g_strerror 
+extern __typeof (g_strerror) g_strerror __attribute((alias("IA__g_strerror"), visibility("default")));
+
+#undef g_strescape 
+extern __typeof (g_strescape) g_strescape __attribute((alias("IA__g_strescape"), visibility("default")));
+
+#undef g_strfreev 
+extern __typeof (g_strfreev) g_strfreev __attribute((alias("IA__g_strfreev"), visibility("default")));
+
+#undef g_str_has_prefix 
+extern __typeof (g_str_has_prefix) g_str_has_prefix __attribute((alias("IA__g_str_has_prefix"), visibility("default")));
+
+#undef g_str_has_suffix 
+extern __typeof (g_str_has_suffix) g_str_has_suffix __attribute((alias("IA__g_str_has_suffix"), visibility("default")));
+
+#undef g_strjoin 
+extern __typeof (g_strjoin) g_strjoin __attribute((alias("IA__g_strjoin"), visibility("default")));
+
+#undef g_strjoinv 
+extern __typeof (g_strjoinv) g_strjoinv __attribute((alias("IA__g_strjoinv"), visibility("default")));
+
+#undef g_strlcat 
+extern __typeof (g_strlcat) g_strlcat __attribute((alias("IA__g_strlcat"), visibility("default")));
+
+#undef g_strlcpy 
+extern __typeof (g_strlcpy) g_strlcpy __attribute((alias("IA__g_strlcpy"), visibility("default")));
+
+#undef g_strndup 
+extern __typeof (g_strndup) g_strndup __attribute((alias("IA__g_strndup"), visibility("default")));
+
+#undef g_strnfill 
+extern __typeof (g_strnfill) g_strnfill __attribute((alias("IA__g_strnfill"), visibility("default")));
+
+#undef g_strreverse 
+extern __typeof (g_strreverse) g_strreverse __attribute((alias("IA__g_strreverse"), visibility("default")));
+
+#undef g_strrstr 
+extern __typeof (g_strrstr) g_strrstr __attribute((alias("IA__g_strrstr"), visibility("default")));
+
+#undef g_strrstr_len 
+extern __typeof (g_strrstr_len) g_strrstr_len __attribute((alias("IA__g_strrstr_len"), visibility("default")));
+
+#undef g_strsignal 
+extern __typeof (g_strsignal) g_strsignal __attribute((alias("IA__g_strsignal"), visibility("default")));
+
+#undef g_strsplit 
+extern __typeof (g_strsplit) g_strsplit __attribute((alias("IA__g_strsplit"), visibility("default")));
+
+#undef g_strsplit_set 
+extern __typeof (g_strsplit_set) g_strsplit_set __attribute((alias("IA__g_strsplit_set"), visibility("default")));
+
+#undef g_strstr_len 
+extern __typeof (g_strstr_len) g_strstr_len __attribute((alias("IA__g_strstr_len"), visibility("default")));
+
+#undef g_strtod 
+extern __typeof (g_strtod) g_strtod __attribute((alias("IA__g_strtod"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_strcasecmp 
+extern __typeof (g_strcasecmp) g_strcasecmp __attribute((alias("IA__g_strcasecmp"), visibility("default")));
+
+#undef g_strncasecmp 
+extern __typeof (g_strncasecmp) g_strncasecmp __attribute((alias("IA__g_strncasecmp"), visibility("default")));
+
+#undef g_strup 
+extern __typeof (g_strup) g_strup __attribute((alias("IA__g_strup"), visibility("default")));
+
+#undef g_strdown 
+extern __typeof (g_strdown) g_strdown __attribute((alias("IA__g_strdown"), visibility("default")));
+
+#endif
+#undef g_strv_length 
+extern __typeof (g_strv_length) g_strv_length __attribute((alias("IA__g_strv_length"), visibility("default")));
+
+#undef g_strip_context 
+extern __typeof (g_strip_context) g_strip_context __attribute((alias("IA__g_strip_context"), visibility("default")));
+
+#undef g_dgettext 
+extern __typeof (g_dgettext) g_dgettext __attribute((alias("IA__g_dgettext"), visibility("default")));
+
+#undef g_dngettext 
+extern __typeof (g_dngettext) g_dngettext __attribute((alias("IA__g_dngettext"), visibility("default")));
+
+#undef g_dpgettext 
+extern __typeof (g_dpgettext) g_dpgettext __attribute((alias("IA__g_dpgettext"), visibility("default")));
+
+#undef g_dpgettext2 
+extern __typeof (g_dpgettext2) g_dpgettext2 __attribute((alias("IA__g_dpgettext2"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_URI_FUNCS_H__)
+#if IN_FILE(__G_URI_FUNCS_C__)
+#undef g_uri_unescape_string 
+extern __typeof (g_uri_unescape_string) g_uri_unescape_string __attribute((alias("IA__g_uri_unescape_string"), visibility("default")));
+
+#undef g_uri_unescape_segment 
+extern __typeof (g_uri_unescape_segment) g_uri_unescape_segment __attribute((alias("IA__g_uri_unescape_segment"), visibility("default")));
+
+#undef g_uri_parse_scheme 
+extern __typeof (g_uri_parse_scheme) g_uri_parse_scheme __attribute((alias("IA__g_uri_parse_scheme"), visibility("default")));
+
+#undef g_uri_escape_string 
+extern __typeof (g_uri_escape_string) g_uri_escape_string __attribute((alias("IA__g_uri_escape_string"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_STRING_H__)
+#if IN_FILE(__G_STRING_C__)
+#undef g_string_append 
+extern __typeof (g_string_append) g_string_append __attribute((alias("IA__g_string_append"), visibility("default")));
+
+#undef g_string_append_len 
+extern __typeof (g_string_append_len) g_string_append_len __attribute((alias("IA__g_string_append_len"), visibility("default")));
+
+#undef g_string_append_printf 
+extern __typeof (g_string_append_printf) g_string_append_printf __attribute((alias("IA__g_string_append_printf"), visibility("default")));
+
+#undef g_string_append_unichar 
+extern __typeof (g_string_append_unichar) g_string_append_unichar __attribute((alias("IA__g_string_append_unichar"), visibility("default")));
+
+#undef g_string_append_vprintf 
+extern __typeof (g_string_append_vprintf) g_string_append_vprintf __attribute((alias("IA__g_string_append_vprintf"), visibility("default")));
+
+#undef g_string_ascii_down 
+extern __typeof (g_string_ascii_down) g_string_ascii_down __attribute((alias("IA__g_string_ascii_down"), visibility("default")));
+
+#undef g_string_ascii_up 
+extern __typeof (g_string_ascii_up) g_string_ascii_up __attribute((alias("IA__g_string_ascii_up"), visibility("default")));
+
+#undef g_string_assign 
+extern __typeof (g_string_assign) g_string_assign __attribute((alias("IA__g_string_assign"), visibility("default")));
+
+#undef g_string_chunk_free 
+extern __typeof (g_string_chunk_free) g_string_chunk_free __attribute((alias("IA__g_string_chunk_free"), visibility("default")));
+
+#undef g_string_chunk_clear 
+extern __typeof (g_string_chunk_clear) g_string_chunk_clear __attribute((alias("IA__g_string_chunk_clear"), visibility("default")));
+
+#undef g_string_chunk_insert 
+extern __typeof (g_string_chunk_insert) g_string_chunk_insert __attribute((alias("IA__g_string_chunk_insert"), visibility("default")));
+
+#undef g_string_chunk_insert_const 
+extern __typeof (g_string_chunk_insert_const) g_string_chunk_insert_const __attribute((alias("IA__g_string_chunk_insert_const"), visibility("default")));
+
+#undef g_string_chunk_insert_len 
+extern __typeof (g_string_chunk_insert_len) g_string_chunk_insert_len __attribute((alias("IA__g_string_chunk_insert_len"), visibility("default")));
+
+#undef g_string_chunk_new 
+extern __typeof (g_string_chunk_new) g_string_chunk_new __attribute((alias("IA__g_string_chunk_new"), visibility("default")));
+
+#undef g_string_equal 
+extern __typeof (g_string_equal) g_string_equal __attribute((alias("IA__g_string_equal"), visibility("default")));
+
+#undef g_string_erase 
+extern __typeof (g_string_erase) g_string_erase __attribute((alias("IA__g_string_erase"), visibility("default")));
+
+#undef g_string_free 
+extern __typeof (g_string_free) g_string_free __attribute((alias("IA__g_string_free"), visibility("default")));
+
+#undef g_string_hash 
+extern __typeof (g_string_hash) g_string_hash __attribute((alias("IA__g_string_hash"), visibility("default")));
+
+#undef g_string_insert 
+extern __typeof (g_string_insert) g_string_insert __attribute((alias("IA__g_string_insert"), visibility("default")));
+
+#undef g_string_insert_c 
+extern __typeof (g_string_insert_c) g_string_insert_c __attribute((alias("IA__g_string_insert_c"), visibility("default")));
+
+#undef g_string_insert_len 
+extern __typeof (g_string_insert_len) g_string_insert_len __attribute((alias("IA__g_string_insert_len"), visibility("default")));
+
+#undef g_string_insert_unichar 
+extern __typeof (g_string_insert_unichar) g_string_insert_unichar __attribute((alias("IA__g_string_insert_unichar"), visibility("default")));
+
+#undef g_string_new 
+extern __typeof (g_string_new) g_string_new __attribute((alias("IA__g_string_new"), visibility("default")));
+
+#undef g_string_new_len 
+extern __typeof (g_string_new_len) g_string_new_len __attribute((alias("IA__g_string_new_len"), visibility("default")));
+
+#undef g_string_overwrite 
+extern __typeof (g_string_overwrite) g_string_overwrite __attribute((alias("IA__g_string_overwrite"), visibility("default")));
+
+#undef g_string_overwrite_len 
+extern __typeof (g_string_overwrite_len) g_string_overwrite_len __attribute((alias("IA__g_string_overwrite_len"), visibility("default")));
+
+#undef g_string_prepend 
+extern __typeof (g_string_prepend) g_string_prepend __attribute((alias("IA__g_string_prepend"), visibility("default")));
+
+#undef g_string_prepend_c 
+extern __typeof (g_string_prepend_c) g_string_prepend_c __attribute((alias("IA__g_string_prepend_c"), visibility("default")));
+
+#undef g_string_prepend_len 
+extern __typeof (g_string_prepend_len) g_string_prepend_len __attribute((alias("IA__g_string_prepend_len"), visibility("default")));
+
+#undef g_string_prepend_unichar 
+extern __typeof (g_string_prepend_unichar) g_string_prepend_unichar __attribute((alias("IA__g_string_prepend_unichar"), visibility("default")));
+
+#undef g_string_printf 
+extern __typeof (g_string_printf) g_string_printf __attribute((alias("IA__g_string_printf"), visibility("default")));
+
+#undef g_string_set_size 
+extern __typeof (g_string_set_size) g_string_set_size __attribute((alias("IA__g_string_set_size"), visibility("default")));
+
+#undef g_string_sized_new 
+extern __typeof (g_string_sized_new) g_string_sized_new __attribute((alias("IA__g_string_sized_new"), visibility("default")));
+
+#undef g_string_truncate 
+extern __typeof (g_string_truncate) g_string_truncate __attribute((alias("IA__g_string_truncate"), visibility("default")));
+
+#undef g_string_append_uri_escaped 
+extern __typeof (g_string_append_uri_escaped) g_string_append_uri_escaped __attribute((alias("IA__g_string_append_uri_escaped"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_string_down 
+extern __typeof (g_string_down) g_string_down __attribute((alias("IA__g_string_down"), visibility("default")));
+
+#undef g_string_up 
+extern __typeof (g_string_up) g_string_up __attribute((alias("IA__g_string_up"), visibility("default")));
+
+#endif
+#undef g_string_vprintf 
+extern __typeof (g_string_vprintf) g_string_vprintf __attribute((alias("IA__g_string_vprintf"), visibility("default")));
+
+#undef g_str_equal 
+extern __typeof (g_str_equal) g_str_equal __attribute((alias("IA__g_str_equal"), visibility("default")));
+
+#undef g_str_hash 
+extern __typeof (g_str_hash) g_str_hash __attribute((alias("IA__g_str_hash"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_THREAD_H__)
+#if IN_FILE(__G_THREAD_C__)
+#undef g_once_impl 
+extern __typeof (g_once_impl) g_once_impl __attribute((alias("IA__g_once_impl"), visibility("default")));
+
+#undef g_once_init_enter_impl 
+extern __typeof (g_once_init_enter_impl) g_once_init_enter_impl __attribute((alias("IA__g_once_init_enter_impl"), visibility("default")));
+
+#undef g_once_init_leave 
+extern __typeof (g_once_init_leave) g_once_init_leave __attribute((alias("IA__g_once_init_leave"), visibility("default")));
+
+#undef g_thread_create_full 
+extern __typeof (g_thread_create_full) g_thread_create_full __attribute((alias("IA__g_thread_create_full"), visibility("default")));
+
+#undef g_thread_error_quark 
+extern __typeof (g_thread_error_quark) g_thread_error_quark __attribute((alias("IA__g_thread_error_quark"), visibility("default")));
+
+#undef g_thread_exit 
+extern __typeof (g_thread_exit) g_thread_exit __attribute((alias("IA__g_thread_exit"), visibility("default")));
+
+#undef g_thread_join 
+extern __typeof (g_thread_join) g_thread_join __attribute((alias("IA__g_thread_join"), visibility("default")));
+
+#undef g_thread_self 
+extern __typeof (g_thread_self) g_thread_self __attribute((alias("IA__g_thread_self"), visibility("default")));
+
+#undef g_thread_set_priority 
+extern __typeof (g_thread_set_priority) g_thread_set_priority __attribute((alias("IA__g_thread_set_priority"), visibility("default")));
+
+#undef g_static_mutex_free 
+extern __typeof (g_static_mutex_free) g_static_mutex_free __attribute((alias("IA__g_static_mutex_free"), visibility("default")));
+
+#undef g_static_mutex_get_mutex_impl 
+extern __typeof (g_static_mutex_get_mutex_impl) g_static_mutex_get_mutex_impl __attribute((alias("IA__g_static_mutex_get_mutex_impl"), visibility("default")));
+
+#undef g_static_mutex_init 
+extern __typeof (g_static_mutex_init) g_static_mutex_init __attribute((alias("IA__g_static_mutex_init"), visibility("default")));
+
+#undef g_static_private_free 
+extern __typeof (g_static_private_free) g_static_private_free __attribute((alias("IA__g_static_private_free"), visibility("default")));
+
+#undef g_static_private_get 
+extern __typeof (g_static_private_get) g_static_private_get __attribute((alias("IA__g_static_private_get"), visibility("default")));
+
+#undef g_static_private_init 
+extern __typeof (g_static_private_init) g_static_private_init __attribute((alias("IA__g_static_private_init"), visibility("default")));
+
+#undef g_static_private_set 
+extern __typeof (g_static_private_set) g_static_private_set __attribute((alias("IA__g_static_private_set"), visibility("default")));
+
+#undef g_static_rec_mutex_free 
+extern __typeof (g_static_rec_mutex_free) g_static_rec_mutex_free __attribute((alias("IA__g_static_rec_mutex_free"), visibility("default")));
+
+#undef g_static_rec_mutex_init 
+extern __typeof (g_static_rec_mutex_init) g_static_rec_mutex_init __attribute((alias("IA__g_static_rec_mutex_init"), visibility("default")));
+
+#undef g_static_rec_mutex_lock 
+extern __typeof (g_static_rec_mutex_lock) g_static_rec_mutex_lock __attribute((alias("IA__g_static_rec_mutex_lock"), visibility("default")));
+
+#undef g_static_rec_mutex_lock_full 
+extern __typeof (g_static_rec_mutex_lock_full) g_static_rec_mutex_lock_full __attribute((alias("IA__g_static_rec_mutex_lock_full"), visibility("default")));
+
+#undef g_static_rec_mutex_trylock 
+extern __typeof (g_static_rec_mutex_trylock) g_static_rec_mutex_trylock __attribute((alias("IA__g_static_rec_mutex_trylock"), visibility("default")));
+
+#undef g_static_rec_mutex_unlock 
+extern __typeof (g_static_rec_mutex_unlock) g_static_rec_mutex_unlock __attribute((alias("IA__g_static_rec_mutex_unlock"), visibility("default")));
+
+#undef g_static_rec_mutex_unlock_full 
+extern __typeof (g_static_rec_mutex_unlock_full) g_static_rec_mutex_unlock_full __attribute((alias("IA__g_static_rec_mutex_unlock_full"), visibility("default")));
+
+#undef g_static_rw_lock_free 
+extern __typeof (g_static_rw_lock_free) g_static_rw_lock_free __attribute((alias("IA__g_static_rw_lock_free"), visibility("default")));
+
+#undef g_static_rw_lock_init 
+extern __typeof (g_static_rw_lock_init) g_static_rw_lock_init __attribute((alias("IA__g_static_rw_lock_init"), visibility("default")));
+
+#undef g_static_rw_lock_reader_lock 
+extern __typeof (g_static_rw_lock_reader_lock) g_static_rw_lock_reader_lock __attribute((alias("IA__g_static_rw_lock_reader_lock"), visibility("default")));
+
+#undef g_static_rw_lock_reader_trylock 
+extern __typeof (g_static_rw_lock_reader_trylock) g_static_rw_lock_reader_trylock __attribute((alias("IA__g_static_rw_lock_reader_trylock"), visibility("default")));
+
+#undef g_static_rw_lock_reader_unlock 
+extern __typeof (g_static_rw_lock_reader_unlock) g_static_rw_lock_reader_unlock __attribute((alias("IA__g_static_rw_lock_reader_unlock"), visibility("default")));
+
+#undef g_static_rw_lock_writer_lock 
+extern __typeof (g_static_rw_lock_writer_lock) g_static_rw_lock_writer_lock __attribute((alias("IA__g_static_rw_lock_writer_lock"), visibility("default")));
+
+#undef g_static_rw_lock_writer_trylock 
+extern __typeof (g_static_rw_lock_writer_trylock) g_static_rw_lock_writer_trylock __attribute((alias("IA__g_static_rw_lock_writer_trylock"), visibility("default")));
+
+#undef g_static_rw_lock_writer_unlock 
+extern __typeof (g_static_rw_lock_writer_unlock) g_static_rw_lock_writer_unlock __attribute((alias("IA__g_static_rw_lock_writer_unlock"), visibility("default")));
+
+#undef g_thread_foreach 
+extern __typeof (g_thread_foreach) g_thread_foreach __attribute((alias("IA__g_thread_foreach"), visibility("default")));
+
+#undef g_thread_get_initialized 
+extern __typeof (g_thread_get_initialized) g_thread_get_initialized __attribute((alias("IA__g_thread_get_initialized"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_THREADPOOL_H__)
+#if IN_FILE(__G_THREADPOOL_C__)
+#undef g_thread_pool_free 
+extern __typeof (g_thread_pool_free) g_thread_pool_free __attribute((alias("IA__g_thread_pool_free"), visibility("default")));
+
+#undef g_thread_pool_get_max_threads 
+extern __typeof (g_thread_pool_get_max_threads) g_thread_pool_get_max_threads __attribute((alias("IA__g_thread_pool_get_max_threads"), visibility("default")));
+
+#undef g_thread_pool_get_max_unused_threads 
+extern __typeof (g_thread_pool_get_max_unused_threads) g_thread_pool_get_max_unused_threads __attribute((alias("IA__g_thread_pool_get_max_unused_threads"), visibility("default")));
+
+#undef g_thread_pool_get_max_idle_time 
+extern __typeof (g_thread_pool_get_max_idle_time) g_thread_pool_get_max_idle_time __attribute((alias("IA__g_thread_pool_get_max_idle_time"), visibility("default")));
+
+#undef g_thread_pool_get_num_threads 
+extern __typeof (g_thread_pool_get_num_threads) g_thread_pool_get_num_threads __attribute((alias("IA__g_thread_pool_get_num_threads"), visibility("default")));
+
+#undef g_thread_pool_get_num_unused_threads 
+extern __typeof (g_thread_pool_get_num_unused_threads) g_thread_pool_get_num_unused_threads __attribute((alias("IA__g_thread_pool_get_num_unused_threads"), visibility("default")));
+
+#undef g_thread_pool_new 
+extern __typeof (g_thread_pool_new) g_thread_pool_new __attribute((alias("IA__g_thread_pool_new"), visibility("default")));
+
+#undef g_thread_pool_push 
+extern __typeof (g_thread_pool_push) g_thread_pool_push __attribute((alias("IA__g_thread_pool_push"), visibility("default")));
+
+#undef g_thread_pool_set_max_threads 
+extern __typeof (g_thread_pool_set_max_threads) g_thread_pool_set_max_threads __attribute((alias("IA__g_thread_pool_set_max_threads"), visibility("default")));
+
+#undef g_thread_pool_set_max_unused_threads 
+extern __typeof (g_thread_pool_set_max_unused_threads) g_thread_pool_set_max_unused_threads __attribute((alias("IA__g_thread_pool_set_max_unused_threads"), visibility("default")));
+
+#undef g_thread_pool_set_max_idle_time 
+extern __typeof (g_thread_pool_set_max_idle_time) g_thread_pool_set_max_idle_time __attribute((alias("IA__g_thread_pool_set_max_idle_time"), visibility("default")));
+
+#undef g_thread_pool_stop_unused_threads 
+extern __typeof (g_thread_pool_stop_unused_threads) g_thread_pool_stop_unused_threads __attribute((alias("IA__g_thread_pool_stop_unused_threads"), visibility("default")));
+
+#undef g_thread_pool_unprocessed 
+extern __typeof (g_thread_pool_unprocessed) g_thread_pool_unprocessed __attribute((alias("IA__g_thread_pool_unprocessed"), visibility("default")));
+
+#undef g_thread_pool_set_sort_function 
+extern __typeof (g_thread_pool_set_sort_function) g_thread_pool_set_sort_function __attribute((alias("IA__g_thread_pool_set_sort_function"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_TEST_UTILS_H__)
+#if IN_FILE(__G_TEST_UTILS_C__)
+#undef g_assertion_message 
+extern __typeof (g_assertion_message) g_assertion_message __attribute((alias("IA__g_assertion_message"), visibility("default")));
+
+#undef g_assertion_message_cmpnum 
+extern __typeof (g_assertion_message_cmpnum) g_assertion_message_cmpnum __attribute((alias("IA__g_assertion_message_cmpnum"), visibility("default")));
+
+#undef g_assertion_message_cmpstr 
+extern __typeof (g_assertion_message_cmpstr) g_assertion_message_cmpstr __attribute((alias("IA__g_assertion_message_cmpstr"), visibility("default")));
+
+#undef g_assertion_message_expr 
+extern __typeof (g_assertion_message_expr) g_assertion_message_expr __attribute((alias("IA__g_assertion_message_expr"), visibility("default")));
+
+#undef g_assertion_message_error 
+extern __typeof (g_assertion_message_error) g_assertion_message_error __attribute((alias("IA__g_assertion_message_error"), visibility("default")));
+
+#undef g_strcmp0 
+extern __typeof (g_strcmp0) g_strcmp0 __attribute((alias("IA__g_strcmp0"), visibility("default")));
+
+#undef g_test_add_data_func 
+extern __typeof (g_test_add_data_func) g_test_add_data_func __attribute((alias("IA__g_test_add_data_func"), visibility("default")));
+
+#undef g_test_add_func 
+extern __typeof (g_test_add_func) g_test_add_func __attribute((alias("IA__g_test_add_func"), visibility("default")));
+
+#undef g_test_add_vtable 
+extern __typeof (g_test_add_vtable) g_test_add_vtable __attribute((alias("IA__g_test_add_vtable"), visibility("default")));
+
+#undef g_test_bug 
+extern __typeof (g_test_bug) g_test_bug __attribute((alias("IA__g_test_bug"), visibility("default")));
+
+#undef g_test_bug_base 
+extern __typeof (g_test_bug_base) g_test_bug_base __attribute((alias("IA__g_test_bug_base"), visibility("default")));
+
+#undef g_test_create_case 
+extern __typeof (g_test_create_case) g_test_create_case __attribute((alias("IA__g_test_create_case"), visibility("default")));
+
+#undef g_test_create_suite 
+extern __typeof (g_test_create_suite) g_test_create_suite __attribute((alias("IA__g_test_create_suite"), visibility("default")));
+
+#undef g_test_get_root 
+extern __typeof (g_test_get_root) g_test_get_root __attribute((alias("IA__g_test_get_root"), visibility("default")));
+
+#undef g_test_init 
+extern __typeof (g_test_init) g_test_init __attribute((alias("IA__g_test_init"), visibility("default")));
+
+#undef g_test_log_buffer_free 
+extern __typeof (g_test_log_buffer_free) g_test_log_buffer_free __attribute((alias("IA__g_test_log_buffer_free"), visibility("default")));
+
+#undef g_test_log_buffer_new 
+extern __typeof (g_test_log_buffer_new) g_test_log_buffer_new __attribute((alias("IA__g_test_log_buffer_new"), visibility("default")));
+
+#undef g_test_log_buffer_pop 
+extern __typeof (g_test_log_buffer_pop) g_test_log_buffer_pop __attribute((alias("IA__g_test_log_buffer_pop"), visibility("default")));
+
+#undef g_test_log_buffer_push 
+extern __typeof (g_test_log_buffer_push) g_test_log_buffer_push __attribute((alias("IA__g_test_log_buffer_push"), visibility("default")));
+
+#undef g_test_log_msg_free 
+extern __typeof (g_test_log_msg_free) g_test_log_msg_free __attribute((alias("IA__g_test_log_msg_free"), visibility("default")));
+
+#undef g_test_log_type_name 
+extern __typeof (g_test_log_type_name) g_test_log_type_name __attribute((alias("IA__g_test_log_type_name"), visibility("default")));
+
+#undef g_test_maximized_result 
+extern __typeof (g_test_maximized_result) g_test_maximized_result __attribute((alias("IA__g_test_maximized_result"), visibility("default")));
+
+#undef g_test_message 
+extern __typeof (g_test_message) g_test_message __attribute((alias("IA__g_test_message"), visibility("default")));
+
+#undef g_test_minimized_result 
+extern __typeof (g_test_minimized_result) g_test_minimized_result __attribute((alias("IA__g_test_minimized_result"), visibility("default")));
+
+#undef g_test_queue_destroy 
+extern __typeof (g_test_queue_destroy) g_test_queue_destroy __attribute((alias("IA__g_test_queue_destroy"), visibility("default")));
+
+#undef g_test_queue_free 
+extern __typeof (g_test_queue_free) g_test_queue_free __attribute((alias("IA__g_test_queue_free"), visibility("default")));
+
+#undef g_test_rand_double 
+extern __typeof (g_test_rand_double) g_test_rand_double __attribute((alias("IA__g_test_rand_double"), visibility("default")));
+
+#undef g_test_rand_double_range 
+extern __typeof (g_test_rand_double_range) g_test_rand_double_range __attribute((alias("IA__g_test_rand_double_range"), visibility("default")));
+
+#undef g_test_rand_int 
+extern __typeof (g_test_rand_int) g_test_rand_int __attribute((alias("IA__g_test_rand_int"), visibility("default")));
+
+#undef g_test_rand_int_range 
+extern __typeof (g_test_rand_int_range) g_test_rand_int_range __attribute((alias("IA__g_test_rand_int_range"), visibility("default")));
+
+#undef g_test_run 
+extern __typeof (g_test_run) g_test_run __attribute((alias("IA__g_test_run"), visibility("default")));
+
+#undef g_test_run_suite 
+extern __typeof (g_test_run_suite) g_test_run_suite __attribute((alias("IA__g_test_run_suite"), visibility("default")));
+
+#undef g_test_suite_add 
+extern __typeof (g_test_suite_add) g_test_suite_add __attribute((alias("IA__g_test_suite_add"), visibility("default")));
+
+#undef g_test_suite_add_suite 
+extern __typeof (g_test_suite_add_suite) g_test_suite_add_suite __attribute((alias("IA__g_test_suite_add_suite"), visibility("default")));
+
+#undef g_test_timer_elapsed 
+extern __typeof (g_test_timer_elapsed) g_test_timer_elapsed __attribute((alias("IA__g_test_timer_elapsed"), visibility("default")));
+
+#undef g_test_timer_last 
+extern __typeof (g_test_timer_last) g_test_timer_last __attribute((alias("IA__g_test_timer_last"), visibility("default")));
+
+#undef g_test_timer_start 
+extern __typeof (g_test_timer_start) g_test_timer_start __attribute((alias("IA__g_test_timer_start"), visibility("default")));
+
+#undef g_test_trap_assertions 
+extern __typeof (g_test_trap_assertions) g_test_trap_assertions __attribute((alias("IA__g_test_trap_assertions"), visibility("default")));
+
+#undef g_test_trap_fork 
+extern __typeof (g_test_trap_fork) g_test_trap_fork __attribute((alias("IA__g_test_trap_fork"), visibility("default")));
+
+#undef g_test_trap_has_passed 
+extern __typeof (g_test_trap_has_passed) g_test_trap_has_passed __attribute((alias("IA__g_test_trap_has_passed"), visibility("default")));
+
+#undef g_test_trap_reached_timeout 
+extern __typeof (g_test_trap_reached_timeout) g_test_trap_reached_timeout __attribute((alias("IA__g_test_trap_reached_timeout"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_TIMER_H__)
+#if IN_FILE(__G_TIMER_C__)
+#undef g_timer_continue 
+extern __typeof (g_timer_continue) g_timer_continue __attribute((alias("IA__g_timer_continue"), visibility("default")));
+
+#undef g_timer_destroy 
+extern __typeof (g_timer_destroy) g_timer_destroy __attribute((alias("IA__g_timer_destroy"), visibility("default")));
+
+#undef g_timer_elapsed 
+extern __typeof (g_timer_elapsed) g_timer_elapsed __attribute((alias("IA__g_timer_elapsed"), visibility("default")));
+
+#undef g_timer_new 
+extern __typeof (g_timer_new) g_timer_new __attribute((alias("IA__g_timer_new"), visibility("default")));
+
+#undef g_timer_reset 
+extern __typeof (g_timer_reset) g_timer_reset __attribute((alias("IA__g_timer_reset"), visibility("default")));
+
+#undef g_timer_start 
+extern __typeof (g_timer_start) g_timer_start __attribute((alias("IA__g_timer_start"), visibility("default")));
+
+#undef g_timer_stop 
+extern __typeof (g_timer_stop) g_timer_stop __attribute((alias("IA__g_timer_stop"), visibility("default")));
+
+#undef g_time_val_add 
+extern __typeof (g_time_val_add) g_time_val_add __attribute((alias("IA__g_time_val_add"), visibility("default")));
+
+#undef g_time_val_from_iso8601 
+extern __typeof (g_time_val_from_iso8601) g_time_val_from_iso8601 __attribute((alias("IA__g_time_val_from_iso8601"), visibility("default")));
+
+#undef g_time_val_to_iso8601 
+extern __typeof (g_time_val_to_iso8601) g_time_val_to_iso8601 __attribute((alias("IA__g_time_val_to_iso8601"), visibility("default")));
+
+#undef g_usleep 
+extern __typeof (g_usleep) g_usleep __attribute((alias("IA__g_usleep"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_TREE_H__)
+#if IN_FILE(__G_TREE_C__)
+#undef g_tree_destroy 
+extern __typeof (g_tree_destroy) g_tree_destroy __attribute((alias("IA__g_tree_destroy"), visibility("default")));
+
+#undef g_tree_foreach 
+extern __typeof (g_tree_foreach) g_tree_foreach __attribute((alias("IA__g_tree_foreach"), visibility("default")));
+
+#undef g_tree_height 
+extern __typeof (g_tree_height) g_tree_height __attribute((alias("IA__g_tree_height"), visibility("default")));
+
+#undef g_tree_insert 
+extern __typeof (g_tree_insert) g_tree_insert __attribute((alias("IA__g_tree_insert"), visibility("default")));
+
+#undef g_tree_lookup 
+extern __typeof (g_tree_lookup) g_tree_lookup __attribute((alias("IA__g_tree_lookup"), visibility("default")));
+
+#undef g_tree_lookup_extended 
+extern __typeof (g_tree_lookup_extended) g_tree_lookup_extended __attribute((alias("IA__g_tree_lookup_extended"), visibility("default")));
+
+#undef g_tree_new 
+extern __typeof (g_tree_new) g_tree_new __attribute((alias("IA__g_tree_new"), visibility("default")));
+
+#undef g_tree_new_full 
+extern __typeof (g_tree_new_full) g_tree_new_full __attribute((alias("IA__g_tree_new_full"), visibility("default")));
+
+#undef g_tree_new_with_data 
+extern __typeof (g_tree_new_with_data) g_tree_new_with_data __attribute((alias("IA__g_tree_new_with_data"), visibility("default")));
+
+#undef g_tree_nnodes 
+extern __typeof (g_tree_nnodes) g_tree_nnodes __attribute((alias("IA__g_tree_nnodes"), visibility("default")));
+
+#undef g_tree_remove 
+extern __typeof (g_tree_remove) g_tree_remove __attribute((alias("IA__g_tree_remove"), visibility("default")));
+
+#undef g_tree_replace 
+extern __typeof (g_tree_replace) g_tree_replace __attribute((alias("IA__g_tree_replace"), visibility("default")));
+
+#undef g_tree_search 
+extern __typeof (g_tree_search) g_tree_search __attribute((alias("IA__g_tree_search"), visibility("default")));
+
+#undef g_tree_steal 
+extern __typeof (g_tree_steal) g_tree_steal __attribute((alias("IA__g_tree_steal"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_tree_traverse 
+extern __typeof (g_tree_traverse) g_tree_traverse __attribute((alias("IA__g_tree_traverse"), visibility("default")));
+
+#endif
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIBREAK_C__)
+#undef g_unichar_break_type 
+extern __typeof (g_unichar_break_type) g_unichar_break_type __attribute((alias("IA__g_unichar_break_type"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNICOLLATE_C__)
+#undef g_utf8_collate 
+extern __typeof (g_utf8_collate) g_utf8_collate __attribute((alias("IA__g_utf8_collate"), visibility("default")));
+
+#undef g_utf8_collate_key 
+extern __typeof (g_utf8_collate_key) g_utf8_collate_key __attribute((alias("IA__g_utf8_collate_key"), visibility("default")));
+
+#undef g_utf8_collate_key_for_filename 
+extern __typeof (g_utf8_collate_key_for_filename) g_utf8_collate_key_for_filename __attribute((alias("IA__g_utf8_collate_key_for_filename"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIDECOMP_C__)
+#undef g_unicode_canonical_decomposition 
+extern __typeof (g_unicode_canonical_decomposition) g_unicode_canonical_decomposition __attribute((alias("IA__g_unicode_canonical_decomposition"), visibility("default")));
+
+#undef g_unicode_canonical_ordering 
+extern __typeof (g_unicode_canonical_ordering) g_unicode_canonical_ordering __attribute((alias("IA__g_unicode_canonical_ordering"), visibility("default")));
+
+#undef g_unichar_combining_class 
+extern __typeof (g_unichar_combining_class) g_unichar_combining_class __attribute((alias("IA__g_unichar_combining_class"), visibility("default")));
+
+#undef g_utf8_normalize 
+extern __typeof (g_utf8_normalize) g_utf8_normalize __attribute((alias("IA__g_utf8_normalize"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UNIPROP_C__)
+#undef g_unichar_isalnum 
+extern __typeof (g_unichar_isalnum) g_unichar_isalnum __attribute((alias("IA__g_unichar_isalnum"), visibility("default")));
+
+#undef g_unichar_isalpha 
+extern __typeof (g_unichar_isalpha) g_unichar_isalpha __attribute((alias("IA__g_unichar_isalpha"), visibility("default")));
+
+#undef g_unichar_iscntrl 
+extern __typeof (g_unichar_iscntrl) g_unichar_iscntrl __attribute((alias("IA__g_unichar_iscntrl"), visibility("default")));
+
+#undef g_unichar_isdefined 
+extern __typeof (g_unichar_isdefined) g_unichar_isdefined __attribute((alias("IA__g_unichar_isdefined"), visibility("default")));
+
+#undef g_unichar_isdigit 
+extern __typeof (g_unichar_isdigit) g_unichar_isdigit __attribute((alias("IA__g_unichar_isdigit"), visibility("default")));
+
+#undef g_unichar_isgraph 
+extern __typeof (g_unichar_isgraph) g_unichar_isgraph __attribute((alias("IA__g_unichar_isgraph"), visibility("default")));
+
+#undef g_unichar_islower 
+extern __typeof (g_unichar_islower) g_unichar_islower __attribute((alias("IA__g_unichar_islower"), visibility("default")));
+
+#undef g_unichar_isprint 
+extern __typeof (g_unichar_isprint) g_unichar_isprint __attribute((alias("IA__g_unichar_isprint"), visibility("default")));
+
+#undef g_unichar_ispunct 
+extern __typeof (g_unichar_ispunct) g_unichar_ispunct __attribute((alias("IA__g_unichar_ispunct"), visibility("default")));
+
+#undef g_unichar_isspace 
+extern __typeof (g_unichar_isspace) g_unichar_isspace __attribute((alias("IA__g_unichar_isspace"), visibility("default")));
+
+#undef g_unichar_istitle 
+extern __typeof (g_unichar_istitle) g_unichar_istitle __attribute((alias("IA__g_unichar_istitle"), visibility("default")));
+
+#undef g_unichar_isupper 
+extern __typeof (g_unichar_isupper) g_unichar_isupper __attribute((alias("IA__g_unichar_isupper"), visibility("default")));
+
+#undef g_unichar_iswide 
+extern __typeof (g_unichar_iswide) g_unichar_iswide __attribute((alias("IA__g_unichar_iswide"), visibility("default")));
+
+#undef g_unichar_iswide_cjk 
+extern __typeof (g_unichar_iswide_cjk) g_unichar_iswide_cjk __attribute((alias("IA__g_unichar_iswide_cjk"), visibility("default")));
+
+#undef g_unichar_isxdigit 
+extern __typeof (g_unichar_isxdigit) g_unichar_isxdigit __attribute((alias("IA__g_unichar_isxdigit"), visibility("default")));
+
+#undef g_unichar_iszerowidth 
+extern __typeof (g_unichar_iszerowidth) g_unichar_iszerowidth __attribute((alias("IA__g_unichar_iszerowidth"), visibility("default")));
+
+#undef g_unichar_tolower 
+extern __typeof (g_unichar_tolower) g_unichar_tolower __attribute((alias("IA__g_unichar_tolower"), visibility("default")));
+
+#undef g_unichar_totitle 
+extern __typeof (g_unichar_totitle) g_unichar_totitle __attribute((alias("IA__g_unichar_totitle"), visibility("default")));
+
+#undef g_unichar_toupper 
+extern __typeof (g_unichar_toupper) g_unichar_toupper __attribute((alias("IA__g_unichar_toupper"), visibility("default")));
+
+#undef g_unichar_ismark 
+extern __typeof (g_unichar_ismark) g_unichar_ismark __attribute((alias("IA__g_unichar_ismark"), visibility("default")));
+
+#undef g_unichar_get_mirror_char 
+extern __typeof (g_unichar_get_mirror_char) g_unichar_get_mirror_char __attribute((alias("IA__g_unichar_get_mirror_char"), visibility("default")));
+
+#undef g_unichar_get_script 
+extern __typeof (g_unichar_get_script) g_unichar_get_script __attribute((alias("IA__g_unichar_get_script"), visibility("default")));
+
+#undef g_unichar_digit_value 
+extern __typeof (g_unichar_digit_value) g_unichar_digit_value __attribute((alias("IA__g_unichar_digit_value"), visibility("default")));
+
+#undef g_unichar_xdigit_value 
+extern __typeof (g_unichar_xdigit_value) g_unichar_xdigit_value __attribute((alias("IA__g_unichar_xdigit_value"), visibility("default")));
+
+#undef g_unichar_type 
+extern __typeof (g_unichar_type) g_unichar_type __attribute((alias("IA__g_unichar_type"), visibility("default")));
+
+#undef g_utf8_casefold 
+extern __typeof (g_utf8_casefold) g_utf8_casefold __attribute((alias("IA__g_utf8_casefold"), visibility("default")));
+
+#undef g_utf8_strup 
+extern __typeof (g_utf8_strup) g_utf8_strup __attribute((alias("IA__g_utf8_strup"), visibility("default")));
+
+#undef g_utf8_strdown 
+extern __typeof (g_utf8_strdown) g_utf8_strdown __attribute((alias("IA__g_utf8_strdown"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UNICODE_H__)
+#if IN_FILE(__G_UTF8_C__)
+#undef g_get_charset 
+extern __typeof (g_get_charset) g_get_charset __attribute((alias("IA__g_get_charset"), visibility("default")));
+
+#undef g_ucs4_to_utf16 
+extern __typeof (g_ucs4_to_utf16) g_ucs4_to_utf16 __attribute((alias("IA__g_ucs4_to_utf16"), visibility("default")));
+
+#undef g_ucs4_to_utf8 
+extern __typeof (g_ucs4_to_utf8) g_ucs4_to_utf8 __attribute((alias("IA__g_ucs4_to_utf8"), visibility("default")));
+
+#undef g_utf16_to_ucs4 
+extern __typeof (g_utf16_to_ucs4) g_utf16_to_ucs4 __attribute((alias("IA__g_utf16_to_ucs4"), visibility("default")));
+
+#undef g_utf16_to_utf8 
+extern __typeof (g_utf16_to_utf8) g_utf16_to_utf8 __attribute((alias("IA__g_utf16_to_utf8"), visibility("default")));
+
+#undef g_utf8_find_next_char 
+extern __typeof (g_utf8_find_next_char) g_utf8_find_next_char __attribute((alias("IA__g_utf8_find_next_char"), visibility("default")));
+
+#undef g_utf8_find_prev_char 
+extern __typeof (g_utf8_find_prev_char) g_utf8_find_prev_char __attribute((alias("IA__g_utf8_find_prev_char"), visibility("default")));
+
+#undef g_utf8_get_char 
+extern __typeof (g_utf8_get_char) g_utf8_get_char __attribute((alias("IA__g_utf8_get_char"), visibility("default")));
+
+#undef g_utf8_get_char_validated 
+extern __typeof (g_utf8_get_char_validated) g_utf8_get_char_validated __attribute((alias("IA__g_utf8_get_char_validated"), visibility("default")));
+
+#undef g_utf8_offset_to_pointer 
+extern __typeof (g_utf8_offset_to_pointer) g_utf8_offset_to_pointer __attribute((alias("IA__g_utf8_offset_to_pointer"), visibility("default")));
+
+#undef g_utf8_pointer_to_offset 
+extern __typeof (g_utf8_pointer_to_offset) g_utf8_pointer_to_offset __attribute((alias("IA__g_utf8_pointer_to_offset"), visibility("default")));
+
+#undef g_utf8_prev_char 
+extern __typeof (g_utf8_prev_char) g_utf8_prev_char __attribute((alias("IA__g_utf8_prev_char"), visibility("default")));
+
+#undef g_utf8_strchr 
+extern __typeof (g_utf8_strchr) g_utf8_strchr __attribute((alias("IA__g_utf8_strchr"), visibility("default")));
+
+#undef g_utf8_strlen 
+extern __typeof (g_utf8_strlen) g_utf8_strlen __attribute((alias("IA__g_utf8_strlen"), visibility("default")));
+
+#undef g_utf8_strncpy 
+extern __typeof (g_utf8_strncpy) g_utf8_strncpy __attribute((alias("IA__g_utf8_strncpy"), visibility("default")));
+
+#undef g_utf8_strrchr 
+extern __typeof (g_utf8_strrchr) g_utf8_strrchr __attribute((alias("IA__g_utf8_strrchr"), visibility("default")));
+
+#undef g_utf8_strreverse 
+extern __typeof (g_utf8_strreverse) g_utf8_strreverse __attribute((alias("IA__g_utf8_strreverse"), visibility("default")));
+
+#undef g_utf8_to_ucs4 
+extern __typeof (g_utf8_to_ucs4) g_utf8_to_ucs4 __attribute((alias("IA__g_utf8_to_ucs4"), visibility("default")));
+
+#undef g_utf8_to_ucs4_fast 
+extern __typeof (g_utf8_to_ucs4_fast) g_utf8_to_ucs4_fast __attribute((alias("IA__g_utf8_to_ucs4_fast"), visibility("default")));
+
+#undef g_utf8_to_utf16 
+extern __typeof (g_utf8_to_utf16) g_utf8_to_utf16 __attribute((alias("IA__g_utf8_to_utf16"), visibility("default")));
+
+#undef g_utf8_validate 
+extern __typeof (g_utf8_validate) g_utf8_validate __attribute((alias("IA__g_utf8_validate"), visibility("default")));
+
+#undef g_unichar_to_utf8 
+extern __typeof (g_unichar_to_utf8) g_unichar_to_utf8 __attribute((alias("IA__g_unichar_to_utf8"), visibility("default")));
+
+#undef g_unichar_validate 
+extern __typeof (g_unichar_validate) g_unichar_validate __attribute((alias("IA__g_unichar_validate"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__GLIBINTL_H__)
+#if IN_FILE(__G_UTILS_C__)
+#undef glib_gettext 
+extern __typeof (glib_gettext) glib_gettext __attribute((alias("IA__glib_gettext"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_HASH_H__)
+#if IN_FILE(__G_UTILS_C__)
+#undef g_int_equal 
+extern __typeof (g_int_equal) g_int_equal __attribute((alias("IA__g_int_equal"), visibility("default")));
+
+#undef g_int_hash 
+extern __typeof (g_int_hash) g_int_hash __attribute((alias("IA__g_int_hash"), visibility("default")));
+
+#undef g_direct_equal 
+extern __typeof (g_direct_equal) g_direct_equal __attribute((alias("IA__g_direct_equal"), visibility("default")));
+
+#undef g_direct_hash 
+extern __typeof (g_direct_hash) g_direct_hash __attribute((alias("IA__g_direct_hash"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_UTILS_H__)
+#if IN_FILE(__G_UTILS_C__)
+#undef g_atexit 
+extern __typeof (g_atexit) g_atexit __attribute((alias("IA__g_atexit"), visibility("default")));
+
+#ifndef G_DISABLE_DEPRECATED
+#undef g_basename 
+extern __typeof (g_basename) g_basename __attribute((alias("IA__g_basename"), visibility("default")));
+
+#endif
+#undef g_get_application_name 
+extern __typeof (g_get_application_name) g_get_application_name __attribute((alias("IA__g_get_application_name"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_find_program_in_path 
+extern __typeof (g_find_program_in_path) g_find_program_in_path __attribute((alias("IA__g_find_program_in_path"), visibility("default")));
+
+#undef g_get_current_dir 
+extern __typeof (g_get_current_dir) g_get_current_dir __attribute((alias("IA__g_get_current_dir"), visibility("default")));
+
+#undef g_getenv 
+extern __typeof (g_getenv) g_getenv __attribute((alias("IA__g_getenv"), visibility("default")));
+
+#undef g_unsetenv 
+extern __typeof (g_unsetenv) g_unsetenv __attribute((alias("IA__g_unsetenv"), visibility("default")));
+
+#undef g_get_home_dir 
+extern __typeof (g_get_home_dir) g_get_home_dir __attribute((alias("IA__g_get_home_dir"), visibility("default")));
+
+#endif
+#undef g_get_host_name 
+extern __typeof (g_get_host_name) g_get_host_name __attribute((alias("IA__g_get_host_name"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_setenv 
+extern __typeof (g_setenv) g_setenv __attribute((alias("IA__g_setenv"), visibility("default")));
+
+#endif
+#undef g_listenv 
+extern __typeof (g_listenv) g_listenv __attribute((alias("IA__g_listenv"), visibility("default")));
+
+#ifdef G_OS_WIN32
+#undef g_find_program_in_path_utf8 
+extern __typeof (g_find_program_in_path_utf8) g_find_program_in_path_utf8 __attribute((alias("IA__g_find_program_in_path_utf8"), visibility("default")));
+
+#undef g_get_current_dir_utf8 
+extern __typeof (g_get_current_dir_utf8) g_get_current_dir_utf8 __attribute((alias("IA__g_get_current_dir_utf8"), visibility("default")));
+
+#undef g_getenv_utf8 
+extern __typeof (g_getenv_utf8) g_getenv_utf8 __attribute((alias("IA__g_getenv_utf8"), visibility("default")));
+
+#undef g_unsetenv_utf8 
+extern __typeof (g_unsetenv_utf8) g_unsetenv_utf8 __attribute((alias("IA__g_unsetenv_utf8"), visibility("default")));
+
+#undef g_setenv_utf8 
+extern __typeof (g_setenv_utf8) g_setenv_utf8 __attribute((alias("IA__g_setenv_utf8"), visibility("default")));
+
+#undef g_get_home_dir_utf8 
+extern __typeof (g_get_home_dir_utf8) g_get_home_dir_utf8 __attribute((alias("IA__g_get_home_dir_utf8"), visibility("default")));
+
+#endif
+#undef g_get_language_names 
+extern __typeof (g_get_language_names) g_get_language_names __attribute((alias("IA__g_get_language_names"), visibility("default")));
+
+#undef g_get_prgname 
+extern __typeof (g_get_prgname) g_get_prgname __attribute((alias("IA__g_get_prgname"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_get_real_name 
+extern __typeof (g_get_real_name) g_get_real_name __attribute((alias("IA__g_get_real_name"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_get_real_name_utf8 
+extern __typeof (g_get_real_name_utf8) g_get_real_name_utf8 __attribute((alias("IA__g_get_real_name_utf8"), visibility("default")));
+
+#endif
+#undef g_get_system_config_dirs 
+extern __typeof (g_get_system_config_dirs) g_get_system_config_dirs __attribute((alias("IA__g_get_system_config_dirs"), visibility("default")));
+
+#undef g_get_system_data_dirs 
+extern __typeof (g_get_system_data_dirs) g_get_system_data_dirs __attribute((alias("IA__g_get_system_data_dirs"), visibility("default")));
+
+#ifdef G_OS_WIN32
+#undef g_win32_get_system_data_dirs_for_module 
+extern __typeof (g_win32_get_system_data_dirs_for_module) g_win32_get_system_data_dirs_for_module __attribute((alias("IA__g_win32_get_system_data_dirs_for_module"), visibility("default")));
+
+#endif
+#ifndef _WIN64
+#undef g_get_tmp_dir 
+extern __typeof (g_get_tmp_dir) g_get_tmp_dir __attribute((alias("IA__g_get_tmp_dir"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_get_tmp_dir_utf8 
+extern __typeof (g_get_tmp_dir_utf8) g_get_tmp_dir_utf8 __attribute((alias("IA__g_get_tmp_dir_utf8"), visibility("default")));
+
+#endif
+#undef g_get_user_cache_dir 
+extern __typeof (g_get_user_cache_dir) g_get_user_cache_dir __attribute((alias("IA__g_get_user_cache_dir"), visibility("default")));
+
+#undef g_get_user_config_dir 
+extern __typeof (g_get_user_config_dir) g_get_user_config_dir __attribute((alias("IA__g_get_user_config_dir"), visibility("default")));
+
+#undef g_get_user_data_dir 
+extern __typeof (g_get_user_data_dir) g_get_user_data_dir __attribute((alias("IA__g_get_user_data_dir"), visibility("default")));
+
+#undef g_get_user_special_dir 
+extern __typeof (g_get_user_special_dir) g_get_user_special_dir __attribute((alias("IA__g_get_user_special_dir"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_get_user_name 
+extern __typeof (g_get_user_name) g_get_user_name __attribute((alias("IA__g_get_user_name"), visibility("default")));
+
+#endif
+#ifdef G_OS_WIN32
+#undef g_get_user_name_utf8 
+extern __typeof (g_get_user_name_utf8) g_get_user_name_utf8 __attribute((alias("IA__g_get_user_name_utf8"), visibility("default")));
+
+#endif
+#undef glib_check_version 
+extern __typeof (glib_check_version) glib_check_version __attribute((alias("IA__glib_check_version"), visibility("default")));
+
+#undef g_nullify_pointer 
+extern __typeof (g_nullify_pointer) g_nullify_pointer __attribute((alias("IA__g_nullify_pointer"), visibility("default")));
+
+#undef g_parse_debug_string 
+extern __typeof (g_parse_debug_string) g_parse_debug_string __attribute((alias("IA__g_parse_debug_string"), visibility("default")));
+
+#undef g_path_get_basename 
+extern __typeof (g_path_get_basename) g_path_get_basename __attribute((alias("IA__g_path_get_basename"), visibility("default")));
+
+#undef g_path_get_dirname 
+extern __typeof (g_path_get_dirname) g_path_get_dirname __attribute((alias("IA__g_path_get_dirname"), visibility("default")));
+
+#undef g_path_is_absolute 
+extern __typeof (g_path_is_absolute) g_path_is_absolute __attribute((alias("IA__g_path_is_absolute"), visibility("default")));
+
+#undef g_path_skip_root 
+extern __typeof (g_path_skip_root) g_path_skip_root __attribute((alias("IA__g_path_skip_root"), visibility("default")));
+
+#undef g_set_application_name 
+extern __typeof (g_set_application_name) g_set_application_name __attribute((alias("IA__g_set_application_name"), visibility("default")));
+
+#undef g_set_prgname 
+extern __typeof (g_set_prgname) g_set_prgname __attribute((alias("IA__g_set_prgname"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_REGEX_H__)
+#if IN_FILE(__G_REGEX_C__)
+#undef g_regex_error_quark 
+extern __typeof (g_regex_error_quark) g_regex_error_quark __attribute((alias("IA__g_regex_error_quark"), visibility("default")));
+
+#undef g_regex_new 
+extern __typeof (g_regex_new) g_regex_new __attribute((alias("IA__g_regex_new"), visibility("default")));
+
+#undef g_regex_ref 
+extern __typeof (g_regex_ref) g_regex_ref __attribute((alias("IA__g_regex_ref"), visibility("default")));
+
+#undef g_regex_unref 
+extern __typeof (g_regex_unref) g_regex_unref __attribute((alias("IA__g_regex_unref"), visibility("default")));
+
+#undef g_regex_get_pattern 
+extern __typeof (g_regex_get_pattern) g_regex_get_pattern __attribute((alias("IA__g_regex_get_pattern"), visibility("default")));
+
+#undef g_regex_get_max_backref 
+extern __typeof (g_regex_get_max_backref) g_regex_get_max_backref __attribute((alias("IA__g_regex_get_max_backref"), visibility("default")));
+
+#undef g_regex_get_capture_count 
+extern __typeof (g_regex_get_capture_count) g_regex_get_capture_count __attribute((alias("IA__g_regex_get_capture_count"), visibility("default")));
+
+#undef g_regex_get_string_number 
+extern __typeof (g_regex_get_string_number) g_regex_get_string_number __attribute((alias("IA__g_regex_get_string_number"), visibility("default")));
+
+#undef g_regex_escape_string 
+extern __typeof (g_regex_escape_string) g_regex_escape_string __attribute((alias("IA__g_regex_escape_string"), visibility("default")));
+
+#undef g_regex_match_simple 
+extern __typeof (g_regex_match_simple) g_regex_match_simple __attribute((alias("IA__g_regex_match_simple"), visibility("default")));
+
+#undef g_regex_match 
+extern __typeof (g_regex_match) g_regex_match __attribute((alias("IA__g_regex_match"), visibility("default")));
+
+#undef g_regex_match_full 
+extern __typeof (g_regex_match_full) g_regex_match_full __attribute((alias("IA__g_regex_match_full"), visibility("default")));
+
+#undef g_regex_match_all 
+extern __typeof (g_regex_match_all) g_regex_match_all __attribute((alias("IA__g_regex_match_all"), visibility("default")));
+
+#undef g_regex_match_all_full 
+extern __typeof (g_regex_match_all_full) g_regex_match_all_full __attribute((alias("IA__g_regex_match_all_full"), visibility("default")));
+
+#undef g_regex_split_simple 
+extern __typeof (g_regex_split_simple) g_regex_split_simple __attribute((alias("IA__g_regex_split_simple"), visibility("default")));
+
+#undef g_regex_split 
+extern __typeof (g_regex_split) g_regex_split __attribute((alias("IA__g_regex_split"), visibility("default")));
+
+#undef g_regex_split_full 
+extern __typeof (g_regex_split_full) g_regex_split_full __attribute((alias("IA__g_regex_split_full"), visibility("default")));
+
+#undef g_regex_replace 
+extern __typeof (g_regex_replace) g_regex_replace __attribute((alias("IA__g_regex_replace"), visibility("default")));
+
+#undef g_regex_replace_literal 
+extern __typeof (g_regex_replace_literal) g_regex_replace_literal __attribute((alias("IA__g_regex_replace_literal"), visibility("default")));
+
+#undef g_regex_replace_eval 
+extern __typeof (g_regex_replace_eval) g_regex_replace_eval __attribute((alias("IA__g_regex_replace_eval"), visibility("default")));
+
+#undef g_regex_check_replacement 
+extern __typeof (g_regex_check_replacement) g_regex_check_replacement __attribute((alias("IA__g_regex_check_replacement"), visibility("default")));
+
+#undef g_match_info_get_regex 
+extern __typeof (g_match_info_get_regex) g_match_info_get_regex __attribute((alias("IA__g_match_info_get_regex"), visibility("default")));
+
+#undef g_match_info_get_string 
+extern __typeof (g_match_info_get_string) g_match_info_get_string __attribute((alias("IA__g_match_info_get_string"), visibility("default")));
+
+#undef g_match_info_free 
+extern __typeof (g_match_info_free) g_match_info_free __attribute((alias("IA__g_match_info_free"), visibility("default")));
+
+#undef g_match_info_next 
+extern __typeof (g_match_info_next) g_match_info_next __attribute((alias("IA__g_match_info_next"), visibility("default")));
+
+#undef g_match_info_matches 
+extern __typeof (g_match_info_matches) g_match_info_matches __attribute((alias("IA__g_match_info_matches"), visibility("default")));
+
+#undef g_match_info_get_match_count 
+extern __typeof (g_match_info_get_match_count) g_match_info_get_match_count __attribute((alias("IA__g_match_info_get_match_count"), visibility("default")));
+
+#undef g_match_info_is_partial_match 
+extern __typeof (g_match_info_is_partial_match) g_match_info_is_partial_match __attribute((alias("IA__g_match_info_is_partial_match"), visibility("default")));
+
+#undef g_match_info_expand_references 
+extern __typeof (g_match_info_expand_references) g_match_info_expand_references __attribute((alias("IA__g_match_info_expand_references"), visibility("default")));
+
+#undef g_match_info_fetch 
+extern __typeof (g_match_info_fetch) g_match_info_fetch __attribute((alias("IA__g_match_info_fetch"), visibility("default")));
+
+#undef g_match_info_fetch_pos 
+extern __typeof (g_match_info_fetch_pos) g_match_info_fetch_pos __attribute((alias("IA__g_match_info_fetch_pos"), visibility("default")));
+
+#undef g_match_info_fetch_named 
+extern __typeof (g_match_info_fetch_named) g_match_info_fetch_named __attribute((alias("IA__g_match_info_fetch_named"), visibility("default")));
+
+#undef g_match_info_fetch_named_pos 
+extern __typeof (g_match_info_fetch_named_pos) g_match_info_fetch_named_pos __attribute((alias("IA__g_match_info_fetch_named_pos"), visibility("default")));
+
+#undef g_match_info_fetch_all 
+extern __typeof (g_match_info_fetch_all) g_match_info_fetch_all __attribute((alias("IA__g_match_info_fetch_all"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__G_WIN32_H__)
+#if IN_FILE(__G_WIN32_H__)
+#ifdef G_OS_WIN32
+#undef g_win32_error_message 
+extern __typeof (g_win32_error_message) g_win32_error_message __attribute((alias("IA__g_win32_error_message"), visibility("default")));
+
+#undef g_win32_ftruncate 
+extern __typeof (g_win32_ftruncate) g_win32_ftruncate __attribute((alias("IA__g_win32_ftruncate"), visibility("default")));
+
+#undef g_win32_get_package_installation_directory_of_module 
+extern __typeof (g_win32_get_package_installation_directory_of_module) g_win32_get_package_installation_directory_of_module __attribute((alias("IA__g_win32_get_package_installation_directory_of_module"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_win32_get_package_installation_directory 
+extern __typeof (g_win32_get_package_installation_directory) g_win32_get_package_installation_directory __attribute((alias("IA__g_win32_get_package_installation_directory"), visibility("default")));
+
+#endif
+#undef g_win32_get_package_installation_directory_utf8 
+extern __typeof (g_win32_get_package_installation_directory_utf8) g_win32_get_package_installation_directory_utf8 __attribute((alias("IA__g_win32_get_package_installation_directory_utf8"), visibility("default")));
+
+#ifndef _WIN64
+#undef g_win32_get_package_installation_subdirectory 
+extern __typeof (g_win32_get_package_installation_subdirectory) g_win32_get_package_installation_subdirectory __attribute((alias("IA__g_win32_get_package_installation_subdirectory"), visibility("default")));
+
+#endif
+#undef g_win32_get_package_installation_subdirectory_utf8 
+extern __typeof (g_win32_get_package_installation_subdirectory_utf8) g_win32_get_package_installation_subdirectory_utf8 __attribute((alias("IA__g_win32_get_package_installation_subdirectory_utf8"), visibility("default")));
+
+#undef g_win32_get_windows_version 
+extern __typeof (g_win32_get_windows_version) g_win32_get_windows_version __attribute((alias("IA__g_win32_get_windows_version"), visibility("default")));
+
+#undef g_win32_getlocale 
+extern __typeof (g_win32_getlocale) g_win32_getlocale __attribute((alias("IA__g_win32_getlocale"), visibility("default")));
+
+#undef g_win32_locale_filename_from_utf8 
+extern __typeof (g_win32_locale_filename_from_utf8) g_win32_locale_filename_from_utf8 __attribute((alias("IA__g_win32_locale_filename_from_utf8"), visibility("default")));
+
+#endif
+#endif
+#endif
+
+#endif /* G_HAVE_GNUC_VISIBILITY */
+#endif /* DISABLE_VISIBILITY */
diff --git a/glibconfig.h b/glibconfig.h
new file mode 100644
index 0000000..ecae491
--- /dev/null
+++ b/glibconfig.h
@@ -0,0 +1,226 @@
+/* glibconfig.h
+ *
+ * This is a generated file.  Please modify 'configure.in'
+ */
+
+#ifndef __G_LIBCONFIG_H__
+#define __G_LIBCONFIG_H__
+
+#include <glib/gmacros.h>
+
+#include <limits.h>
+#include <float.h>
+#define GLIB_HAVE_ALLOCA_H
+#define GLIB_HAVE_SYS_POLL_H
+
+/* Specifies that GLib's g_print*() functions wrap the
+ * system printf functions.  This is useful to know, for example,
+ * when using glibc's register_printf_function().
+ */
+#define GLIB_USING_SYSTEM_PRINTF
+
+G_BEGIN_DECLS
+
+#define G_MINFLOAT	FLT_MIN
+#define G_MAXFLOAT	FLT_MAX
+#define G_MINDOUBLE	DBL_MIN
+#define G_MAXDOUBLE	DBL_MAX
+#define G_MINSHORT	SHRT_MIN
+#define G_MAXSHORT	SHRT_MAX
+#define G_MAXUSHORT	USHRT_MAX
+#define G_MININT	INT_MIN
+#define G_MAXINT	INT_MAX
+#define G_MAXUINT	UINT_MAX
+#define G_MINLONG	LONG_MIN
+#define G_MAXLONG	LONG_MAX
+#define G_MAXULONG	ULONG_MAX
+
+typedef signed char gint8;
+typedef unsigned char guint8;
+typedef signed short gint16;
+typedef unsigned short guint16;
+#define G_GINT16_MODIFIER "h"
+#define G_GINT16_FORMAT "hi"
+#define G_GUINT16_FORMAT "hu"
+typedef signed int gint32;
+typedef unsigned int guint32;
+#define G_GINT32_MODIFIER ""
+#define G_GINT32_FORMAT "i"
+#define G_GUINT32_FORMAT "u"
+#define G_HAVE_GINT64 1          /* deprecated, always true */
+
+typedef signed long gint64;
+typedef unsigned long guint64;
+
+#define G_GINT64_CONSTANT(val)	(val##L)
+#define G_GUINT64_CONSTANT(val)	(val##UL)
+#define G_GINT64_MODIFIER "l"
+#define G_GINT64_FORMAT "li"
+#define G_GUINT64_FORMAT "lu"
+
+#define GLIB_SIZEOF_VOID_P 8
+#define GLIB_SIZEOF_LONG   8
+#define GLIB_SIZEOF_SIZE_T 8
+
+typedef signed long gssize;
+typedef unsigned long gsize;
+#define G_GSIZE_MODIFIER "l"
+#define G_GSSIZE_FORMAT "li"
+#define G_GSIZE_FORMAT "lu"
+
+#define G_MAXSIZE	G_MAXULONG
+#define G_MINSSIZE	G_MINLONG
+#define G_MAXSSIZE	G_MAXLONG
+
+typedef gint64 goffset;
+#define G_MINOFFSET	G_MININT64
+#define G_MAXOFFSET	G_MAXINT64
+
+#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
+#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
+#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+
+#define GPOINTER_TO_INT(p)	((gint)  (glong) (p))
+#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
+
+#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
+#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
+
+typedef signed long gintptr;
+typedef unsigned long guintptr;
+
+#ifdef NeXT /* @#%@! NeXTStep */
+# define g_ATEXIT(proc)	(!atexit (proc))
+#else
+# define g_ATEXIT(proc)	(atexit (proc))
+#endif
+
+#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END
+
+#define GLIB_MAJOR_VERSION 2
+#define GLIB_MINOR_VERSION 20
+#define GLIB_MICRO_VERSION 0
+
+#define G_OS_UNIX
+
+
+#define G_VA_COPY	va_copy
+#define G_VA_COPY_AS_ARRAY 1
+
+#ifdef	__cplusplus
+#define	G_HAVE_INLINE	1
+#else	/* !__cplusplus */
+#define G_HAVE_INLINE 1
+#define G_HAVE___INLINE 1
+#define G_HAVE___INLINE__ 1
+#endif	/* !__cplusplus */
+
+#ifdef	__cplusplus
+#define G_CAN_INLINE	1
+#else	/* !__cplusplus */
+#define G_CAN_INLINE	1
+#endif
+
+#ifndef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif
+#ifdef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif
+
+/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
+ * is passed ISO vararg support is turned off, and there is no work
+ * around to turn it on, so we unconditionally turn it off.
+ */
+#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
+#  undef G_HAVE_ISO_VARARGS
+#endif
+
+#define G_HAVE_GNUC_VARARGS 1
+#define G_HAVE_GROWING_STACK 0
+
+#define G_HAVE_GNUC_VISIBILITY 1
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#define G_GNUC_INTERNAL __hidden
+#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#else
+#define G_GNUC_INTERNAL
+#endif
+
+#define G_THREADS_ENABLED
+#define G_THREADS_IMPL_POSIX
+typedef struct _GStaticMutex GStaticMutex;
+struct _GStaticMutex
+{
+  struct _GMutex *runtime_mutex;
+  union {
+    char   pad[40];
+    double dummy_double;
+    void  *dummy_pointer;
+    long   dummy_long;
+  } static_mutex;
+};
+#define	G_STATIC_MUTEX_INIT	{ NULL, { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
+#define	g_static_mutex_get_mutex(mutex) \
+  (g_thread_use_default_impl ? ((GMutex*)(gpointer) ((mutex)->static_mutex.pad)) : \
+   g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
+/* This represents a system thread as used by the implementation. An
+ * alien implementaion, as loaded by g_thread_init can only count on
+ * "sizeof (gpointer)" bytes to store their info. We however need more
+ * for some of our native implementations. */
+typedef union _GSystemThread GSystemThread;
+union _GSystemThread
+{
+  char   data[8];
+  double dummy_double;
+  void  *dummy_pointer;
+  long   dummy_long;
+};
+
+#define GINT16_TO_LE(val)	((gint16) (val))
+#define GUINT16_TO_LE(val)	((guint16) (val))
+#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
+#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
+#define GINT32_TO_LE(val)	((gint32) (val))
+#define GUINT32_TO_LE(val)	((guint32) (val))
+#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
+#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
+#define GINT64_TO_LE(val)	((gint64) (val))
+#define GUINT64_TO_LE(val)	((guint64) (val))
+#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
+#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
+#define GLONG_TO_LE(val)	((glong) GINT64_TO_LE (val))
+#define GULONG_TO_LE(val)	((gulong) GUINT64_TO_LE (val))
+#define GLONG_TO_BE(val)	((glong) GINT64_TO_BE (val))
+#define GULONG_TO_BE(val)	((gulong) GUINT64_TO_BE (val))
+#define GINT_TO_LE(val)		((gint) GINT32_TO_LE (val))
+#define GUINT_TO_LE(val)	((guint) GUINT32_TO_LE (val))
+#define GINT_TO_BE(val)		((gint) GINT32_TO_BE (val))
+#define GUINT_TO_BE(val)	((guint) GUINT32_TO_BE (val))
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define GLIB_SYSDEF_POLLIN =1
+#define GLIB_SYSDEF_POLLOUT =4
+#define GLIB_SYSDEF_POLLPRI =2
+#define GLIB_SYSDEF_POLLHUP =16
+#define GLIB_SYSDEF_POLLERR =8
+#define GLIB_SYSDEF_POLLNVAL =32
+
+#define G_MODULE_SUFFIX "so"
+
+/* A GPid is an abstraction for a process "handle". It is *not* an
+ * abstraction for a process identifier in general. GPid is used in
+ * GLib only for descendant processes spawned with the g_spawn*
+ * functions. On POSIX there is no "process handle" concept as such,
+ * but on Windows a GPid is a handle to a process, a kind of pointer,
+ * not a process identifier.
+ */
+typedef int GPid;
+
+G_END_DECLS
+
+#endif /* GLIBCONFIG_H */
