#include <gio/gio.h>

#if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
# define SECTION __attribute__ ((section (".gresource.m_lua_scripting_resources"), aligned (8)))
#else
# define SECTION
#endif

static const SECTION union { const guint8 data[2593]; const double alignment; void * const ptr;}  _m_lua_scripting_resources_resource_data = {
  "\107\126\141\162\151\141\156\164\000\000\000\000\000\000\000\000"
  "\030\000\000\000\344\000\000\000\000\000\000\050\007\000\000\000"
  "\000\000\000\000\001\000\000\000\003\000\000\000\004\000\000\000"
  "\005\000\000\000\005\000\000\000\006\000\000\000\007\327\042\064"
  "\006\000\000\000\344\000\000\000\014\000\114\000\360\000\000\000"
  "\364\000\000\000\162\111\242\024\000\000\000\000\364\000\000\000"
  "\020\000\114\000\004\001\000\000\010\001\000\000\113\120\220\013"
  "\003\000\000\000\010\001\000\000\004\000\114\000\014\001\000\000"
  "\020\001\000\000\324\265\002\000\377\377\377\377\020\001\000\000"
  "\001\000\114\000\024\001\000\000\030\001\000\000\374\341\000\175"
  "\001\000\000\000\030\001\000\000\007\000\166\000\040\001\000\000"
  "\376\011\000\000\326\374\147\005\002\000\000\000\376\011\000\000"
  "\014\000\114\000\014\012\000\000\020\012\000\000\052\024\043\120"
  "\005\000\000\000\020\012\000\000\011\000\114\000\034\012\000\000"
  "\040\012\000\000\167\151\162\145\160\154\165\155\142\145\162\057"
  "\001\000\000\000\155\055\154\165\141\055\163\143\162\151\160\164"
  "\151\156\147\057\004\000\000\000\157\162\147\057\005\000\000\000"
  "\057\000\000\000\002\000\000\000\141\160\151\056\154\165\141\000"
  "\212\027\000\000\001\000\000\000\170\332\265\030\333\162\333\270"
  "\365\135\137\201\162\037\042\145\051\115\224\275\166\033\167\126"
  "\211\355\124\255\054\171\154\147\235\116\232\221\041\022\222\260"
  "\242\010\226\000\045\153\167\234\377\351\157\364\313\172\316\301"
  "\205\244\342\114\062\355\324\223\110\300\301\271\337\160\240\176"
  "\237\335\312\122\134\146\325\166\041\312\116\277\017\377\330\315"
  "\132\152\266\224\231\140\211\312\015\227\271\146\146\055\330\350"
  "\162\014\337\334\060\070\335\362\124\060\276\343\062\343\013\300"
  "\063\212\060\046\025\147\072\051\145\141\264\143\365\112\025\207"
  "\122\256\326\206\375\373\137\354\371\263\347\317\000\222\001\215"
  "\052\071\233\230\164\200\070\360\367\063\257\314\132\225\354\265"
  "\120\345\112\260\277\111\276\222\074\345\033\220\364\142\105\260"
  "\301\246\206\375\234\170\036\203\104\155\377\354\104\135\137\236"
  "\276\355\117\144\042\162\055\372\343\124\344\106\056\245\050\177"
  "\142\027\343\233\116\047\123\011\317\330\262\312\023\043\125\016"
  "\132\344\332\224\140\232\141\135\135\210\244\327\141\214\153\055"
  "\112\330\233\103\041\010\370\156\370\276\307\116\116\130\004\250"
  "\062\137\105\061\213\152\272\237\230\270\007\034\043\122\246\253"
  "\305\257\260\002\006\314\141\366\376\364\050\277\347\137\306\157"
  "\047\312\105\233\031\160\263\006\170\121\047\314\051\030\116\210"
  "\310\201\237\267\301\032\340\277\167\320\317\357\242\223\350\075"
  "\354\042\361\317\212\147\072\212\035\364\017\026\232\053\323\077"
  "\072\111\354\211\314\373\231\324\046\200\077\004\160\311\363\225"
  "\010\360\257\054\174\313\115\262\026\065\227\257\035\272\356\027"
  "\245\320\020\232\160\322\017\047\174\101\007\000\177\100\173\041"
  "\242\300\042\331\060\236\247\230\207\073\364\045\031\011\311\046"
  "\015\170\007\022\206\040\032\002\332\262\167\056\365\174\307\063"
  "\231\002\347\045\030\043\340\164\011\331\265\211\331\216\311\234"
  "\025\134\226\272\113\236\351\261\124\221\046\162\351\074\170\302"
  "\066\014\160\375\146\207\211\235\023\012\363\076\336\270\255\363"
  "\165\003\162\054\335\224\225\160\107\213\122\160\213\046\362\264"
  "\343\077\175\216\264\010\217\362\102\346\226\035\111\177\022\261"
  "\301\300\056\341\073\172\022\365\076\351\054\314\073\357\054\140"
  "\044\126\002\314\342\031\151\144\235\105\030\056\147\042\334\104"
  "\230\070\340\012\113\352\015\167\236\105\045\346\170\102\371\304"
  "\242\142\337\137\145\152\301\063\114\344\142\217\237\053\105\351"
  "\031\101\010\153\102\044\371\070\044\204\200\121\221\056\052\322"
  "\205\245\026\023\202\123\353\164\034\021\326\122\036\230\313\160"
  "\160\054\266\021\213\146\064\174\044\354\067\055\154\120\272\055"
  "\006\237\210\211\257\107\122\316\306\206\226\076\066\201\153\210"
  "\020\130\262\027\154\245\014\165\114\333\033\371\126\125\320\211"
  "\324\322\306\107\167\132\371\010\065\333\314\110\050\326\326\366"
  "\253\250\166\210\117\047\162\312\067\357\331\207\023\226\313\054"
  "\166\206\266\054\010\171\244\337\341\347\173\122\271\321\204\222"
  "\272\103\222\122\326\030\210\134\123\263\344\377\043\033\356\230"
  "\114\160\015\036\311\305\227\051\362\341\263\212\120\151\020\350"
  "\333\377\111\067\263\127\056\112\101\221\107\245\236\374\367\042"
  "\162\047\041\146\213\212\322\244\024\170\347\202\063\232\031\125"
  "\012\123\225\071\113\305\242\132\015\264\060\133\141\270\301\333"
  "\230\124\210\241\102\347\363\234\157\261\300\033\322\241\064\173"
  "\035\342\160\164\043\236\355\240\373\216\241\115\100\203\066\341"
  "\116\304\357\201\153\023\221\330\271\006\355\104\337\026\063\312"
  "\176\117\065\317\305\336\121\076\046\041\255\266\305\334\152\150"
  "\142\250\040\274\242\173\241\027\331\375\034\324\104\121\050\305"
  "\102\260\246\355\002\222\176\350\072\271\004\350\320\363\210\331"
  "\060\164\361\046\223\306\006\035\374\017\122\335\071\317\312\334"
  "\354\250\347\140\073\173\170\364\216\060\241\005\221\336\003\030"
  "\205\260\063\070\072\364\061\341\077\064\302\142\021\265\152\242"
  "\005\027\164\263\065\154\313\265\356\065\372\143\046\226\146\276"
  "\021\207\330\166\003\134\202\106\200\011\327\073\041\343\065\117"
  "\370\320\104\306\113\352\033\266\015\163\110\214\124\056\227\340"
  "\175\164\003\364\025\224\313\026\207\200\343\311\300\042\236\025"
  "\153\276\020\106\242\114\125\246\242\034\330\111\157\053\070\115"
  "\170\120\165\071\215\201\332\123\301\164\045\330\102\200\137\302"
  "\227\235\111\300\010\141\222\116\243\063\167\275\025\075\054\056"
  "\202\004\153\172\315\216\355\162\347\210\346\305\061\111\273\043"
  "\273\160\211\303\334\345\142\233\074\170\147\226\147\007\157\204"
  "\055\170\253\056\133\363\035\314\253\340\241\054\353\247\142\051"
  "\163\050\063\362\201\247\104\363\237\150\266\252\070\014\064\106"
  "\140\241\053\210\133\006\143\160\146\073\065\014\106\060\051\157"
  "\301\323\120\212\313\100\027\302\015\245\017\302\340\056\330\303"
  "\325\142\231\367\274\207\152\315\161\312\042\375\250\211\267\340"
  "\156\334\173\304\131\336\120\160\123\360\120\333\101\240\311\010"
  "\133\005\204\263\120\322\045\003\031\015\315\144\245\124\312\366"
  "\374\200\046\221\136\144\220\275\252\365\300\323\337\102\253\345"
  "\371\023\303\176\255\240\363\246\212\335\075\046\366\016\232\222"
  "\110\170\245\205\225\266\005\266\113\170\006\204\104\133\332\206"
  "\005\276\004\311\167\363\171\146\356\030\266\046\370\277\126\160"
  "\215\142\124\260\221\004\114\327\332\342\300\301\260\055\335\212"
  "\060\215\202\054\210\332\107\176\035\260\356\215\173\156\224\202"
  "\262\077\201\102\120\042\044\056\222\152\320\154\217\111\275\346"
  "\105\001\217\002\047\320\171\100\152\213\124\263\216\241\170\100"
  "\370\223\300\244\312\175\246\054\004\270\122\252\252\254\063\355"
  "\006\071\153\216\203\001\322\100\165\201\203\321\035\040\002\076"
  "\260\310\040\025\243\102\224\133\151\240\251\107\350\174\027\316"
  "\073\232\200\356\342\106\161\356\327\062\131\203\377\065\064\175"
  "\055\321\234\205\062\153\166\017\256\077\220\313\060\010\367\124"
  "\360\104\034\223\051\042\263\371\350\031\341\061\136\227\022\054"
  "\004\265\161\312\227\160\223\140\327\046\046\030\054\164\006\057"
  "\251\041\344\007\357\214\034\124\313\270\261\203\264\315\153\305"
  "\004\007\225\024\306\010\033\105\055\215\304\150\203\205\201\171"
  "\017\202\032\364\356\051\350\331\074\045\372\247\230\350\056\323"
  "\234\017\032\103\040\172\123\175\042\322\061\106\355\336\171\000"
  "\345\326\046\305\036\012\237\277\065\075\320\104\301\132\162\364"
  "\277\261\055\046\366\242\211\000\332\252\001\233\241\216\173\111"
  "\051\035\064\047\361\120\217\066\075\041\226\101\273\247\005\057"
  "\215\344\331\123\227\214\301\212\251\062\302\366\121\377\030\376"
  "\156\360\115\043\103\065\134\320\102\327\030\326\371\133\070\005"
  "\366\153\170\360\031\345\131\065\275\161\044\317\116\005\066\111"
  "\040\311\032\316\262\221\161\330\055\073\164\154\253\325\145\075"
  "\147\105\251\240\157\155\007\366\336\242\264\306\333\157\036\323"
  "\305\327\030\307\335\035\026\356\101\327\211\361\326\073\161\315"
  "\257\312\013\236\154\272\210\347\352\003\142\146\137\275\073\373"
  "\336\045\274\250\165\015\024\045\275\275\333\167\264\121\266\007"
  "\166\067\075\067\023\105\075\207\337\030\036\166\376\342\147\137"
  "\263\241\273\050\374\024\366\345\214\133\340\135\257\167\364\064"
  "\153\014\060\247\070\141\271\047\164\255\006\000\352\115\334\171"
  "\360\330\343\324\241\216\247\277\214\046\343\123\330\075\273\137"
  "\272\077\054\371\321\364\357\107\260\100\173\056\070\024\207\360"
  "\357\365\113\131\210\075\334\071\063\377\346\267\217\370\213\361"
  "\164\174\061\232\020\223\341\020\131\076\020\337\311\344\063\174"
  "\075\333\122\335\037\002\267\227\263\067\323\123\326\374\303\321"
  "\312\063\375\204\012\343\351\371\214\035\021\165\207\354\305\013"
  "\366\155\317\266\265\313\321\325\350\142\176\171\065\273\274\076"
  "\302\370\256\205\161\076\273\272\030\335\264\061\276\077\346\161"
  "\076\236\234\265\060\176\150\143\314\256\156\346\257\146\323\363"
  "\361\353\200\361\143\013\343\152\366\346\346\354\110\217\077\366"
  "\202\225\327\005\077\025\073\231\210\140\340\331\164\364\162\162"
  "\166\372\210\201\303\357\153\272\251\112\153\022\324\342\372\121"
  "\237\064\111\056\340\052\114\141\116\017\144\247\243\233\021\373"
  "\054\331\265\320\370\063\307\330\210\155\240\034\275\272\031\377"
  "\162\366\030\345\063\147\374\331\133\124\252\151\106\340\355\131"
  "\103\216\340\354\220\145\152\317\360\316\302\216\007\257\205\145"
  "\267\107\077\035\300\263\001\306\041\011\175\013\232\006\214\367"
  "\060\363\343\151\307\176\275\213\346\070\363\323\303\333\102\160"
  "\333\351\134\217\246\247\057\147\157\347\126\276\123\330\227\021"
  "\175\243\164\252\224\161\212\313\106\342\373\145\003\134\103\021"
  "\370\172\042\361\107\030\374\042\056\303\037\163\344\003\137\270"
  "\235\250\025\051\003\337\270\175\245\210\034\225\263\324\227\131"
  "\265\222\071\201\354\022\201\364\366\071\225\272\240\237\255\112"
  "\072\075\202\041\232\055\202\013\236\363\225\103\152\101\320\166"
  "\322\310\075\207\032\030\315\027\322\307\341\274\055\032\173\217"
  "\322\370\205\362\244\261\011\352\066\244\264\366\061\271\332\045"
  "\363\155\141\227\101\156\043\321\101\252\337\371\143\227\317\267"
  "\005\056\074\160\202\055\044\234\214\267\105\326\072\225\371\306"
  "\072\034\026\036\170\251\122\057\000\226\010\371\253\126\271\007"
  "\341\232\224\301\353\320\002\161\325\222\167\241\322\052\253\045"
  "\332\155\160\060\102\352\072\162\050\016\120\273\330\030\032\375"
  "\255\177\355\306\071\166\031\362\325\353\366\006\306\031\104\015"
  "\353\330\066\312\304\037\204\065\361\226\040\120\220\333\377\242"
  "\224\265\377\010\346\325\030\351\103\236\264\061\333\040\213\370"
  "\320\371\017\051\163\061\252\000\050\165\165\141\171\051\146\162"
  "\145\145\144\145\163\153\164\157\160\057\000\000\006\000\000\000"
  "\160\151\160\145\167\151\162\145\057\000\000\000\000\000\000\000"
  "" };

static GStaticResource static_resource = { _m_lua_scripting_resources_resource_data.data, sizeof (_m_lua_scripting_resources_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };

G_GNUC_INTERNAL
GResource *_m_lua_scripting_resources_get_resource (void);
GResource *_m_lua_scripting_resources_get_resource (void)
{
  return g_static_resource_get_resource (&static_resource);
}
/* GLIB - Library of useful routines for C programming
 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */

/*
 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
 * file for a list of people on the GLib Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
 * GLib at ftp://ftp.gtk.org/pub/gtk/.
 */

#ifndef __G_CONSTRUCTOR_H__
#define __G_CONSTRUCTOR_H__

/*
  If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
  destructors, in a usable way, including e.g. on library unload. If not you're on
  your own.

  Some compilers need #pragma to handle this, which does not work with macros,
  so the way you need to use this is (for constructors):

  #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
  #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor)
  #endif
  G_DEFINE_CONSTRUCTOR(my_constructor)
  static void my_constructor(void) {
   ...
  }

*/

#ifndef __GTK_DOC_IGNORE__

#if  __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)

#define G_HAS_CONSTRUCTORS 1

#define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void);
#define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void);

#elif defined (_MSC_VER) && (_MSC_VER >= 1500)
/* Visual studio 2008 and later has _Pragma */

/*
 * Only try to include gslist.h if not already included via glib.h,
 * so that items using gconstructor.h outside of GLib (such as
 * GResources) continue to build properly.
 */
#ifndef __G_LIB_H__
#include "gslist.h"
#endif

#include <stdlib.h>

#define G_HAS_CONSTRUCTORS 1

/* We do some weird things to avoid the constructors being optimized
 * away on VS2015 if WholeProgramOptimization is enabled. First we
 * make a reference to the array from the wrapper to make sure its
 * references. Then we use a pragma to make sure the wrapper function
 * symbol is always included at the link stage. Also, the symbols
 * need to be extern (but not dllexport), even though they are not
 * really used from another object file.
 */

/* We need to account for differences between the mangling of symbols
 * for x86 and x64/ARM/ARM64 programs, as symbols on x86 are prefixed
 * with an underscore but symbols on x64/ARM/ARM64 are not.
 */
#ifdef _M_IX86
#define G_MSVC_SYMBOL_PREFIX "_"
#else
#define G_MSVC_SYMBOL_PREFIX ""
#endif

#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX)
#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX)

#define G_MSVC_CTOR(_func,_sym_prefix) \
  static void _func(void); \
  extern int (* _array ## _func)(void);              \
  int _func ## _wrapper(void) { _func(); g_slist_find (NULL,  _array ## _func); return 0; } \
  __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \
  __pragma(section(".CRT$XCU",read)) \
  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper;

#define G_MSVC_DTOR(_func,_sym_prefix) \
  static void _func(void); \
  extern int (* _array ## _func)(void);              \
  int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL,  _array ## _func); return 0; } \
   __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \
  __pragma(section(".CRT$XCU",read)) \
  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor;

#elif defined (_MSC_VER)

#define G_HAS_CONSTRUCTORS 1

/* Pre Visual studio 2008 must use #pragma section */
#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1
#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1

#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \
  section(".CRT$XCU",read)
#define G_DEFINE_CONSTRUCTOR(_func) \
  static void _func(void); \
  static int _func ## _wrapper(void) { _func(); return 0; } \
  __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper;

#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \
  section(".CRT$XCU",read)
#define G_DEFINE_DESTRUCTOR(_func) \
  static void _func(void); \
  static int _func ## _constructor(void) { atexit (_func); return 0; } \
  __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor;

#elif defined(__SUNPRO_C)

/* This is not tested, but i believe it should work, based on:
 * http://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c
 */

#define G_HAS_CONSTRUCTORS 1

#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1
#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1

#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \
  init(_func)
#define G_DEFINE_CONSTRUCTOR(_func) \
  static void _func(void);

#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \
  fini(_func)
#define G_DEFINE_DESTRUCTOR(_func) \
  static void _func(void);

#else

/* constructors not supported for this compiler */

#endif

#endif /* __GTK_DOC_IGNORE__ */
#endif /* __G_CONSTRUCTOR_H__ */

#ifdef G_HAS_CONSTRUCTORS

#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_m_lua_scripting_resourcesresource_constructor)
#endif
G_DEFINE_CONSTRUCTOR(_m_lua_scripting_resourcesresource_constructor)
#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA
#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_m_lua_scripting_resourcesresource_destructor)
#endif
G_DEFINE_DESTRUCTOR(_m_lua_scripting_resourcesresource_destructor)

#else
#warning "Constructor not supported on this compiler, linking in resources will not work"
#endif

static void _m_lua_scripting_resourcesresource_constructor (void)
{
  g_static_resource_init (&static_resource);
}

static void _m_lua_scripting_resourcesresource_destructor (void)
{
  g_static_resource_fini (&static_resource);
}
