Browse Source

remove some unfinished & no longer needed javascript files. started working on a new utility function for retrieving the current time as discussed in #83

sisyphus
Dustin Falgout 8 years ago
parent
commit
72e90fa276
  1. 4
      src/greeter.c
  2. 811
      src/gresource/greeter-resources.c
  3. 4
      src/gresource/greeter-resources.gresource.xml
  4. 7
      src/gresource/greeter-resources.h
  5. 6
      src/gresource/js/ThemeHeartbeat.js
  6. 13
      src/gresource/js/ThemeUtils.js
  7. 186
      src/gresource/js/WK2Greeter.js
  8. 303
      src/gresource/js/base/LightDMGreeter.js
  9. 43
      src/gresource/js/proxy.js
  10. 7
      src/gresource/meson.build
  11. 34
      src/meson.build
  12. 22
      src/webkit2-extension.c

4
src/greeter.c

@ -44,7 +44,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#include "config.h" #include "config.h"
#include "gresource/greeter-resources.h" #include "greeter-resources.h"
static GtkWidget *web_view; static GtkWidget *web_view;
@ -204,7 +204,7 @@ load_script(char *script) {
static void static void
page_loaded_handler(void) { page_loaded_handler(void) {
load_script("/com/antergos/lightdm-webkit2-greeter/js/auto-binding-object.js"); load_script("/com/antergos/lightdm-webkit2-greeter/js/auto-binding-object.js");
load_script("/com/antergos/lightdm-webkit2-greeter/js/heartbeat.js"); load_script("/com/antergos/lightdm-webkit2-greeter/js/ThemeHeartbeat.js");
} }

811
src/gresource/greeter-resources.c

@ -1,811 +0,0 @@
#include <gio/gio.h>
#if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
# define SECTION __attribute__ ((section (".gresource.greeter_resources"), aligned (8)))
#else
# define SECTION
#endif
static const SECTION union { const guint8 data[5188]; const double alignment; void * const ptr;} greeter_resources_resource_data = { {
0x47, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
0x09, 0x00, 0x00, 0x00, 0x78, 0x4c, 0xe7, 0x14,
0x03, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00,
0x03, 0x00, 0x4c, 0x00, 0x20, 0x01, 0x00, 0x00,
0x28, 0x01, 0x00, 0x00, 0x73, 0xf8, 0xf6, 0x72,
0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00,
0x0c, 0x00, 0x76, 0x00, 0x38, 0x01, 0x00, 0x00,
0xf5, 0x0a, 0x00, 0x00, 0xc2, 0xaf, 0x89, 0x0b,
0x07, 0x00, 0x00, 0x00, 0xf5, 0x0a, 0x00, 0x00,
0x04, 0x00, 0x4c, 0x00, 0xfc, 0x0a, 0x00, 0x00,
0x00, 0x0b, 0x00, 0x00, 0x0c, 0xa6, 0xd8, 0x48,
0x05, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00,
0x18, 0x00, 0x4c, 0x00, 0x18, 0x0b, 0x00, 0x00,
0x20, 0x0b, 0x00, 0x00, 0x08, 0x98, 0x49, 0xe2,
0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x00, 0x00,
0x16, 0x00, 0x76, 0x00, 0x38, 0x0b, 0x00, 0x00,
0xdf, 0x13, 0x00, 0x00, 0xb4, 0xae, 0x96, 0xdb,
0x02, 0x00, 0x00, 0x00, 0xdf, 0x13, 0x00, 0x00,
0x09, 0x00, 0x4c, 0x00, 0xe8, 0x13, 0x00, 0x00,
0xec, 0x13, 0x00, 0x00, 0x8c, 0x77, 0x10, 0x71,
0x08, 0x00, 0x00, 0x00, 0xec, 0x13, 0x00, 0x00,
0x09, 0x00, 0x76, 0x00, 0xf8, 0x13, 0x00, 0x00,
0x34, 0x14, 0x00, 0x00, 0xd4, 0xb5, 0x02, 0x00,
0xff, 0xff, 0xff, 0xff, 0x34, 0x14, 0x00, 0x00,
0x01, 0x00, 0x4c, 0x00, 0x38, 0x14, 0x00, 0x00,
0x3c, 0x14, 0x00, 0x00, 0xc4, 0x0d, 0xcd, 0xb1,
0x03, 0x00, 0x00, 0x00, 0x3c, 0x14, 0x00, 0x00,
0x04, 0x00, 0x4c, 0x00, 0x40, 0x14, 0x00, 0x00,
0x44, 0x14, 0x00, 0x00, 0x6a, 0x73, 0x2f, 0x00,
0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00,
0xad, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2f, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x68, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x2e,
0x6a, 0x73, 0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a,
0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67,
0x68, 0x74, 0x20, 0xc2, 0xa9, 0x20, 0x32, 0x30,
0x31, 0x36, 0x20, 0x41, 0x6e, 0x74, 0x65, 0x72,
0x67, 0x6f, 0x73, 0x20, 0x44, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x20, 0x3c,
0x64, 0x65, 0x76, 0x40, 0x61, 0x6e, 0x74, 0x65,
0x72, 0x67, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x3e, 0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20,
0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c,
0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x72,
0x74, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x69, 0x67,
0x68, 0x74, 0x64, 0x6d, 0x2d, 0x77, 0x65, 0x62,
0x6b, 0x69, 0x74, 0x32, 0x2d, 0x67, 0x72, 0x65,
0x65, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x20, 0x2a,
0x0a, 0x20, 0x2a, 0x20, 0x6c, 0x69, 0x67, 0x68,
0x74, 0x64, 0x6d, 0x2d, 0x77, 0x65, 0x62, 0x6b,
0x69, 0x74, 0x32, 0x2d, 0x67, 0x72, 0x65, 0x65,
0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x66,
0x72, 0x65, 0x65, 0x20, 0x73, 0x6f, 0x66, 0x74,
0x77, 0x61, 0x72, 0x65, 0x3b, 0x20, 0x79, 0x6f,
0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x65,
0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6e,
0x64, 0x2f, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x64,
0x69, 0x66, 0x79, 0x0a, 0x20, 0x2a, 0x20, 0x69,
0x74, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20,
0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x72, 0x6d,
0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
0x20, 0x47, 0x4e, 0x55, 0x20, 0x47, 0x65, 0x6e,
0x65, 0x72, 0x61, 0x6c, 0x20, 0x50, 0x75, 0x62,
0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69, 0x63, 0x65,
0x6e, 0x73, 0x65, 0x20, 0x61, 0x73, 0x20, 0x70,
0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64,
0x20, 0x62, 0x79, 0x0a, 0x20, 0x2a, 0x20, 0x74,
0x68, 0x65, 0x20, 0x46, 0x72, 0x65, 0x65, 0x20,
0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65,
0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x3b, 0x20, 0x65, 0x69, 0x74,
0x68, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x20, 0x33, 0x20, 0x6f, 0x66,
0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x6f, 0x72,
0x0a, 0x20, 0x2a, 0x20, 0x28, 0x61, 0x74, 0x20,
0x79, 0x6f, 0x75, 0x72, 0x20, 0x6f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x29, 0x20, 0x61, 0x6e, 0x79,
0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x20, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a,
0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x6c, 0x69,
0x67, 0x68, 0x74, 0x64, 0x6d, 0x2d, 0x77, 0x65,
0x62, 0x6b, 0x69, 0x74, 0x32, 0x2d, 0x67, 0x72,
0x65, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73,
0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20,
0x74, 0x68, 0x65, 0x20, 0x68, 0x6f, 0x70, 0x65,
0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74,
0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65,
0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x2c,
0x0a, 0x20, 0x2a, 0x20, 0x62, 0x75, 0x74, 0x20,
0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x20,
0x41, 0x4e, 0x59, 0x20, 0x57, 0x41, 0x52, 0x52,
0x41, 0x4e, 0x54, 0x59, 0x3b, 0x20, 0x77, 0x69,
0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x65, 0x76,
0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69,
0x6d, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x77,
0x61, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x79, 0x20,
0x6f, 0x66, 0x0a, 0x20, 0x2a, 0x20, 0x4d, 0x45,
0x52, 0x43, 0x48, 0x41, 0x4e, 0x54, 0x41, 0x42,
0x49, 0x4c, 0x49, 0x54, 0x59, 0x20, 0x6f, 0x72,
0x20, 0x46, 0x49, 0x54, 0x4e, 0x45, 0x53, 0x53,
0x20, 0x46, 0x4f, 0x52, 0x20, 0x41, 0x20, 0x50,
0x41, 0x52, 0x54, 0x49, 0x43, 0x55, 0x4c, 0x41,
0x52, 0x20, 0x50, 0x55, 0x52, 0x50, 0x4f, 0x53,
0x45, 0x2e, 0x20, 0x53, 0x65, 0x65, 0x20, 0x74,
0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x47, 0x4e,
0x55, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
0x6c, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65,
0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72,
0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
0x73, 0x2e, 0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a,
0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c,
0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61,
0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20,
0x61, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x65,
0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x61, 0x73,
0x20, 0x70, 0x65, 0x72, 0x20, 0x53, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x37, 0x20, 0x6f,
0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x3a, 0x0a, 0x20,
0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x54, 0x68, 0x65,
0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6c, 0x65, 0x67,
0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x63,
0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x20, 0x61, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x2a,
0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x74,
0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x6f, 0x72,
0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20,
0x41, 0x70, 0x70, 0x72, 0x6f, 0x70, 0x72, 0x69,
0x61, 0x74, 0x65, 0x20, 0x4c, 0x65, 0x67, 0x61,
0x6c, 0x20, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x73, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
0x79, 0x65, 0x64, 0x0a, 0x20, 0x2a, 0x20, 0x62,
0x79, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20,
0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69,
0x6e, 0x67, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73,
0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
0x64, 0x2e, 0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a,
0x20, 0x59, 0x6f, 0x75, 0x20, 0x73, 0x68, 0x6f,
0x75, 0x6c, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65,
0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x64, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x70, 0x79,
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
0x47, 0x4e, 0x55, 0x20, 0x47, 0x65, 0x6e, 0x65,
0x72, 0x61, 0x6c, 0x20, 0x50, 0x75, 0x62, 0x6c,
0x69, 0x63, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x61, 0x6c,
0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68,
0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x6d,
0x2d, 0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x32,
0x2d, 0x67, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72,
0x3b, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74,
0x2c, 0x20, 0x73, 0x65, 0x65, 0x20, 0x3c, 0x68,
0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
0x77, 0x2e, 0x67, 0x6e, 0x75, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x73, 0x2f, 0x3e, 0x2e, 0x0a, 0x20, 0x2a,
0x2f, 0x0a, 0x0a, 0x0a, 0x2f, 0x2a, 0x2a, 0x0a,
0x20, 0x2a, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x6c,
0x65, 0x74, 0x6f, 0x6e, 0x20, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74,
0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x65, 0x74,
0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65,
0x20, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
0x61, 0x74, 0x2e, 0x0a, 0x20, 0x2a, 0x0a, 0x20,
0x2a, 0x20, 0x4f, 0x6e, 0x63, 0x65, 0x20, 0x69,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61,
0x74, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65,
0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62,
0x65, 0x67, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x68,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20,
0x67, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x0a,
0x20, 0x2a, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79,
0x20, 0x35, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
0x64, 0x73, 0x2e, 0x20, 0x55, 0x70, 0x6f, 0x6e,
0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x69,
0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66,
0x69, 0x72, 0x73, 0x74, 0x20, 0x68, 0x65, 0x61,
0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x20, 0x6d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c, 0x20,
0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x65,
0x74, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6c, 0x6c,
0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73,
0x0a, 0x20, 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x65,
0x6e, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68,
0x61, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65,
0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x68, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x20,
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x63,
0x65, 0x69, 0x76, 0x65, 0x64, 0x2e, 0x0a, 0x20,
0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x49, 0x66, 0x20,
0x61, 0x20, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62,
0x65, 0x61, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6e,
0x6f, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74,
0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
0x61, 0x6e, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74,
0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x65, 0x74,
0x65, 0x72, 0x27, 0x73, 0x0a, 0x20, 0x2a, 0x20,
0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65,
0x6e, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b,
0x73, 0x20, 0x72, 0x75, 0x6e, 0x2c, 0x20, 0x69,
0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61,
0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x74, 0x68,
0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65,
0x6e, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68,
0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x27,
0x73, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x0a, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x65, 0x63,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e,
0x64, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x20, 0x62,
0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x74,
0x68, 0x65, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c,
0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x2e,
0x0a, 0x20, 0x2a, 0x2f, 0x0a, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x44, 0x4d, 0x47, 0x72, 0x65, 0x65, 0x74, 0x65,
0x72, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
0x61, 0x74, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e,
0x64, 0x73, 0x20, 0x41, 0x75, 0x74, 0x6f, 0x42,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x20, 0x7b, 0x0a, 0x0a,
0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75,
0x63, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x20, 0x7b,
0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x20,
0x27, 0x5f, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74,
0x62, 0x65, 0x61, 0x74, 0x27, 0x20, 0x69, 0x6e,
0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20,
0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x5f,
0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x0a,
0x09, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72, 0x28,
0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x77, 0x69,
0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x5f, 0x5f, 0x68,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
0x20, 0x3d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x3b,
0x0a, 0x09, 0x09, 0x74, 0x68, 0x69, 0x73, 0x2e,
0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x20, 0x3d, 0x20, 0x27, 0x27, 0x3b, 0x0a,
0x09, 0x09, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x68,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x0a,
0x09, 0x09, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x69,
0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a,
0x65, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f,
0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x28, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x0a,
0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x74, 0x68, 0x65,
0x6d, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74,
0x62, 0x65, 0x61, 0x74, 0x28, 0x29, 0x20, 0x7b,
0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x20,
0x27, 0x27, 0x20, 0x21, 0x3d, 0x3d, 0x20, 0x74,
0x68, 0x69, 0x73, 0x2e, 0x68, 0x65, 0x61, 0x72,
0x74, 0x62, 0x65, 0x61, 0x74, 0x20, 0x29, 0x20,
0x7b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e,
0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67,
0x28, 0x20, 0x27, 0x48, 0x65, 0x61, 0x72, 0x74,
0x62, 0x65, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73,
0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79,
0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x69, 0x6e,
0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
0x64, 0x21, 0x27, 0x20, 0x29, 0x3b, 0x0a, 0x09,
0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x0a, 0x09,
0x09, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x27, 0x49, 0x6e,
0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x69,
0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65,
0x20, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
0x61, 0x74, 0x2e, 0x27, 0x29, 0x3b, 0x0a, 0x0a,
0x09, 0x09, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x73,
0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65, 0x61, 0x72,
0x74, 0x62, 0x65, 0x61, 0x74, 0x28, 0x29, 0x3b,
0x0a, 0x09, 0x09, 0x74, 0x68, 0x69, 0x73, 0x2e,
0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x49,
0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x28,
0x74, 0x68, 0x69, 0x73, 0x2e, 0x73, 0x65, 0x6e,
0x64, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62,
0x65, 0x61, 0x74, 0x2c, 0x20, 0x35, 0x30, 0x30,
0x30, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a,
0x09, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x28,
0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x2b, 0x2b,
0x74, 0x68, 0x69, 0x73, 0x2e, 0x68, 0x65, 0x61,
0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x3b,
0x0a, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28,
0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x3d, 0x3d,
0x3d, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x64,
0x6d, 0x2e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69,
0x6e, 0x67, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x09,
0x09, 0x09, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x49,
0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x28,
0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x68, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x20,
0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65,
0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x09, 0x09,
0x7d, 0x0a, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20,
0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x68,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
0x73, 0x20, 0x3c, 0x20, 0x35, 0x20, 0x29, 0x20,
0x7b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e,
0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67,
0x28, 0x27, 0x53, 0x65, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x20, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62,
0x65, 0x61, 0x74, 0x2e, 0x2e, 0x2e, 0x27, 0x29,
0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x0a, 0x09,
0x09, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e,
0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x2e, 0x6d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x61,
0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x2e, 0x47,
0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x42, 0x72,
0x69, 0x64, 0x67, 0x65, 0x2e, 0x70, 0x6f, 0x73,
0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x28, 0x27, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62,
0x65, 0x61, 0x74, 0x27, 0x29, 0x3b, 0x0a, 0x09,
0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x6e, 0x65,
0x77, 0x20, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x44,
0x4d, 0x47, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72,
0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61,
0x74, 0x28, 0x29, 0x3b, 0x0a, 0x00, 0x00, 0x28,
0x75, 0x75, 0x61, 0x79, 0x29, 0x63, 0x6f, 0x6d,
0x2f, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x6c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x6d, 0x2d,
0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x32, 0x2d,
0x67, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x2f,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x61, 0x75, 0x74, 0x6f, 0x2d, 0x62, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x2e, 0x6a, 0x73, 0x00, 0x00,
0x97, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2f, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x61, 0x75,
0x74, 0x6f, 0x2d, 0x62, 0x69, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x2d, 0x6f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x2e, 0x6a, 0x73, 0x0a, 0x20, 0x2a, 0x0a,
0x20, 0x2a, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72,
0x69, 0x67, 0x68, 0x74, 0x20, 0xc2, 0xa9, 0x20,
0x32, 0x30, 0x31, 0x36, 0x20, 0x41, 0x6e, 0x74,
0x65, 0x72, 0x67, 0x6f, 0x73, 0x20, 0x44, 0x65,
0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73,
0x20, 0x3c, 0x64, 0x65, 0x76, 0x40, 0x61, 0x6e,
0x74, 0x65, 0x72, 0x67, 0x6f, 0x73, 0x2e, 0x63,
0x6f, 0x6d, 0x3e, 0x0a, 0x20, 0x2a, 0x0a, 0x20,
0x2a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66,
0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70,
0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6c,
0x69, 0x67, 0x68, 0x74, 0x64, 0x6d, 0x2d, 0x77,
0x65, 0x62, 0x6b, 0x69, 0x74, 0x32, 0x2d, 0x67,
0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x2e, 0x0a,
0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x6c, 0x69,
0x67, 0x68, 0x74, 0x64, 0x6d, 0x2d, 0x77, 0x65,
0x62, 0x6b, 0x69, 0x74, 0x32, 0x2d, 0x67, 0x72,
0x65, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73,
0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x73, 0x6f,
0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x3b, 0x20,
0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20,
0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x20, 0x69, 0x74, 0x20,
0x61, 0x6e, 0x64, 0x2f, 0x6f, 0x72, 0x20, 0x6d,
0x6f, 0x64, 0x69, 0x66, 0x79, 0x0a, 0x20, 0x2a,
0x20, 0x69, 0x74, 0x20, 0x75, 0x6e, 0x64, 0x65,
0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65,
0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74,
0x68, 0x65, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x47,
0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x50,
0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69,
0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x61, 0x73,
0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
0x65, 0x64, 0x20, 0x62, 0x79, 0x0a, 0x20, 0x2a,
0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x72, 0x65,
0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
0x72, 0x65, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x20, 0x65,
0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x20,
0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c,
0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2c, 0x20,
0x6f, 0x72, 0x0a, 0x20, 0x2a, 0x20, 0x28, 0x61,
0x74, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x61,
0x6e, 0x79, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72,
0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x2e, 0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20,
0x6c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x6d, 0x2d,
0x77, 0x65, 0x62, 0x6b, 0x69, 0x74, 0x32, 0x2d,
0x67, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x20,
0x69, 0x73, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x69,
0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x6f,
0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20,
0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75,
0x6c, 0x2c, 0x0a, 0x20, 0x2a, 0x20, 0x62, 0x75,
0x74, 0x20, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55,
0x54, 0x20, 0x41, 0x4e, 0x59, 0x20, 0x57, 0x41,
0x52, 0x52, 0x41, 0x4e, 0x54, 0x59, 0x3b, 0x20,
0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20,
0x65, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65,
0x20, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x65, 0x64,
0x20, 0x77, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x74,
0x79, 0x20, 0x6f, 0x66, 0x0a, 0x20, 0x2a, 0x20,
0x4d, 0x45, 0x52, 0x43, 0x48, 0x41, 0x4e, 0x54,
0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x20,
0x6f, 0x72, 0x20, 0x46, 0x49, 0x54, 0x4e, 0x45,
0x53, 0x53, 0x20, 0x46, 0x4f, 0x52, 0x20, 0x41,
0x20, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x55,
0x4c, 0x41, 0x52, 0x20, 0x50, 0x55, 0x52, 0x50,
0x4f, 0x53, 0x45, 0x2e, 0x20, 0x53, 0x65, 0x65,
0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20,
0x47, 0x4e, 0x55, 0x20, 0x47, 0x65, 0x6e, 0x65,
0x72, 0x61, 0x6c, 0x20, 0x50, 0x75, 0x62, 0x6c,
0x69, 0x63, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d,
0x6f, 0x72, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x73, 0x2e, 0x0a, 0x20, 0x2a, 0x0a,
0x20, 0x2a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66,
0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67,
0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x61, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d,
0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6e,
0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20,
0x61, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x53,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x37,
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x3a,
0x0a, 0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x54,
0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65,
0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6c,
0x65, 0x67, 0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64,
0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x20,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x0a,
0x20, 0x2a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d,
0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x20,
0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68,
0x65, 0x20, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x70,
0x72, 0x69, 0x61, 0x74, 0x65, 0x20, 0x4c, 0x65,
0x67, 0x61, 0x6c, 0x20, 0x4e, 0x6f, 0x74, 0x69,
0x63, 0x65, 0x73, 0x20, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x65, 0x64, 0x0a, 0x20, 0x2a,
0x20, 0x62, 0x79, 0x20, 0x77, 0x6f, 0x72, 0x6b,
0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
0x6e, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, 0x20,
0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
0x72, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x2a, 0x0a,
0x20, 0x2a, 0x20, 0x59, 0x6f, 0x75, 0x20, 0x73,
0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x68, 0x61,
0x76, 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x20, 0x61, 0x20, 0x63, 0x6f,
0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
0x65, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x47, 0x65,
0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x50, 0x75,
0x62, 0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x0a, 0x20, 0x2a, 0x20,
0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69,
0x74, 0x68, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x64, 0x6d, 0x2d, 0x77, 0x65, 0x62, 0x6b, 0x69,
0x74, 0x32, 0x2d, 0x67, 0x72, 0x65, 0x65, 0x74,
0x65, 0x72, 0x3b, 0x20, 0x49, 0x66, 0x20, 0x6e,
0x6f, 0x74, 0x2c, 0x20, 0x73, 0x65, 0x65, 0x20,
0x3c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
0x77, 0x77, 0x77, 0x2e, 0x67, 0x6e, 0x75, 0x2e,
0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x69, 0x63, 0x65,
0x6e, 0x73, 0x65, 0x73, 0x2f, 0x3e, 0x2e, 0x0a,
0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x0a, 0x2f, 0x2a,
0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x47, 0x65, 0x6e,
0x65, 0x72, 0x69, 0x63, 0x20, 0x62, 0x61, 0x73,
0x65, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20,
0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x75, 0x74,
0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c,
0x6c, 0x79, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x73,
0x20, 0x60, 0x74, 0x68, 0x69, 0x73, 0x60, 0x20,
0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20,
0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20,
0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x6d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x73, 0x2e, 0x0a, 0x20,
0x2a, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20,
0x6d, 0x61, 0x64, 0x65, 0x20, 0x61, 0x76, 0x61,
0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69,
0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6c,
0x6f, 0x62, 0x61, 0x6c, 0x20, 0x73, 0x63, 0x6f,
0x70, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63,
0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73,
0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x67, 0x72,
0x65, 0x65, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68,
0x65, 0x6d, 0x65, 0x73, 0x20, 0x69, 0x66, 0x20,
0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2f, 0x77,
0x61, 0x6e, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x20,
0x2a, 0x2f, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73,
0x20, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x4f, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x20, 0x7b, 0x0a, 0x09, 0x2f, 0x2a,
0x2a, 0x0a, 0x09, 0x20, 0x2a, 0x20, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20,
0x6e, 0x65, 0x77, 0x20, 0x7b, 0x40, 0x6c, 0x69,
0x6e, 0x6b, 0x20, 0x41, 0x75, 0x74, 0x6f, 0x42,
0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x7d, 0x20, 0x69, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x0a,
0x09, 0x20, 0x2a, 0x2f, 0x0a, 0x09, 0x63, 0x6f,
0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f,
0x72, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09,
0x74, 0x68, 0x69, 0x73, 0x2e, 0x5f, 0x5f, 0x62,
0x69, 0x6e, 0x64, 0x5f, 0x74, 0x68, 0x69, 0x73,
0x28, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a,
0x09, 0x2f, 0x2a, 0x2a, 0x0a, 0x09, 0x20, 0x2a,
0x20, 0x42, 0x69, 0x6e, 0x64, 0x73, 0x20, 0x60,
0x74, 0x68, 0x69, 0x73, 0x60, 0x20, 0x74, 0x6f,
0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61,
0x6c, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73,
0x2e, 0x0a, 0x09, 0x20, 0x2a, 0x0a, 0x09, 0x20,
0x2a, 0x20, 0x40, 0x70, 0x72, 0x69, 0x76, 0x61,
0x74, 0x65, 0x0a, 0x09, 0x20, 0x2a, 0x2f, 0x0a,
0x09, 0x5f, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f,
0x74, 0x68, 0x69, 0x73, 0x28, 0x29, 0x20, 0x7b,
0x0a, 0x09, 0x09, 0x6c, 0x65, 0x74, 0x20, 0x65,
0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x20,
0x3d, 0x20, 0x5b, 0x27, 0x63, 0x6f, 0x6e, 0x73,
0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x27,
0x2c, 0x20, 0x27, 0x5f, 0x5f, 0x62, 0x69, 0x6e,
0x64, 0x5f, 0x74, 0x68, 0x69, 0x73, 0x27, 0x5d,
0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x66, 0x75, 0x6e,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x6f,
0x74, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
0x65, 0x64, 0x28, 0x20, 0x6d, 0x65, 0x74, 0x68,
0x6f, 0x64, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x0a,
0x09, 0x09, 0x09, 0x6c, 0x65, 0x74, 0x20, 0x5f,
0x69, 0x73, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75,
0x64, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x65, 0x78,
0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x6d,
0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x2e, 0x66,
0x69, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x28, 0x20, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f,
0x64, 0x20, 0x3d, 0x3e, 0x20, 0x6d, 0x65, 0x74,
0x68, 0x6f, 0x64, 0x20, 0x3d, 0x3d, 0x3d, 0x20,
0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64,
0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20,
0x29, 0x20, 0x3e, 0x20, 0x2d, 0x31, 0x2c, 0x0a,
0x09, 0x09, 0x09, 0x09, 0x69, 0x73, 0x5f, 0x6d,
0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x3d, 0x20,
0x27, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x27, 0x20, 0x3d, 0x3d, 0x3d, 0x20, 0x74,
0x79, 0x70, 0x65, 0x6f, 0x66, 0x20, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x78, 0x74, 0x5b, 0x6d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x5d, 0x3b, 0x0a, 0x0a,
0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72,
0x6e, 0x20, 0x69, 0x73, 0x5f, 0x6d, 0x65, 0x74,
0x68, 0x6f, 0x64, 0x20, 0x26, 0x26, 0x20, 0x21,
0x5f, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x63, 0x6c,
0x75, 0x64, 0x65, 0x64, 0x3b, 0x0a, 0x09, 0x09,
0x7d, 0x0a, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72,
0x20, 0x28, 0x20, 0x6c, 0x65, 0x74, 0x20, 0x6f,
0x62, 0x6a, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x69,
0x73, 0x3b, 0x20, 0x6f, 0x62, 0x6a, 0x3b, 0x20,
0x6f, 0x62, 0x6a, 0x20, 0x3d, 0x20, 0x4f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x65, 0x74,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x74, 0x79, 0x70,
0x65, 0x4f, 0x66, 0x28, 0x20, 0x6f, 0x62, 0x6a,
0x20, 0x29, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x09,
0x09, 0x09, 0x2f, 0x2f, 0x20, 0x48, 0x61, 0x6e,
0x64, 0x6c, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
0x20, 0x6f, 0x75, 0x72, 0x20, 0x6d, 0x65, 0x74,
0x68, 0x6f, 0x64, 0x73, 0x0a, 0x09, 0x09, 0x09,
0x69, 0x66, 0x20, 0x28, 0x20, 0x27, 0x4f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x27, 0x20, 0x3d, 0x3d,
0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x2e, 0x63, 0x6f,
0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f,
0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x29,
0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62,
0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x09,
0x09, 0x7d, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x66,
0x6f, 0x72, 0x20, 0x28, 0x20, 0x6c, 0x65, 0x74,
0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20,
0x6f, 0x66, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x2e, 0x67, 0x65, 0x74, 0x4f, 0x77, 0x6e,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x28, 0x20, 0x6f,
0x62, 0x6a, 0x20, 0x29, 0x20, 0x29, 0x20, 0x7b,
0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20,
0x28, 0x20, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78,
0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x28, 0x20,
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x2c, 0x20,
0x74, 0x68, 0x69, 0x73, 0x20, 0x29, 0x20, 0x29,
0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09,
0x74, 0x68, 0x69, 0x73, 0x5b, 0x6d, 0x65, 0x74,
0x68, 0x6f, 0x64, 0x5d, 0x20, 0x3d, 0x20, 0x74,
0x68, 0x69, 0x73, 0x5b, 0x6d, 0x65, 0x74, 0x68,
0x6f, 0x64, 0x5d, 0x2e, 0x62, 0x69, 0x6e, 0x64,
0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x29,
0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0a,
0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d,
0x0a, 0x0a, 0x09, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a,
0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e,
0x41, 0x75, 0x74, 0x6f, 0x42, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x20, 0x3d, 0x20, 0x41, 0x75, 0x74, 0x6f,
0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x3b, 0x0a, 0x00,
0x00, 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, 0x61,
0x6e, 0x74, 0x65, 0x72, 0x67, 0x6f, 0x73, 0x2f,
0x03, 0x00, 0x00, 0x00, 0x73, 0x74, 0x79, 0x6c,
0x65, 0x2e, 0x63, 0x73, 0x73, 0x00, 0x00, 0x00,
0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2c, 0x0a,
0x47, 0x74, 0x6b, 0x57, 0x69, 0x6e, 0x64, 0x6f,
0x77, 0x20, 0x7b, 0x0a, 0x09, 0x62, 0x61, 0x63,
0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3a,
0x20, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x3b, 0x0a, 0x7d, 0x0a, 0x00, 0x00, 0x28, 0x75,
0x75, 0x61, 0x79, 0x29, 0x2f, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x63, 0x73, 0x73, 0x2f,
0x06, 0x00, 0x00, 0x00
} };
static GStaticResource static_resource = { greeter_resources_resource_data.data, sizeof (greeter_resources_resource_data.data), NULL, NULL, NULL };
extern GResource *greeter_resources_get_resource (void);
GResource *greeter_resources_get_resource (void)
{
return g_static_resource_get_resource (&static_resource);
}
/*
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
destructors, in a sane 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 */
#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 Win32 (x86) and x64 programs, as symbols on Win32 are prefixed
* with an underscore but symbols on x64 are not.
*/
#ifdef _WIN64
#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__ */
#ifdef G_HAS_CONSTRUCTORS
#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(resource_constructor)
#endif
G_DEFINE_CONSTRUCTOR(resource_constructor)
#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA
#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(resource_destructor)
#endif
G_DEFINE_DESTRUCTOR(resource_destructor)
#else
#warning "Constructor not supported on this compiler, linking in resources will not work"
#endif
static void resource_constructor (void)
{
g_static_resource_init (&static_resource);
}
static void resource_destructor (void)
{
g_static_resource_fini (&static_resource);
}

4
src/gresource/greeter-resources.gresource.xml

@ -2,8 +2,8 @@
<gresources> <gresources>
<gresource prefix="/com/antergos/lightdm-webkit2-greeter/"> <gresource prefix="/com/antergos/lightdm-webkit2-greeter/">
<file>css/style.css</file> <file>css/style.css</file>
<file>js/heartbeat.js</file> <file>js/ThemeHeartbeat.js</file>
<file>js/auto-binding-object.js</file> <file>js/ThemeUtils.js</file>
</gresource> </gresource>
</gresources> </gresources>

7
src/gresource/greeter-resources.h

@ -1,7 +0,0 @@
#ifndef __RESOURCE_greeter_resources_H__
#define __RESOURCE_greeter_resources_H__
#include <gio/gio.h>
extern GResource *greeter_resources_get_resource (void);
#endif

6
src/gresource/js/heartbeat.js → src/gresource/js/ThemeHeartbeat.js

@ -37,14 +37,14 @@
* subsequent checks run, it will assume that there has been an error in the theme's script * subsequent checks run, it will assume that there has been an error in the theme's script
* execution and fall back to the simple theme. * execution and fall back to the simple theme.
*/ */
class GreeterHeartbeat { class ThemeHeartbeat {
constructor() { constructor() {
if ( '__heartbeat' in window ) { if ( '__heartbeat' in window ) {
return __heartbeat; return __heartbeat;
} }
window.__heartbeat = GreeterUtils.bind_this(this); window.__heartbeat = theme_utils.bind_this(this);
this.heartbeat = ''; this.heartbeat = '';
this.heartbeats = 0; this.heartbeats = 0;
@ -82,4 +82,4 @@ class GreeterHeartbeat {
} }
new GreeterHeartbeat(); new ThemeHeartbeat();

13
src/gresource/js/GreeterUtils.js → src/gresource/js/ThemeUtils.js

@ -30,15 +30,15 @@
/** /**
* Provides various utility methods and can be used by greeter themes if needed. * Provides various utility methods and can be used by greeter themes if needed.
*/ */
class GreeterUtils { class ThemeUtils extends __ThemeUtils {
/** /**
* Binds `this` to `context` for all of a class's methods. * Binds `this` to class, `context`, for all of the class's methods.
* *
* @arg {function(new:*): Object} context An ES6 class (not an instance) with at least one method. * @arg {function(new:*): Object} context An ES6 class (not an instance) with at least one method.
* *
* @return {Object} `context` with `this` bound to it for all of its methods. * @return {function(new:*): Object} `context` with `this` bound to it for all of its methods.
*/ */
static bind_this( context ) { bind_this( context ) {
let excluded_methods = ['constructor']; let excluded_methods = ['constructor'];
function not_excluded( _method, _context ) { function not_excluded( _method, _context ) {
@ -63,5 +63,8 @@ class GreeterUtils {
} }
} }
window.theme_utils = new ThemeUtils();
window.GreeterUtils = GreeterUtils; /* -------->>> DEPRECATED! <<<-------- */
window.greeterutil = window.theme_utils;
/* -------->>> DEPRECATED! <<<-------- */

186
src/gresource/js/WK2Greeter.js

@ -1,186 +0,0 @@
/*
* WK2Greeter.js
*
* Copyright © 2016 Antergos Developers <dev@antergos.com>
*
* This file is part of lightdm-webkit2-greeter.
*
* lightdm-webkit2-greeter is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* lightdm-webkit2-greeter is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* The following additional terms are in effect as per Section 7 of the license:
*
* The preservation of all legal notices and author attributions in
* the material or in the Appropriate Legal Notices displayed
* by works containing it is required.
*
* You should have received a copy of the GNU General Public License
* along with lightdm-webkit2-greeter; If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @memberOf LightDM
*/
class WK2Greeter extends LightDMGreeter {
constructor( bridge ) {
if ( 'lightdm' in window ) {
return window.lightdm;
}
super();
window.lightdm = GreeterUtils.bind_this( this );
this.bridge = bridge;
return window.lightdm;
}
get authentication_user() {
return this.bridge.get_string( 'authentication_user' );
}
get autologin_guest() {
return this.bridge.get_bool( 'autologin_guest' );
}
get autologin_timeout() {
return this.bridge.get_num( 'autologin_timeout' );
}
get autologin_user() {
return this.bridge.get_string( 'autologin_user' );
}
get can_hibernate() {
return this.bridge.get_bool( 'can_hibernate' );
}
get can_restart() {
return this.bridge.get_bool( 'can_restart' );
}
get can_shutdown() {
return this.bridge.get_bool( 'can_shutdown' );
}
get can_suspend() {
return this.bridge.get_bool( 'can_suspend' );
}
get default_session() {
return this.bridge.get_string( 'default_session' );
}
get has_guest_account() {
return this.bridge.get_bool( 'has_guest_account' );
}
get hide_users() {
return this.bridge.get_bool( 'hide_users' );
}
get hostname() {
return this.bridge.get_string( 'hostname' );
}
get in_authentication() {
return this.bridge.get_bool( 'in_authentication' );
}
get is_authenticated() {
return this.bridge.get_bool( 'is_authenticated' );
}
get language() {
return this.bridge.get_object( 'language' );
}
get languages() {
return this.bridge.get_objects( 'languages' );
}
get layout() {
return this.bridge.get_object( 'layout' );
}
set layout( value ) {
this._layout = value;
}
get layouts() {
return this.bridge.get_objects( 'layouts' );
}
get lock_hint() {
return this.bridge.get_bool( 'lock_hint' );
}
get num_users() {
return this.users.length;
}
get select_guest_hint() {
return this.bridge.get_bool( 'select_guest_hint' );
}
get select_user_hint() {
return this.bridge.get_string( 'select_user_hint' );
}
get sessions() {
return this.bridge.get_objects( 'sessions' );
}
get users() {
return this.bridge.get_objects( 'users' );
}
authenticate( username = null ) {}
authenticate_as_guest() {}
cancel_authentication() {}
cancel_autologin() {}
get_hint( name ) {}
hibernate() {
return this._do_mocked_system_action('hibernate');
}
respond( response ) {}
restart() {
return this._do_mocked_system_action('restart');
}
set_language( language ) {}
shutdown() {
return this._do_mocked_system_action('shutdown');
}
start_session( session ) {}
suspend() {
return this._do_mocked_system_action('suspend');
}
}
window.WK2Greeter = WK2Greeter;

303
src/gresource/js/base/LightDMGreeter.js

@ -1,303 +0,0 @@
/*
* LightDMGreeter.js
*
* Copyright © 2016 Antergos Developers <dev@antergos.com>
*
* This file is part of lightdm-webkit2-greeter.
*
* lightdm-webkit2-greeter is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* lightdm-webkit2-greeter is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* The following additional terms are in effect as per Section 7 of the license:
*
* The preservation of all legal notices and author attributions in
* the material or in the Appropriate Legal Notices displayed
* by works containing it is required.
*
* You should have received a copy of the GNU General Public License
* along with lightdm-webkit2-greeter; If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Base class for the greeter's JavaScript Theme API. Greeter themes will interact
* directly with an object derived from this class to facilitate the user log-in process.
* The greeter will automatically create an instance when it starts.
* The instance can be accessed using the global variable: `lightdm`.
* @memberOf LightDM
*/
class LightDMGreeter {
constructor() {
if ( 'lightdm' in window ) {
return window.lightdm;
}
window.lightdm = GreeterUtils.bind_this( this );
return window.lightdm;
}
/**
* The username of the user being authenticated or {@link null}
* if there is no authentication in progress.
* @type {String|null}
* @readonly
*/
get authentication_user() {}
/**
* Whether or not the guest account should be automatically logged
* into when the timer expires.
* @type {Boolean}
* @readonly
*/
get autologin_guest() {}
/**
* The number of seconds to wait before automatically logging in.
* @type {Number}
* @readonly
*/
get autologin_timeout() {}
/**
* The username with which to automatically log in when the timer expires.
* @type {String}
* @readonly
*/
get autologin_user() {}
/**
* Whether or not the greeter can make the system hibernate.
* @type {Boolean}
* @readonly
*/
get can_hibernate() {}
/**
* Whether or not the greeter can make the system restart.
* @type {Boolean}
* @readonly
*/
get can_restart() {}
/**
* Whether or not the greeter can make the system shutdown.
* @type {Boolean}
* @readonly
*/
get can_shutdown() {}
/**
* Whether or not the greeter can make the system suspend/sleep.
* @type {Boolean}
* @readonly
*/
get can_suspend() {}
/**
* The name of the default session.
* @type {String}
* @readonly
*/
get default_session() {}
/**
* Whether or not guest sessions are supported.
* @type {Boolean}
* @readonly
*/
get has_guest_account() {}
/**
* Whether or not user accounts should be hidden.
* @type {Boolean}
* @readonly
*/
get hide_users() {}
/**
* The system's hostname.
* @type {String}
* @readonly
*/
get hostname() {}
/**
* Whether or not the greeter is in the process of authenticating.
* @type {Boolean}
* @readonly
*/
get in_authentication() {}
/**
* Whether or not the greeter has successfully authenticated.
* @type {Boolean}
* @readonly
*/
get is_authenticated() {}
/**
* The current language or {@link null} if no language.
* @type {LightDMLanguage|null}
* @readonly
*/
get language() {}
/**
* A list of languages to present to the user.
* @type {LightDMLanguage[]}
* @readonly
*/
get languages() {}
/**
* The currently active layout for the selected user.
* @type {LightDMLayout}
*/
get layout() {}
set layout( value ) {}
/**
* A list of keyboard layouts to present to the user.
* @type {LightDMLayout[]}
* @readonly
*/
get layouts() {}
/**
* Whether or not the greeter was started as a lock screen.
* @type {Boolean}
* @readonly
*/
get lock_hint() {}
/**
* The number of users able to log in.
* @type {Number}
* @readonly
*/
get num_users() {
return this.users.length;
}
/**
* Whether or not the guest account should be selected by default.
* @type {Boolean}
* @readonly
*/
get select_guest_hint() {}
/**
* The username to select by default.
* @type {String}
* @readonly
*/
get select_user_hint() {}
/**
* List of available sessions.
* @type {LightDMSession[]}
* @readonly
*/
get sessions() {}
/**
* List of available users.
* @type {LightDMUser[]}
* @readonly
*/
get users() {}
/**
* Starts the authentication procedure for a user.
*
* @arg {String|null} username A username or {@link null} to prompt for a username.
*/
authenticate( username = null ) {}
/**
* Starts the authentication procedure for the guest user.
*/
authenticate_as_guest() {}
/**
* Cancel the user authentication that is currently in progress.
*/
cancel_authentication() {}
/**
* Cancel the automatic login.
*/
cancel_autologin() {}
/**
* Get the value of a hint.
* @arg {String} name The name of the hint to get.
* @returns {String|Boolean|Number|null}
*/
get_hint( name ) {}
/**
* Triggers the system to hibernate.
* @returns {Boolean} {@link true} if hibernation initiated, otherwise {@link false}
*/
hibernate() {
return this._do_mocked_system_action('hibernate');
}
/**
* Provide a response to a prompt.
* @arg {*} response
*/
respond( response ) {}
/**
* Triggers the system to restart.
* @returns {Boolean} {@link true} if restart initiated, otherwise {@link false}
*/
restart() {
return this._do_mocked_system_action('restart');
}
/**
* Set the language for the currently authenticated user.
* @arg {String} language The language in the form of a locale specification (e.g. 'de_DE.UTF-8')
* @returns {Boolean} {@link true} if successful, otherwise {@link false}
*/
set_language( language ) {}
/**
* Triggers the system to shutdown.
* @returns {Boolean} {@link true} if shutdown initiated, otherwise {@link false}
*/
shutdown() {}
/**
* Start a session for the authenticated user.
* @arg {String|null} session The session to log into or {@link null} to use the default.
* @returns {Boolean} {@link true} if successful, otherwise {@link false}
*/
start_session( session ) {}
/**
* Triggers the system to suspend/sleep.
* @returns {Boolean} {@link true} if suspend/sleep initiated, otherwise {@link false}
*/
suspend() {}
}
window.LightDMGreeter = LightDMGreeter;

43
src/gresource/js/proxy.js

@ -1,43 +0,0 @@
/*
* proxy.js
*
* Copyright © 2016 Antergos Developers <dev@antergos.com>
*
* This file is part of lightdm-webkit2-greeter.
*
* lightdm-webkit2-greeter is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* lightdm-webkit2-greeter is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* The following additional terms are in effect as per Section 7 of the license:
*
* The preservation of all legal notices and author attributions in
* the material or in the Appropriate Legal Notices displayed
* by works containing it is required.
*
* You should have received a copy of the GNU General Public License
* along with lightdm-webkit2-greeter; If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Factory function for creating proxy objects.
*
* @arg {Object} target The object to proxy.
* @arg {Object} handler The handler for `target`.
*
* @return {Object} An proxy object for `target`.
*/
let create_proxy = ( target, handler ) => {
};

7
src/gresource/meson.build

@ -1,7 +0,0 @@
# =============================== #
# ------->>> GRESOURCE <<<------- #
# =============================== #
gresource_headers = ['greeter-resources.h']
install_headers(gresource_headers, subdir : 'lightdm-webkit2-greeter')

34
src/meson.build

@ -1,11 +1,24 @@
configure_file(output: 'config.h', configuration: conf) configure_file(output: 'config.h', configuration: conf)
gresource_sources = include_directories('gresource') with_webext_dir = get_option('with-webext-dir').split('"')
_ = get_option('with-webext-dir').split('"') extdir = with_webext_dir[0]
extdir = _[0]
# ================================ #
# ------->>> GResources <<<------- #
# ================================ #
gresources_dir = include_directories('gresource')
gnome = import('gnome')
gresources = gnome.compile_resources(
'greeter-resources',
'gresource/greeter-resources.gresource.xml',
source_dir : 'gresource',
c_name : 'greeter_resources'
)
# ======================================= # # ======================================= #
# ------->>> Webkit2 Extension <<<------- # # ------->>> WebKit2 Extension <<<------- #
# ======================================= # # ======================================= #
webext_sources = ['webkit2-extension.c'] webext_sources = ['webkit2-extension.c']
@ -23,23 +36,12 @@ webext = library(
# ------->>> Greeter <<<------- # # ------->>> Greeter <<<------- #
# ============================= # # ============================= #
greeter_sources = ['gresource/greeter-resources.c', 'greeter.c'] greeter_sources = [gresources, 'greeter.c']
greeter = executable( greeter = executable(
'lightdm-webkit2-greeter', 'lightdm-webkit2-greeter',
greeter_sources, greeter_sources,
dependencies: greeter_deps, dependencies: greeter_deps,
include_directories : gresource_sources,
install: true install: true
) )
# ===================================== #
# ------->>> Sub Directories <<<------- #
# ===================================== #
subdirs = ['gresource']
foreach s : subdirs
subdir(s)
endforeach

22
src/webkit2-extension.c

@ -1495,7 +1495,7 @@ static const JSStaticFunction config_file_functions[] = {
{NULL, NULL, 0}}; {NULL, NULL, 0}};
static const JSStaticFunction greeter_util_functions[] = { static const JSStaticFunction theme_utils_functions[] = {
{"dirlist", get_dirlist_cb, kJSPropertyAttributeReadOnly}, {"dirlist", get_dirlist_cb, kJSPropertyAttributeReadOnly},
{"txt2html", txt2html_cb, kJSPropertyAttributeReadOnly}, {"txt2html", txt2html_cb, kJSPropertyAttributeReadOnly},
{NULL, NULL, 0}}; {NULL, NULL, 0}};
@ -1560,13 +1560,13 @@ static const JSClassDefinition config_file_definition = {
config_file_functions, /* Static functions */ config_file_functions, /* Static functions */
}; };
static const JSClassDefinition greeter_util_definition = { static const JSClassDefinition theme_utils_definition = {
0, /* Version */ 0, /* Version */
kJSClassAttributeNone, /* Attributes */ kJSClassAttributeNone, /* Attributes */
"GreeterUtil", /* Class name */ "__ThemeUtils", /* Class name */
NULL, /* Parent class */ NULL, /* Parent class */
NULL, /* Static values */ NULL, /* Static values */
greeter_util_functions, /* Static functions */ theme_utils_functions, /* Static functions */
}; };
@ -1584,7 +1584,7 @@ window_object_cleared_callback(WebKitScriptWorld *world,
JSObjectRef gettext_object, JSObjectRef gettext_object,
lightdm_greeter_object, lightdm_greeter_object,
config_file_object, config_file_object,
greeter_util_object, theme_utils_object,
globalObject; globalObject;
gchar *lock_hint_message = "LockHint"; gchar *lock_hint_message = "LockHint";
@ -1600,7 +1600,7 @@ window_object_cleared_callback(WebKitScriptWorld *world,
lightdm_layout_class = JSClassCreate(&lightdm_layout_definition); lightdm_layout_class = JSClassCreate(&lightdm_layout_definition);
lightdm_session_class = JSClassCreate(&lightdm_session_definition); lightdm_session_class = JSClassCreate(&lightdm_session_definition);
config_file_class = JSClassCreate(&config_file_definition); config_file_class = JSClassCreate(&config_file_definition);
greeter_util_class = JSClassCreate(&greeter_util_definition); greeter_util_class = JSClassCreate(&theme_utils_definition);
gettext_object = JSObjectMake(jsContext, gettext_class, NULL); gettext_object = JSObjectMake(jsContext, gettext_class, NULL);
JSObjectSetProperty(jsContext, JSObjectSetProperty(jsContext,
@ -1626,18 +1626,14 @@ window_object_cleared_callback(WebKitScriptWorld *world,
kJSPropertyAttributeNone, kJSPropertyAttributeNone,
NULL); NULL);
greeter_util_object = JSObjectMake(jsContext, greeter_util_class, NULL); theme_utils_object = JSObjectMake(jsContext, greeter_util_class, NULL);
JSObjectSetProperty(jsContext, JSObjectSetProperty(jsContext,
globalObject, globalObject,
JSStringCreateWithUTF8CString("greeter_util"), JSStringCreateWithUTF8CString("__ThemeUtils"),
greeter_util_object, theme_utils_object,
kJSPropertyAttributeNone, kJSPropertyAttributeNone,
NULL); NULL);
/* Keep previous variable name for backwards compatibility. Will remove at later date. */
command = JSStringCreateWithUTF8CString("window.greeterutil = greeter_util;");
JSEvaluateScript(jsContext, command, NULL, NULL, 0, NULL);
dom_document = webkit_web_page_get_dom_document(web_page); dom_document = webkit_web_page_get_dom_document(web_page);
dom_window = webkit_dom_document_get_default_view(dom_document); dom_window = webkit_dom_document_get_default_view(dom_document);

Loading…
Cancel
Save