diff options
605 files changed, 1144 insertions, 19620 deletions
diff --git a/agl-layers-overview.md b/agl-layers-overview.md index 409eae529..e84f875bf 100755 --- a/agl-layers-overview.md +++ b/agl-layers-overview.md @@ -14,7 +14,6 @@ This section provides information about the layers used by the AGL Project: * **`meta-agl`**: Minimal set of software needed to create an AGL distribution used to boot a system. - AGL profiles are built on top of this minimal set of software. * **`meta-agl-demo`**: Provides a reference or demo platform and applications for the AGL Distribution. diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend b/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend deleted file mode 100644 index eda8de38a..000000000 --- a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -# This patch correct a bug in libva1_1.7.0.bb 1.8 inmeta-intel (no clue when it will be fixed) -# libva.bb calls for an x11 runtime dependency even if wayland is selected -# -RDEPENDS_${PN}-egl_remove = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "${PN}-x11", d)}" diff --git a/meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend b/meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend deleted file mode 100644 index 285847295..000000000 --- a/meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend +++ /dev/null @@ -1 +0,0 @@ -PARALLEL_MAKE = "" diff --git a/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend new file mode 100644 index 000000000..3d5903d85 --- /dev/null +++ b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_agl.inc index 8ac343aa3..8ac343aa3 100644 --- a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/mesa/mesa_%.bbappend +++ b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_agl.inc diff --git a/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend new file mode 100644 index 000000000..3d5903d85 --- /dev/null +++ b/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_agl.inc index 9aaea5f69..9aaea5f69 100644 --- a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston_%.bbappend +++ b/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_agl.inc diff --git a/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_%.bbappend index e97b8f9d1..3d5903d85 100644 --- a/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_%.bbappend +++ b/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_%.bbappend @@ -1,17 +1 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:" - -# Extra configuration options for the QEMU kernel -SRC_URI += "file://hciattach.cfg \ - file://virtio.cfg \ - " - -# Enable some things on qemuarm64 so MOST drivers will build and load. -SRC_URI_append_qemuarm64 = " file://most_deps.cfg" - -# Configuration for using the virt machine (and not versatilepb) -SRC_URI_append_qemuarm = " file://qemuarm.cfg" - -# Build a generic v7 kernel instead of the arm926j one that upstream -# qemuarm defaults to. -KBUILD_DEFCONFIG_qemuarm = "multi_v7_defconfig" -KCONFIG_MODE = "--alldefconfig" +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} diff --git a/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc b/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc new file mode 100644 index 000000000..30e656b17 --- /dev/null +++ b/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc @@ -0,0 +1,21 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:" + + +require recipes-kernel/linux/linux-agl.inc + +# Extra configuration options for the QEMU kernel +SRC_URI += "file://hciattach.cfg \ + file://virtio.cfg \ + " + +# Enable some things on qemuarm64 so MOST drivers will build and load. +SRC_URI_append_qemuarm64 = " file://most_deps.cfg" + +# Configuration for using the virt machine (and not versatilepb) +SRC_URI_append_qemuarm = " file://qemuarm.cfg" + +# Build a generic v7 kernel instead of the arm926j one that upstream +# qemuarm defaults to. +KBUILD_DEFCONFIG_qemuarm = "multi_v7_defconfig" +KCONFIG_MODE = "--alldefconfig" + diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend b/meta-agl-bsp/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend index f78e0b5eb..238dd1643 100644 --- a/meta-agl-bsp/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend +++ b/meta-agl-bsp/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend @@ -20,7 +20,7 @@ CMDLINE_append = ' ${@bb.utils.contains('AGL_XEN_WANTED','1','modprobe.blacklist CMDLINE_append = " usbhid.mousepoll=0" # Add options to allow CMA to operate -CMDLINE_append = ' ${@oe.utils.conditional("ENABLE_CMA", "1", "coherent_pool=6M smsc95xx.turbo_mode=N", "", d)}' +CMDLINE_append = '${@oe.utils.conditional("ENABLE_CMA", "1", " coherent_pool=6M smsc95xx.turbo_mode=N", "", d)}' KERNEL_MODULE_AUTOLOAD += "snd-bcm2835" KERNEL_MODULE_AUTOLOAD += "hid-multitouch" diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch deleted file mode 100644 index 5172fdd3a..000000000 --- a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch +++ /dev/null @@ -1,41 +0,0 @@ -From ebb26338d0c2f436a86fd4d7cb8d723a90d6a369 Mon Sep 17 00:00:00 2001 -From: Anton Gerasimov <anton@advancedtelematic.com> -Date: Thu, 15 Sep 2016 17:52:41 +0200 -Subject: [PATCH 1/2] Set up environment for OSTree integration - ---- - include/configs/qemu-x86.h | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h -index 78c296f..79df455 100644 ---- a/include/configs/qemu-x86.h -+++ b/include/configs/qemu-x86.h -@@ -74,4 +74,24 @@ - #undef CONFIG_ENV_IS_IN_SPI_FLASH - #define CONFIG_ENV_IS_NOWHERE - -+#undef CONFIG_BOOTARGS -+#define CONFIG_BOOTARGS "root=/dev/hda2 console=ttyS0" -+ -+#undef CONFIG_BOOTDELAY -+#define CONFIG_BOOTDELAY 3 -+ -+#undef CONFIG_BOOTCOMMAND -+#define CONFIG_BOOTCOMMAND "run loadenv;" \ -+ "setenv bootargs $bootargs\" console=ttyS0 root=/dev/ram0 rw rootfstype=ext4 rootwait rootdelay=2 ostree_root=/dev/hda ramdisk_size=16384 \";" \ -+ "ext2load ide 0 $loadaddr \"/boot\"$kernel_image;" \ -+ "ext2load ide 0 $ramdiskaddr \"/boot\"$ramdisk_image;" \ -+ "zboot $loadaddr - $ramdiskaddr $filesize" -+ -+#undef CONFIG_EXTRA_ENV_SETTINGS -+#define CONFIG_EXTRA_ENV_SETTINGS "kernel_image=/bzImage\0" \ -+ "ramdisk_image=/initrd\0" \ -+ "ramdiskaddr=0x4000000\0" \ -+ "bootdelay=3\0" \ -+ "loadenv=if ext2load ide 0 $loadaddr /boot/loader/uEnv.txt; then env import -t $loadaddr $filesize; fi;" -+ - #endif /* __CONFIG_H */ --- -2.9.3 - diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch deleted file mode 100644 index df1f786c6..000000000 --- a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch +++ /dev/null @@ -1,86 +0,0 @@ -From ba619c7ec7820e80d1b5b520440fdb81c31c0baf Mon Sep 17 00:00:00 2001 -From: Ronan Le Martret <ronan.lemartret@iot.bzh> -Date: Fri, 14 Oct 2016 09:03:11 +0200 -Subject: [PATCH] fix gcc6 build - -Signed-off-by: ronan <ronan@linux-pgnz.suse> ---- - include/linux/compiler-gcc6.h | 66 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 66 insertions(+) - create mode 100644 include/linux/compiler-gcc6.h - -diff --git a/include/linux/compiler-gcc6.h b/include/linux/compiler-gcc6.h -new file mode 100644 -index 0000000..a3d00d8 ---- /dev/null -+++ b/include/linux/compiler-gcc6.h -@@ -0,0 +1,66 @@ -+#ifndef __LINUX_COMPILER_H -+#error "Please don't include <linux/compiler-gcc6.h> directly, include <linux/compiler.h> instead." -+#endif -+ -+#define __used __attribute__((__used__)) -+#define __must_check __attribute__((warn_unused_result)) -+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) -+ -+/* Mark functions as cold. gcc will assume any path leading to a call -+ to them will be unlikely. This means a lot of manual unlikely()s -+ are unnecessary now for any paths leading to the usual suspects -+ like BUG(), printk(), panic() etc. [but let's keep them for now for -+ older compilers] -+ -+ Early snapshots of gcc 4.3 don't support this and we can't detect this -+ in the preprocessor, but we can live with this because they're unreleased. -+ Maketime probing would be overkill here. -+ -+ gcc also has a __attribute__((__hot__)) to move hot functions into -+ a special section, but I don't see any sense in this right now in -+ the kernel context */ -+#define __cold __attribute__((__cold__)) -+ -+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) -+ -+#ifndef __CHECKER__ -+# define __compiletime_warning(message) __attribute__((warning(message))) -+# define __compiletime_error(message) __attribute__((error(message))) -+#endif /* __CHECKER__ */ -+ -+/* -+ * Mark a position in code as unreachable. This can be used to -+ * suppress control flow warnings after asm blocks that transfer -+ * control elsewhere. -+ * -+ * Early snapshots of gcc 4.5 don't support this and we can't detect -+ * this in the preprocessor, but we can live with this because they're -+ * unreleased. Really, we need to have autoconf for the kernel. -+ */ -+#define unreachable() __builtin_unreachable() -+ -+/* Mark a function definition as prohibited from being cloned. */ -+#define __noclone __attribute__((__noclone__)) -+ -+/* -+ * Tell the optimizer that something else uses this function or variable. -+ */ -+#define __visible __attribute__((externally_visible)) -+ -+/* -+ * GCC 'asm goto' miscompiles certain code sequences: -+ * -+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 -+ * -+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. -+ * Fixed in GCC 4.8.2 and later versions. -+ * -+ * (asm goto is automatically volatile - the naming reflects this.) -+ */ -+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) -+ -+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP -+#define __HAVE_BUILTIN_BSWAP32__ -+#define __HAVE_BUILTIN_BSWAP64__ -+#define __HAVE_BUILTIN_BSWAP16__ -+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ --- -2.6.6 - diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch deleted file mode 100644 index 7540b7467..000000000 --- a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch +++ /dev/null @@ -1,138 +0,0 @@ -From ab0d7e270d89f6eb99582197d2d58bf60c9c3d26 Mon Sep 17 00:00:00 2001 -From: Anton Gerasimov <anton@advancedtelematic.com> -Date: Thu, 15 Sep 2016 16:49:32 +0200 -Subject: [PATCH 2/2] Replace wraps with built-in code to remove dependency on - multilib - ---- - arch/x86/config.mk | 2 -- - arch/x86/lib/gcc.c | 104 ++++++++++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 87 insertions(+), 19 deletions(-) - -diff --git a/arch/x86/config.mk b/arch/x86/config.mk -index 999143e..139576e 100644 ---- a/arch/x86/config.mk -+++ b/arch/x86/config.mk -@@ -22,5 +22,3 @@ PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden - PLATFORM_LDFLAGS += --emit-relocs -Bsymbolic -Bsymbolic-functions -m elf_i386 - - LDFLAGS_FINAL += --gc-sections -pie --LDFLAGS_FINAL += --wrap=__divdi3 --wrap=__udivdi3 --LDFLAGS_FINAL += --wrap=__moddi3 --wrap=__umoddi3 -diff --git a/arch/x86/lib/gcc.c b/arch/x86/lib/gcc.c -index 497ad75..c321b11 100644 ---- a/arch/x86/lib/gcc.c -+++ b/arch/x86/lib/gcc.c -@@ -19,22 +19,92 @@ - - #ifdef __GNUC__ - --/* -- * GCC's libgcc handling is quite broken. While the libgcc functions -- * are always regparm(0) the code that calls them uses whatever the -- * compiler call specifies. Therefore we need a wrapper around those -- * functions. See gcc bug PR41055 for more information. -- */ --#define WRAP_LIBGCC_CALL(type, name) \ -- type __normal_##name(type a, type b) __attribute__((regparm(0))); \ -- type __wrap_##name(type a, type b); \ -- type __attribute__((no_instrument_function)) \ -- __wrap_##name(type a, type b) \ -- { return __normal_##name(a, b); } -- --WRAP_LIBGCC_CALL(long long, __divdi3) --WRAP_LIBGCC_CALL(unsigned long long, __udivdi3) --WRAP_LIBGCC_CALL(long long, __moddi3) --WRAP_LIBGCC_CALL(unsigned long long, __umoddi3) -+#include <stdint.h> -+#include <stddef.h> -+ -+uint64_t __udivmoddi4 ( uint64_t num, -+ uint64_t den, -+ uint64_t *rem_p ) -+{ -+ uint64_t quot = 0, qbit = 1; -+ -+ if ( den == 0 ) { -+ return 1/((unsigned)den); /* Intentional divide by zero, without -+ triggering a compiler warning which -+ would abort the build */ -+ } -+ -+ /* Left-justify denominator and count shift */ -+ while ( (int64_t)den >= 0 ) { -+ den <<= 1; -+ qbit <<= 1; -+ } -+ -+ while ( qbit ) { -+ if ( den <= num ) { -+ num -= den; -+ quot += qbit; -+ } -+ den >>= 1; -+ qbit >>= 1; -+ } -+ -+ if ( rem_p ) -+ *rem_p = num; -+ -+ return quot; -+} -+uint64_t __udivdi3( uint64_t num, uint64_t den ) -+{ -+ return __udivmoddi4(num, den, NULL); -+} -+ -+uint64_t __umoddi3 ( uint64_t num, uint64_t den ) -+{ -+ uint64_t v; -+ -+ (void) __udivmoddi4(num, den, &v); -+ return v; -+} -+ -+int64_t __divmoddi4 ( int64_t num, -+ int64_t den, -+ int64_t* rem_p ) -+{ -+ int minus = 0; -+ int64_t v; -+ -+ if ( num < 0 ) { -+ num = -num; -+ minus = 1; -+ } -+ if ( den < 0 ) { -+ den = -den; -+ minus ^= 1; -+ } -+ -+ v = __udivmoddi4(num, den, (uint64_t *)rem_p); -+ if ( minus ) { -+ v = -v; -+ if ( rem_p ) -+ *rem_p = -(*rem_p); -+ } -+ -+ return v; -+} -+ -+ -+int64_t __moddi3 (int64_t num, int64_t den) -+{ -+ int64_t v; -+ -+ (void) __divmoddi4(num, den, &v); -+ return v; -+} -+ -+int64_t __divdi3(int64_t num, int64_t den) -+{ -+ return __divmoddi4(num, den, NULL); -+} - - #endif --- -2.9.3 - diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch deleted file mode 100644 index fc7933ea0..000000000 --- a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch +++ /dev/null @@ -1,101 +0,0 @@ -From eea58226f0b604d3047c495985197113838d3a7a Mon Sep 17 00:00:00 2001 -From: Trevor Woerner <twoerner@gmail.com> -Date: Tue, 20 Jun 2017 13:25:20 -0400 -Subject: [PATCH] fix build for gcc7 - -| In file included from .../include/linux/compiler.h:54:0, -| from .../include/uapi/linux/stddef.h:1, -| from .../include/linux/stddef.h:4, -| from .../include/uapi/linux/posix_types.h:4, -| from .../include/uapi/linux/types.h:13, -| from .../include/linux/types.h:5, -| from .../include/linux/mod_devicetable.h:11, -| from .../scripts/mod/devicetable-offsets.c:2: -| .../include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h: No such file or directory -| #include gcc_header(__GNUC__) - -Upstream-Status: Pending - -Signed-off-by: Trevor Woerner <twoerner@gmail.com> -Signed-off-by: Fabio Berton <fabio.berton@gmail.com> -Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> ---- - include/linux/compiler-gcc7.h | 66 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 66 insertions(+) - create mode 100644 include/linux/compiler-gcc7.h - -diff --git a/include/linux/compiler-gcc7.h b/include/linux/compiler-gcc7.h -new file mode 100644 -index 0000000..cdd1cc2 ---- /dev/null -+++ b/include/linux/compiler-gcc7.h -@@ -0,0 +1,66 @@ -+#ifndef __LINUX_COMPILER_H -+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead." -+#endif -+ -+#define __used __attribute__((__used__)) -+#define __must_check __attribute__((warn_unused_result)) -+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) -+ -+/* Mark functions as cold. gcc will assume any path leading to a call -+ to them will be unlikely. This means a lot of manual unlikely()s -+ are unnecessary now for any paths leading to the usual suspects -+ like BUG(), printk(), panic() etc. [but let's keep them for now for -+ older compilers] -+ -+ Early snapshots of gcc 4.3 don't support this and we can't detect this -+ in the preprocessor, but we can live with this because they're unreleased. -+ Maketime probing would be overkill here. -+ -+ gcc also has a __attribute__((__hot__)) to move hot functions into -+ a special section, but I don't see any sense in this right now in -+ the kernel context */ -+#define __cold __attribute__((__cold__)) -+ -+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) -+ -+#ifndef __CHECKER__ -+# define __compiletime_warning(message) __attribute__((warning(message))) -+# define __compiletime_error(message) __attribute__((error(message))) -+#endif /* __CHECKER__ */ -+ -+/* -+ * Mark a position in code as unreachable. This can be used to -+ * suppress control flow warnings after asm blocks that transfer -+ * control elsewhere. -+ * -+ * Early snapshots of gcc 4.5 don't support this and we can't detect -+ * this in the preprocessor, but we can live with this because they're -+ * unreleased. Really, we need to have autoconf for the kernel. -+ */ -+#define unreachable() __builtin_unreachable() -+ -+/* Mark a function definition as prohibited from being cloned. */ -+#define __noclone __attribute__((__noclone__)) -+ -+/* -+ * Tell the optimizer that something else uses this function or variable. -+ */ -+#define __visible __attribute__((externally_visible)) -+ -+/* -+ * GCC 'asm goto' miscompiles certain code sequences: -+ * -+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 -+ * -+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. -+ * Fixed in GCC 4.8.2 and later versions. -+ * -+ * (asm goto is automatically volatile - the naming reflects this.) -+ */ -+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) -+ -+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP -+#define __HAVE_BUILTIN_BSWAP32__ -+#define __HAVE_BUILTIN_BSWAP64__ -+#define __HAVE_BUILTIN_BSWAP16__ -+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ --- -2.7.4 - diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb deleted file mode 100644 index 7ef3cacd4..000000000 --- a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb +++ /dev/null @@ -1,29 +0,0 @@ -include recipes-bsp/u-boot/u-boot.inc -DEPENDS += "dtc-native" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://Licenses/README;md5=0507cd7da8e7ad6d6701926ec9b84c95" - -# This revision corresponds to the tag "v2015.07" -# We use the revision in order to avoid having to fetch it from the -# repo during parse -SRCREV = "baba2f57e8f4ed3fa67fe213d22da0de5e00f204" - -SRC_URI = "\ - git://git.denx.de/u-boot.git;branch=master \ - file://0001-Set-up-environment-for-OSTree-integration.patch \ - file://0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch \ - file://0001-fixup-build-with-gcc6.patch \ - file://0002-fixup-build-with-gcc7.patch \ -" -S = "${WORKDIR}/git" - -PV = "v2015.07+git${SRCPV}" - -EXTRA_OEMAKE_append = " KCFLAGS=-fgnu89-inline " -EXTRA_OEMAKE_append_qemux86 = " BUILD_ROM=y" -EXTRA_OEMAKE_append_qemux86-64 = " BUILD_ROM=y" - -UBOOT_SUFFIX = "bin" -UBOOT_SUFFIX_qemux86 = "rom" -UBOOT_SUFFIX_qemux86-64 = "rom" diff --git a/meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch b/meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch deleted file mode 100644 index 2ad367c8d..000000000 --- a/meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/modules/videoio/src/cap_v4l.cpp b/modules/videoio/src/cap_v4l.cpp -index c36a619a56..0040e4574e 100644 ---- a/modules/videoio/src/cap_v4l.cpp -+++ b/modules/videoio/src/cap_v4l.cpp -@@ -256,7 +256,7 @@ make & enjoy! - #define DEFAULT_V4L_HEIGHT 480 - #define DEFAULT_V4L_FPS 30 - --#define MAX_CAMERAS 8 -+#define MAX_CAMERAS 16 - - // default and maximum number of V4L buffers, not including last, 'special' buffer - #define MAX_V4L_BUFFERS 10 diff --git a/meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend b/meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend deleted file mode 100644 index 8a68b0641..000000000 --- a/meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI += " \ - file://0004-Change-Max-Device-Count-To-16.patch \ - " diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend deleted file mode 100644 index 671fa171f..000000000 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", "file://remote-output.cfg", "",d)}" diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend deleted file mode 100644 index 386112024..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -require linux-agl.inc diff --git a/meta-agl-profile-core/recipes-connectivity/connman/.appends.core b/meta-agl-core-test/conf/include/agl-test.inc index e69de29bb..e69de29bb 100644 --- a/meta-agl-profile-core/recipes-connectivity/connman/.appends.core +++ b/meta-agl-core-test/conf/include/agl-test.inc diff --git a/meta-agl-core-test/conf/layer.conf b/meta-agl-core-test/conf/layer.conf new file mode 100644 index 000000000..2ce0c18f1 --- /dev/null +++ b/meta-agl-core-test/conf/layer.conf @@ -0,0 +1,14 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglcoretest" +BBFILE_PATTERN_aglcoretest = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglcoretest = "60" + +LAYERSERIES_COMPAT_aglcoretest = "dunfell" +LAYERDEPENDS_aglcoretest = "core aglcore" +LAYERDEPENDS_aglcoretest += "openembedded-layer" diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb b/meta-agl-core-test/images/agl-image-minimal-qa.bb index b162f2904..b162f2904 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb +++ b/meta-agl-core-test/images/agl-image-minimal-qa.bb diff --git a/meta-agl-profile-core/recipes-test/aiostress/aiostress_0.22.bb b/meta-agl-core-test/recipes-test/aiostress/aiostress_0.22.bb index 7803d74ed..7803d74ed 100644 --- a/meta-agl-profile-core/recipes-test/aiostress/aiostress_0.22.bb +++ b/meta-agl-core-test/recipes-test/aiostress/aiostress_0.22.bb diff --git a/meta-agl-profile-core/recipes-test/dung/dung_3.4.25-m2.bb b/meta-agl-core-test/recipes-test/dung/dung_3.4.25-m2.bb index 28bf858a0..28bf858a0 100644 --- a/meta-agl-profile-core/recipes-test/dung/dung_3.4.25-m2.bb +++ b/meta-agl-core-test/recipes-test/dung/dung_3.4.25-m2.bb diff --git a/meta-agl-profile-core/recipes-test/ebizzy/ebizzy_0.3.bb b/meta-agl-core-test/recipes-test/ebizzy/ebizzy_0.3.bb index 08b0425c0..08b0425c0 100644 --- a/meta-agl-profile-core/recipes-test/ebizzy/ebizzy_0.3.bb +++ b/meta-agl-core-test/recipes-test/ebizzy/ebizzy_0.3.bb diff --git a/meta-agl-profile-core/recipes-test/ffsb/ffsb_6.0-rc2.bb b/meta-agl-core-test/recipes-test/ffsb/ffsb_6.0-rc2.bb index 66db133e3..66db133e3 100644 --- a/meta-agl-profile-core/recipes-test/ffsb/ffsb_6.0-rc2.bb +++ b/meta-agl-core-test/recipes-test/ffsb/ffsb_6.0-rc2.bb diff --git a/meta-agl-profile-core/recipes-test/fontconfig/fontconfig_%.bbappend b/meta-agl-core-test/recipes-test/fontconfig/fontconfig_%.bbappend index e8ce1ab78..e8ce1ab78 100644 --- a/meta-agl-profile-core/recipes-test/fontconfig/fontconfig_%.bbappend +++ b/meta-agl-core-test/recipes-test/fontconfig/fontconfig_%.bbappend diff --git a/meta-agl-profile-core/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch b/meta-agl-core-test/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch index 4d0d09aea..4d0d09aea 100644 --- a/meta-agl-profile-core/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch +++ b/meta-agl-core-test/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch diff --git a/meta-agl-profile-core/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch b/meta-agl-core-test/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch index 7803ad7e0..7803ad7e0 100644 --- a/meta-agl-profile-core/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch +++ b/meta-agl-core-test/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch diff --git a/meta-agl-profile-core/recipes-test/freetype/freetype_2.%.bbappend b/meta-agl-core-test/recipes-test/freetype/freetype_2.%.bbappend index 6aa1eabc2..6aa1eabc2 100644 --- a/meta-agl-profile-core/recipes-test/freetype/freetype_2.%.bbappend +++ b/meta-agl-core-test/recipes-test/freetype/freetype_2.%.bbappend diff --git a/meta-agl-profile-core/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch b/meta-agl-core-test/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch index e834becf3..e834becf3 100644 --- a/meta-agl-profile-core/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch +++ b/meta-agl-core-test/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch diff --git a/meta-agl-profile-core/recipes-test/fsfuzzer/fsfuzzer_0.7.bb b/meta-agl-core-test/recipes-test/fsfuzzer/fsfuzzer_0.7.bb index d2ddb59b1..d2ddb59b1 100644 --- a/meta-agl-profile-core/recipes-test/fsfuzzer/fsfuzzer_0.7.bb +++ b/meta-agl-core-test/recipes-test/fsfuzzer/fsfuzzer_0.7.bb diff --git a/meta-agl-profile-core/recipes-test/glmark2/glmark2_%.bbappend b/meta-agl-core-test/recipes-test/glmark2/glmark2_%.bbappendNOT index 403aedd4c..403aedd4c 100644 --- a/meta-agl-profile-core/recipes-test/glmark2/glmark2_%.bbappend +++ b/meta-agl-core-test/recipes-test/glmark2/glmark2_%.bbappendNOT diff --git a/meta-agl-profile-core/recipes-test/himeno/himeno_2.0.bb b/meta-agl-core-test/recipes-test/himeno/himeno_2.0.bb index f890e23a4..f890e23a4 100644 --- a/meta-agl-profile-core/recipes-test/himeno/himeno_2.0.bb +++ b/meta-agl-core-test/recipes-test/himeno/himeno_2.0.bb diff --git a/meta-agl-profile-core/recipes-test/interbench/files/interbench.c.patch b/meta-agl-core-test/recipes-test/interbench/files/interbench.c.patch index c882739ba..c882739ba 100644 --- a/meta-agl-profile-core/recipes-test/interbench/files/interbench.c.patch +++ b/meta-agl-core-test/recipes-test/interbench/files/interbench.c.patch diff --git a/meta-agl-profile-core/recipes-test/interbench/interbench_0.31.bb b/meta-agl-core-test/recipes-test/interbench/interbench_0.31.bb index 3e6490374..3e6490374 100644 --- a/meta-agl-profile-core/recipes-test/interbench/interbench_0.31.bb +++ b/meta-agl-core-test/recipes-test/interbench/interbench_0.31.bb diff --git a/meta-agl-profile-core/recipes-test/ipv6connect/ipv6connect.bb b/meta-agl-core-test/recipes-test/ipv6connect/ipv6connect.bb index a8b93716a..a8b93716a 100644 --- a/meta-agl-profile-core/recipes-test/ipv6connect/ipv6connect.bb +++ b/meta-agl-core-test/recipes-test/ipv6connect/ipv6connect.bb diff --git a/meta-agl-profile-core/recipes-test/linpack/linpack.bb b/meta-agl-core-test/recipes-test/linpack/linpack.bb index 84bed0ff6..84bed0ff6 100644 --- a/meta-agl-profile-core/recipes-test/linpack/linpack.bb +++ b/meta-agl-core-test/recipes-test/linpack/linpack.bb diff --git a/meta-agl-profile-core/recipes-test/linus-stress/linus-stress.bb b/meta-agl-core-test/recipes-test/linus-stress/linus-stress.bb index 01b3cfce5..01b3cfce5 100644 --- a/meta-agl-profile-core/recipes-test/linus-stress/linus-stress.bb +++ b/meta-agl-core-test/recipes-test/linus-stress/linus-stress.bb diff --git a/meta-agl-profile-core/recipes-test/packagegroups/packagegroup-agl-test.bb b/meta-agl-core-test/recipes-test/packagegroups/packagegroup-agl-test.bb index 48301078e..f3b2c4ff9 100644 --- a/meta-agl-profile-core/recipes-test/packagegroups/packagegroup-agl-test.bb +++ b/meta-agl-core-test/recipes-test/packagegroups/packagegroup-agl-test.bb @@ -15,44 +15,53 @@ ALLOW_EMPTY_${PN} = "1" RDEPENDS_${PN} += "\ bc \ - dbench \ ebizzy \ evtest \ ffsb \ glmark2 \ interbench \ - iozone3 \ - iperf3 \ ipv6connect \ linpack \ linus-stress \ - lmbench \ - nbench-byte \ nmap \ rt-tests \ stress \ " + + + + + # to be added, but needs LICENSE_FLAGS_WHITELIST="non-commercial" -# netperf +# netperf # meta-networking + +# relocate due to dependencies +# iperf3 \ # meta-oe +# lmbench \ # meta-oe +# dbench \ # meta-oe +# nbench-byte \ # meta-oe +# iozone3 \ # meta-oe +# # FTBS, SPEC-316 -# himeno +# himeno # nowhere # FTBS, SPEC-1384 -# trinity +# trinity # meta-linaro (1.5) # packagegroup-agl-test-ltp \ -# ltp \ +# ltp \ # ltp in oe-core # # Packages for shell commands which are required by LTP # readelf, logrotate, vsftpd, crontab, sar, arp, ftp, # host, rcp, rlogin, rsh, tcpdump, expect, iptables, dnsmasq, # pgrep -RDEPENDS_packagegroup-agl-test-ltp += " \ - initscripts-functions bind-utils binutils \ - cronie dnsmasq expect inetutils-ftp inetutils-rsh \ - iptables logrotate net-tools sysstat tcpdump vsftpd \ - " +RDEPENDS_packagegroup-agl-test-ltp = "" +#RDEPENDS_packagegroup-agl-test-ltp += " \ +# initscripts-functions bind-utils binutils \ +# cronie dnsmasq expect inetutils-ftp inetutils-rsh \ +# iptables logrotate net-tools sysstat tcpdump vsftpd \ +# " RDEPENDS_packagegroup-ivi-common-test = " \ packagegroup-agl-test \ diff --git a/meta-agl-profile-core/recipes-test/trinity/trinity_git.bb b/meta-agl-core-test/recipes-test/trinity/trinity_git.bb index f0f09a855..f0f09a855 100644 --- a/meta-agl-profile-core/recipes-test/trinity/trinity_git.bb +++ b/meta-agl-core-test/recipes-test/trinity/trinity_git.bb diff --git a/meta-agl-distro/LICENSE b/meta-agl-core/LICENSE index e8758f89c..e8758f89c 100644 --- a/meta-agl-distro/LICENSE +++ b/meta-agl-core/LICENSE diff --git a/meta-agl-distro/LICENSE.GPL-2.0-only b/meta-agl-core/LICENSE.GPL-2.0-only index 5db3c0a21..5db3c0a21 100644 --- a/meta-agl-distro/LICENSE.GPL-2.0-only +++ b/meta-agl-core/LICENSE.GPL-2.0-only diff --git a/meta-agl-distro/LICENSE.MIT b/meta-agl-core/LICENSE.MIT index a6919eb7e..a6919eb7e 100644 --- a/meta-agl-distro/LICENSE.MIT +++ b/meta-agl-core/LICENSE.MIT diff --git a/meta-agl-core/README b/meta-agl-core/README new file mode 120000 index 000000000..4a7a1a175 --- /dev/null +++ b/meta-agl-core/README @@ -0,0 +1 @@ +README-AGL.md
\ No newline at end of file diff --git a/meta-agl-core/README-AGL.md b/meta-agl-core/README-AGL.md new file mode 100644 index 000000000..c7fc029e7 --- /dev/null +++ b/meta-agl-core/README-AGL.md @@ -0,0 +1,21 @@ +Overview +======== + +The +[AGL Project](https://www.automotivelinux.org/) is an automotive-specific +development environment that provides a Linux distribution +[AGL UCB](https://www.automotivelinux.org/software/unified-code-base). + +AGL uses layers designed to be compatible with the +[Yocto Project](https://www.yoctoproject.org) and the +[OpenEmbedded Project (OE)](https://www.openembedded.org/wiki/Main_Page). + +This section provides information about the layers used by the AGL Project: + +* **`meta-agl/meta-agl-core`**: Minimal set of software needed to create an AGL distribution + used to boot a system. + AGL profiles are built on top of this minimal set of software. + + ``` + $ git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl + ``` diff --git a/meta-agl-profile-core/classes/cloc.bbclass b/meta-agl-core/classes/cloc.bbclass index 9b73704e8..9b73704e8 100644 --- a/meta-agl-profile-core/classes/cloc.bbclass +++ b/meta-agl-core/classes/cloc.bbclass diff --git a/meta-agl-core/classes/sanity-meta-agl-core.bbclass b/meta-agl-core/classes/sanity-meta-agl-core.bbclass new file mode 100644 index 000000000..93df587f4 --- /dev/null +++ b/meta-agl-core/classes/sanity-meta-agl-core.bbclass @@ -0,0 +1,10 @@ +addhandler aglcore_bbappend_distrocheck +aglcore_bbappend_distrocheck[eventmask] = "bb.event.SanityCheck" +python aglcore_bbappend_distrocheck() { + skip_check = e.data.getVar('SKIP_META_AGL_CORE_SANITY_CHECK') == "1" + if 'aglcore' not in e.data.getVar('AGL_FEATURES').split() and not skip_check: + bb.warn("You have included the meta-agl-core layer, but \ +'aglcore' has not been enabled in your AGL_FEATURES. Some bbappend files \ +may not take effect. See the meta-agl-core README for details on enabling \ +meta-agl-core support.") +} diff --git a/meta-agl-core/conf/bblayers.conf.sample b/meta-agl-core/conf/bblayers.conf.sample new file mode 100644 index 000000000..8b1cbdfc5 --- /dev/null +++ b/meta-agl-core/conf/bblayers.conf.sample @@ -0,0 +1,12 @@ +# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +POKY_BBLAYERS_CONF_VERSION = "2" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/meta-yocto-bsp \ + " diff --git a/meta-agl-distro/conf/distro/include/aarch64-tune.inc b/meta-agl-core/conf/distro/include/aarch64-tune.inc index 553bb5a64..553bb5a64 100644 --- a/meta-agl-distro/conf/distro/include/aarch64-tune.inc +++ b/meta-agl-core/conf/distro/include/aarch64-tune.inc diff --git a/meta-agl-distro/conf/distro/include/arc-tune.inc b/meta-agl-core/conf/distro/include/arc-tune.inc index 43dabd5a9..43dabd5a9 100644 --- a/meta-agl-distro/conf/distro/include/arc-tune.inc +++ b/meta-agl-core/conf/distro/include/arc-tune.inc diff --git a/meta-agl-distro/conf/distro/include/arm-tune.inc b/meta-agl-core/conf/distro/include/arm-tune.inc index fa68e05a7..fa68e05a7 100644 --- a/meta-agl-distro/conf/distro/include/arm-tune.inc +++ b/meta-agl-core/conf/distro/include/arm-tune.inc diff --git a/meta-agl-distro/conf/distro/include/riscv64-tune.inc b/meta-agl-core/conf/distro/include/riscv64-tune.inc index f8118dec3..f8118dec3 100644 --- a/meta-agl-distro/conf/distro/include/riscv64-tune.inc +++ b/meta-agl-core/conf/distro/include/riscv64-tune.inc diff --git a/meta-agl-distro/conf/distro/include/x86_64-tune.inc b/meta-agl-core/conf/distro/include/x86_64-tune.inc index 9f2bdc867..9f2bdc867 100644 --- a/meta-agl-distro/conf/distro/include/x86_64-tune.inc +++ b/meta-agl-core/conf/distro/include/x86_64-tune.inc diff --git a/meta-agl-distro/conf/distro/poky-agl.conf b/meta-agl-core/conf/distro/poky-agl.conf index 63a1960af..63a1960af 100644 --- a/meta-agl-distro/conf/distro/poky-agl.conf +++ b/meta-agl-core/conf/distro/poky-agl.conf diff --git a/meta-agl-profile-core/conf/include/agl-devel.inc b/meta-agl-core/conf/include/agl-devel.inc index 6ecd6a075..6ecd6a075 100644 --- a/meta-agl-profile-core/conf/include/agl-devel.inc +++ b/meta-agl-core/conf/include/agl-devel.inc diff --git a/meta-agl-profile-core/conf/include/agl-gplv2.inc b/meta-agl-core/conf/include/agl-gplv2.inc index fc9a4072b..fc9a4072b 100644 --- a/meta-agl-profile-core/conf/include/agl-gplv2.inc +++ b/meta-agl-core/conf/include/agl-gplv2.inc diff --git a/meta-agl-profile-core/conf/include/base-agl.inc b/meta-agl-core/conf/include/base-agl.inc index c5cf1a57f..5ca723a10 100644 --- a/meta-agl-profile-core/conf/include/base-agl.inc +++ b/meta-agl-core/conf/include/base-agl.inc @@ -18,3 +18,5 @@ USERADDEXTENSION = "useradd-staticids" USERADD_ERROR_DYNAMIC = "error" USERADD_GID_TABLES = "files/group" USERADD_UID_TABLES = "files/passwd" + +AGL_FEATURES += "aglcore" diff --git a/meta-agl-core/conf/layer.conf b/meta-agl-core/conf/layer.conf new file mode 100644 index 000000000..2218e3d49 --- /dev/null +++ b/meta-agl-core/conf/layer.conf @@ -0,0 +1,17 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglcore" +BBFILE_PATTERN_aglcore = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglcore = "60" + +LAYERSERIES_COMPAT_aglcore = "dunfell" +LAYERDEPENDS_aglcore = "core" + +# Sanity check for meta-virtualization layer. +# Setting SKIP_META_VIRT_SANITY_CHECK to "1" would skip the bbappend files check. +#INHERIT += "sanity-meta-agl-core" diff --git a/meta-agl-core/conf/local.conf.sample b/meta-agl-core/conf/local.conf.sample new file mode 100644 index 000000000..82c9dddc1 --- /dev/null +++ b/meta-agl-core/conf/local.conf.sample @@ -0,0 +1,277 @@ +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. More adventurous users can look at local.conf.extended +# which contains other examples of configuration which can be placed in this file +# but new users likely won't need any of them initially. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. + +# +# Machine Selection +# +# You need to select a specific machine to target the build with. There are a selection +# of emulated machines available which can boot and run in the QEMU emulator: +# +#MACHINE ?= "qemuarm" +#MACHINE ?= "qemuarm64" +#MACHINE ?= "qemumips" +#MACHINE ?= "qemumips64" +#MACHINE ?= "qemuppc" +#MACHINE ?= "qemux86" +#MACHINE ?= "qemux86-64" +# +# There are also the following hardware board target machines included for +# demonstration purposes: +# +#MACHINE ?= "beaglebone-yocto" +#MACHINE ?= "genericx86" +#MACHINE ?= "genericx86-64" +#MACHINE ?= "edgerouter" +# +# This sets the default machine to be qemux86-64 if no other machine is selected: +MACHINE ??= "qemux86-64" + +# +# Where to place downloads +# +# During a first build the system will download many different source code tarballs +# from various upstream projects. This can take a while, particularly if your network +# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you +# can preserve this directory to speed up this part of subsequent builds. This directory +# is safe to share between multiple builds on the same machine too. +# +# The default is a downloads directory under TOPDIR which is the build directory. +# +#DL_DIR ?= "${TOPDIR}/downloads" + +# +# Where to place shared-state files +# +# BitBake has the capability to accelerate builds based on previously built output. +# This is done using "shared state" files which can be thought of as cache objects +# and this option determines where those files are placed. +# +# You can wipe out TMPDIR leaving this directory intact and the build would regenerate +# from these files if no changes were made to the configuration. If changes were made +# to the configuration, only shared state files where the state was still valid would +# be used (done using checksums). +# +# The default is a sstate-cache directory under TOPDIR. +# +#SSTATE_DIR ?= "${TOPDIR}/sstate-cache" + +# +# Where to place the build output +# +# This option specifies where the bulk of the building work should be done and +# where BitBake should place its temporary files and output. Keep in mind that +# this includes the extraction and compilation of many applications and the toolchain +# which can use Gigabytes of hard disk space. +# +# The default is a tmp directory under TOPDIR. +# +#TMPDIR = "${TOPDIR}/tmp" + +# +# Default policy config +# +# The distribution setting controls which policy settings are used as defaults. +# The default value is fine for general Yocto project use, at least initially. +# Ultimately when creating custom policy, people will likely end up subclassing +# these defaults. +# +DISTRO ?= "poky" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" + +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" + +# +# SDK target architecture +# +# This variable specifies the architecture to build SDK items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686 and x86_64 +#SDKMACHINE ?= "i686" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "src-pkgs" - add -src packages for all installed packages +# (adds source code for debugging) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +# - 'image-mklibs' to reduce shared library files size for an image +# - 'image-prelink' in order to prelink the filesystem image +# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink +# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended +USER_CLASSES ?= "buildstats image-mklibs image-prelink" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. It can also +# run tests against any SDK that are built. To enable this uncomment these lines. +# See classes/test{image,sdk}.bbclass for further details. +#IMAGE_CLASSES += "testimage testsdk" +#TESTIMAGE_AUTO_qemuall = "1" + +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necesary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as http or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ +#file://.* file:///some/local/dir/sstate/PATH" + +# +# Yocto Project SState Mirror +# +# The Yocto Project has prebuilt artefacts available for its releases, you can enable +# use of these by uncommenting the following line. This will mean the build uses +# the network to check for artefacts at the start of builds, which does slow it down +# equally, it will also speed up the builds by not having to build things if they are +# present in the cache. It assumes you can download something faster than you can build it +# which will depend on your network. +# +#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH" + +# +# Qemu configuration +# +# By default native qemu will build with a builtin VNC server where graphical output can be +# seen. The line below enables the SDL UI frontend too. +PACKAGECONFIG_append_pn-qemu-system-native = " sdl" +# By default libsdl2-native will be built, if you want to use your host's libSDL instead of +# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below. +#ASSUME_PROVIDED += "libsdl2-native" + +# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds +# a handy set of menus for controlling the emulator. +#PACKAGECONFIG_append_pn-qemu-system-native = " gtk+" + +# +# Hash Equivalence +# +# Enable support for automatically running a local hash equivalence server and +# instruct bitbake to use a hash equivalence aware signature generator. Hash +# equivalence improves reuse of sstate by detecting when a given sstate +# artifact can be reused as equivalent, even if the current task hash doesn't +# match the one that generated the artifact. +# +# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format +# +#BB_HASHSERVE = "auto" +#BB_SIGNATURE_HANDLER = "OEEquivHash" + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "1" + +# meta-agl-core uses these variables +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +DISTRO_FEATURES_append = " systemd " +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# soon: INIT_MANAGER = "systemd" diff --git a/meta-agl-profile-core/files/group b/meta-agl-core/files/group index c309f6a05..c309f6a05 100644 --- a/meta-agl-profile-core/files/group +++ b/meta-agl-core/files/group diff --git a/meta-agl-profile-core/files/passwd b/meta-agl-core/files/passwd index ac70c0f9b..ac70c0f9b 100644 --- a/meta-agl-profile-core/files/passwd +++ b/meta-agl-core/files/passwd diff --git a/meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc b/meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc new file mode 100644 index 000000000..babf0261f --- /dev/null +++ b/meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI_append = " file://enable-wget-https.cfg" + diff --git a/meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg b/meta-agl-core/recipes-connectivity/busybox/files/enable-wget-https.cfg index e92006bef..e92006bef 100644 --- a/meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg +++ b/meta-agl-core/recipes-connectivity/busybox/files/enable-wget-https.cfg diff --git a/meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb index 61086dfe7..61086dfe7 100644 --- a/meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb +++ b/meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb diff --git a/meta-agl-core/recipes-connectivity/connman/connman_%.bbappend b/meta-agl-core/recipes-connectivity/connman/connman_%.bbappend new file mode 100644 index 000000000..8078f3d34 --- /dev/null +++ b/meta-agl-core/recipes-connectivity/connman/connman_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'connman_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend b/meta-agl-core/recipes-connectivity/connman/connman_aglcore.inc index 469345880..469345880 100644 --- a/meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend +++ b/meta-agl-core/recipes-connectivity/connman/connman_aglcore.inc diff --git a/meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch b/meta-agl-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch index f129a6580..f129a6580 100644 --- a/meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch +++ b/meta-agl-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch diff --git a/meta-agl-profile-core/recipes-connectivity/connman/files/main.conf b/meta-agl-core/recipes-connectivity/connman/files/main.conf index 4dba25b70..4dba25b70 100644 --- a/meta-agl-profile-core/recipes-connectivity/connman/files/main.conf +++ b/meta-agl-core/recipes-connectivity/connman/files/main.conf diff --git a/meta-agl-profile-core/recipes-core/dbus/.appends.core b/meta-agl-core/recipes-core/systemd/.appends.core index e69de29bb..e69de29bb 100644 --- a/meta-agl-profile-core/recipes-core/dbus/.appends.core +++ b/meta-agl-core/recipes-core/systemd/.appends.core diff --git a/meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd-conf_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd-conf_aglcore.inc index 6661eab6c..6661eab6c 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd-conf_%.bbappend +++ b/meta-agl-core/recipes-core/systemd/systemd-conf_aglcore.inc diff --git a/meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch b/meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch new file mode 100644 index 000000000..29165b58e --- /dev/null +++ b/meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch @@ -0,0 +1,34 @@ +Fix udevd SECLABEL token parsing + +The udevd rules parsing rewrite in v243 broke SECLABEL parsing, +with the result being that udevd crashes when it parses a line +containing a SECLABEL token. Fix the handling of the attribute +of SECLABEL tokens when parsing, and add a check to prevent +crashes if the attribute is missing. + +Upstream-Status: Pending + +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c +index efea16e5c5..3e757ccb06 100644 +--- a/src/udev/udev-rules.c ++++ b/src/udev/udev-rules.c +@@ -918,7 +918,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp + op = OP_ASSIGN; + } + +- r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, NULL); ++ r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, attr); + } else if (streq(key, "RUN")) { + if (is_match || op == OP_REMOVE) + return log_token_invalid_op(rules, key); +@@ -1927,6 +1927,8 @@ static int udev_rule_apply_token_to_event( + _cleanup_free_ char *name = NULL, *label = NULL; + char label_str[UTIL_LINE_SIZE] = {}; + ++ if (!token->data) ++ break; + name = strdup((const char*) token->data); + if (!name) + return log_oom(); diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch b/meta-agl-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch index feaff2736..feaff2736 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch +++ b/meta-agl-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd/canbus-can.network b/meta-agl-core/recipes-core/systemd/systemd/canbus-can.network index ae5514bca..ae5514bca 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd/canbus-can.network +++ b/meta-agl-core/recipes-core/systemd/systemd/canbus-can.network diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd/e2fsck.conf b/meta-agl-core/recipes-core/systemd/systemd/e2fsck.conf index b774f9ebf..b774f9ebf 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd/e2fsck.conf +++ b/meta-agl-core/recipes-core/systemd/systemd/e2fsck.conf diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd/wired.network b/meta-agl-core/recipes-core/systemd/systemd/wired.network index 3559b0155..3559b0155 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd/wired.network +++ b/meta-agl-core/recipes-core/systemd/systemd/wired.network diff --git a/meta-agl-core/recipes-core/systemd/systemd_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-core/systemd/systemd_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-core/systemd/systemd_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc index 96c4dc35c..feca107a8 100644 --- a/meta-agl-profile-core/recipes-core/systemd/systemd_%.bbappend +++ b/meta-agl-core/recipes-core/systemd/systemd_aglcore.inc @@ -1,4 +1,4 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +FILESEXTRAPATHS_prepend := "${THISDIR}/systemd:" SRC_URI += "\ file://0002-network-add-CAN-Termination-tristate-option.patch \ diff --git a/meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend b/meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-devtools/cmake/cmake_%.bbappend b/meta-agl-core/recipes-devtools/cmake/cmake_aglcore.inc index 2de1e6836..2de1e6836 100644 --- a/meta-agl-profile-core/recipes-devtools/cmake/cmake_%.bbappend +++ b/meta-agl-core/recipes-devtools/cmake/cmake_aglcore.inc diff --git a/meta-agl-profile-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh b/meta-agl-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh index 64b6cf3c6..64b6cf3c6 100644 --- a/meta-agl-profile-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh +++ b/meta-agl-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh diff --git a/meta-agl-profile-core/recipes-core/psplash/.appends.core b/meta-agl-core/recipes-devtools/gdb/.appends.core index e69de29bb..e69de29bb 100644 --- a/meta-agl-profile-core/recipes-core/psplash/.appends.core +++ b/meta-agl-core/recipes-devtools/gdb/.appends.core diff --git a/meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend b/meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-devtools/gdb/gdb_%.bbappend b/meta-agl-core/recipes-devtools/gdb/gdb_aglcore.inc index 7cba933af..7cba933af 100644 --- a/meta-agl-profile-core/recipes-devtools/gdb/gdb_%.bbappend +++ b/meta-agl-core/recipes-devtools/gdb/gdb_aglcore.inc diff --git a/meta-agl-profile-core/recipes-core/systemd/.appends.core b/meta-agl-core/recipes-extended/gperf/.appends.core index e69de29bb..e69de29bb 100644 --- a/meta-agl-profile-core/recipes-core/systemd/.appends.core +++ b/meta-agl-core/recipes-extended/gperf/.appends.core diff --git a/meta-agl-core/recipes-extended/gperf/gperf_%.bbappend b/meta-agl-core/recipes-extended/gperf/gperf_%.bbappend new file mode 100644 index 000000000..980783236 --- /dev/null +++ b/meta-agl-core/recipes-extended/gperf/gperf_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-extended/gperf/gperf_%.bbappend b/meta-agl-core/recipes-extended/gperf/gperf_aglcore.inc index 2a590838b..2a590838b 100644 --- a/meta-agl-profile-core/recipes-extended/gperf/gperf_%.bbappend +++ b/meta-agl-core/recipes-extended/gperf/gperf_aglcore.inc diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/Readme.weston-ini-conf b/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf index bbd5a80c4..bbd5a80c4 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/Readme.weston-ini-conf +++ b/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/agl-compositor_git.bb b/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb index 553f3a6bf..553f3a6bf 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/agl-compositor_git.bb +++ b/meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham-transmitter_git.bb b/meta-agl-core/recipes-graphics/wayland/waltham-transmitter_git.bb index 89d97f513..85f760709 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham-transmitter_git.bb +++ b/meta-agl-core/recipes-graphics/wayland/waltham-transmitter_git.bb @@ -4,7 +4,7 @@ HOMEPAGE = "https://github.com/waltham/waltham" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://waltham-transmitter/COPYING;md5=f21c9af4de068fb53b83f0b37d262ec3" -DEPENDS += "libdrm virtual/kernel wayland wayland-native waltham weston gstreamer1.0 gstreamer gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad wayland-ivi-extension" +DEPENDS += "libdrm virtual/kernel wayland wayland-native waltham weston gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad wayland-ivi-extension" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/weston-ivi-plugins.git;protocol=https;branch=${AGL_BRANCH}" SRCREV = "5287483228fa1e28f3217a54606cfe760c6582bd" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch b/meta-agl-core/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch index 32c2df3c4..32c2df3c4 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch +++ b/meta-agl-core/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch b/meta-agl-core/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch index 354bcbc15..354bcbc15 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch +++ b/meta-agl-core/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch b/meta-agl-core/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch index 5aefb922b..5aefb922b 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch +++ b/meta-agl-core/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham_%.bbappend b/meta-agl-core/recipes-graphics/wayland/waltham_%.bbappend index 8d0436a3b..8d0436a3b 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham_%.bbappend +++ b/meta-agl-core/recipes-graphics/wayland/waltham_%.bbappend diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham_git.bb b/meta-agl-core/recipes-graphics/wayland/waltham_git.bb index 01023a1f2..01023a1f2 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/waltham_git.bb +++ b/meta-agl-core/recipes-graphics/wayland/waltham_git.bb diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb index 14fbd0273..16c0f046d 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb @@ -7,6 +7,19 @@ SRC_URI = "file://core.cfg \ file://hdmi-a-1-270.cfg \ " +# cluster and html5-landscape +# core, shell, hdmi-a-1-180.cfg, virtual-landscape.cfg +SRC_URI_remove_landscape = " \ + file://hdmi-a-1-270.cfg \ + file://hdmi-a-1-90.cfg \ + file://virtual.cfg \ +" +SRC_URI_append_landscape = " \ + file://hdmi-a-1-180.cfg \ + file://virtual-landscape.cfg \ +" + + S = "${WORKDIR}" PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend index 4a2dc80af..179004094 100644 --- a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf.bbappend +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -1,5 +1,10 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", "file://remote-output.cfg", "",d)}" + + # For virtual machines and intel-corei7-64 we want to support both the HDMI-A-1 # and Virtual-1 outputs. This allows us to run virtual images on real hardware # and vice versa. diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/core.cfg index 90774ed79..90774ed79 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/core.cfg diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg index dffc2b6dd..dffc2b6dd 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg index 88a692a1b..88a692a1b 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg index f69a2e096..f69a2e096 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/shell.cfg index 975e539e6..975e539e6 100644 --- a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/shell.cfg diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg index 25a8fae94..25a8fae94 100644 --- a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg +++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg diff --git a/meta-agl-core/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-core/recipes-graphics/wayland/weston-init.bbappend new file mode 100644 index 000000000..c09d7ccd3 --- /dev/null +++ b/meta-agl-core/recipes-graphics/wayland/weston-init.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston-init_aglcore.inc', '', d)} diff --git a/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc new file mode 100644 index 000000000..51c59ae4d --- /dev/null +++ b/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc @@ -0,0 +1,6 @@ +do_install_append() { + # Remove upstream weston.ini to avoid conflict with weston-ini-conf package + rm -f ${D}${sysconfdir}/xdg/weston/weston.ini +} + +SYSTEMD_AUTO_ENABLE = "enable" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch index 32755c4b3..32755c4b3 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch +++ b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch index 02af7cbaf..02af7cbaf 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch +++ b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch b/meta-agl-core/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch index cb122590b..cb122590b 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch +++ b/meta-agl-core/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch diff --git a/meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend new file mode 100644 index 000000000..f627f5cb2 --- /dev/null +++ b/meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston_8.0_aglcore.inc', '', d)} diff --git a/meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc new file mode 100644 index 000000000..c2495465b --- /dev/null +++ b/meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc @@ -0,0 +1,11 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/weston" + +SRC_URI_append = "\ + file://0001-libweston-Expose-weston_output_damage-in-libweston.patch \ + file://0001-libweston-Migrate-weston_seat_init-release-to-public.patch \ + file://0005-correctly-tear-down-drm-backend.patch \ + " + +# Workaround for incorrect upstream definition +PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base" +PACKAGECONFIG_append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting', ' remoting', '', d)}" diff --git a/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend b/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend new file mode 100644 index 000000000..3d5903d85 --- /dev/null +++ b/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} diff --git a/meta-agl-bsp/recipes-kernel/linux/kernel-devsrc.bbappend b/meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc index 52fe69d24..52fe69d24 100644 --- a/meta-agl-bsp/recipes-kernel/linux/kernel-devsrc.bbappend +++ b/meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch index c595dfdf5..c595dfdf5 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch +++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch index 4100bb8fd..4100bb8fd 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch +++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch index 7c34fb306..7c34fb306 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch +++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.14.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc index 6d5c67021..6d5c67021 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.14.inc +++ b/meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.19.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc index da4e0c067..da4e0c067 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.19.inc +++ b/meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc b/meta-agl-core/recipes-kernel/linux/linux-agl.inc index cd960ef6d..cd960ef6d 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc +++ b/meta-agl-core/recipes-kernel/linux/linux-agl.inc diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg b/meta-agl-core/recipes-kernel/linux/linux/btusb.cfg index dd7c460bb..dd7c460bb 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/btusb.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/can-bus.cfg b/meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg index 2f24b7607..2f24b7607 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/can-bus.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg b/meta-agl-core/recipes-kernel/linux/linux/drm.cfg index 65fe71cd0..65fe71cd0 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/drm.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg b/meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg index de5dd8d31..de5dd8d31 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg b/meta-agl-core/recipes-kernel/linux/linux/hid.cfg index 327c753ae..327c753ae 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/hid.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/i2c-led.cfg b/meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg index 248b5118a..248b5118a 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/i2c-led.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/iiodevice.cfg b/meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg index c5b8ff35e..c5b8ff35e 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/iiodevice.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/joystick.cfg b/meta-agl-core/recipes-kernel/linux/linux/joystick.cfg index 2201bcb00..2201bcb00 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/joystick.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/joystick.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg b/meta-agl-core/recipes-kernel/linux/linux/nbd.cfg index e5d897556..e5d897556 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/nbd.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch b/meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch index 37ace5a58..37ace5a58 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch +++ b/meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/netfilter.cfg b/meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg index 34be704c1..34be704c1 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/netfilter.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/nfc.cfg b/meta-agl-core/recipes-kernel/linux/linux/nfc.cfg index 6d863a075..6d863a075 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/nfc.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/nfc.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/overlayfs.cfg b/meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg index 025118ed6..025118ed6 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/overlayfs.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/procevent.cfg b/meta-agl-core/recipes-kernel/linux/linux/procevent.cfg index 6e08c25bc..6e08c25bc 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/procevent.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/procevent.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg b/meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg index 3d44de805..3d44de805 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/rtc.cfg b/meta-agl-core/recipes-kernel/linux/linux/rtc.cfg index 2641958a0..2641958a0 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/rtc.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/rtc.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg b/meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg index d4574700a..d4574700a 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/scheddebug.cfg b/meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg index e8b09aa7c..e8b09aa7c 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/scheddebug.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/sound-hda.cfg b/meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg index 115504c39..115504c39 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/sound-hda.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/sound.cfg b/meta-agl-core/recipes-kernel/linux/linux/sound.cfg index ad34ea680..ad34ea680 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/sound.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/sound.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/systemtap.cfg b/meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg index 4886c27f1..4886c27f1 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/systemtap.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg b/meta-agl-core/recipes-kernel/linux/linux/uinput.cfg index 7996ef1dd..7996ef1dd 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/uinput.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/usb.cfg b/meta-agl-core/recipes-kernel/linux/linux/usb.cfg index 8e9e98ecb..8e9e98ecb 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/usb.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/usb.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/usbaudio.cfg b/meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg index 5961f43d3..5961f43d3 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/usbaudio.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/usbmodem.cfg b/meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg index 3ded931e5..3ded931e5 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/usbmodem.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/uvc.cfg b/meta-agl-core/recipes-kernel/linux/linux/uvc.cfg index 7c6556c11..7c6556c11 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/uvc.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/uvc.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg b/meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg index ce1eca1a7..ce1eca1a7 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/wifi.cfg b/meta-agl-core/recipes-kernel/linux/linux/wifi.cfg index 00c2e06e4..00c2e06e4 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/wifi.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/wifi.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg index d2b64de67..d2b64de67 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/x86-net-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg index 6c5b698a9..6c5b698a9 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/x86-net-devices.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/x86-security-tpm.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg index b66b1b9b1..b66b1b9b1 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/x86-security-tpm.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/x86-upsquare.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg index d2bed63fa..d2bed63fa 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/x86-upsquare.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/x86-usb-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg index 19c57796e..19c57796e 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/x86-usb-devices.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/xen_domu.cfg b/meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg index 8bc59eb1e..8bc59eb1e 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux/xen_domu.cfg +++ b/meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb b/meta-agl-core/recipes-platform/images/agl-image-boot.bb index 84cdbcf31..84cdbcf31 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb +++ b/meta-agl-core/recipes-platform/images/agl-image-boot.bb diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc b/meta-agl-core/recipes-platform/images/agl-image-boot.inc index 825393978..825393978 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc +++ b/meta-agl-core/recipes-platform/images/agl-image-boot.inc diff --git a/meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb b/meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb new file mode 100644 index 000000000..3855b3c23 --- /dev/null +++ b/meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb @@ -0,0 +1,18 @@ +SUMMARY = "A very basic Wayland image with a terminal" + +require agl-image-weston.inc + +LICENSE = "MIT" + +IMAGE_INSTALL_append = "\ + packagegroup-agl-profile-graphical \ + busybox \ + psplash \ + gdb \ + gperf \ + weston \ + weston-examples \ + curl \ + ptest-runner \ + libsoup-2.4 \ + " diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb b/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.bb index 8c5aae1bf..8c5aae1bf 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb +++ b/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.bb diff --git a/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc b/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc new file mode 100644 index 000000000..a69e698a1 --- /dev/null +++ b/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc @@ -0,0 +1,24 @@ +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + + + + + + +# FIXME: +# Always include the test widgets +#IMAGE_FEATURES_append = " agl-test-wgt" +# +# Required dependencies for app and test builds +#TOOLCHAIN_HOST_TASK += " \ +# nativesdk-lua \ +# " +# +# Required dependencies for app and test builds +#TOOLCHAIN_TARGET_TASK += " \ +# lua-dev \ +# lua-staticdev \ +# libafb-helpers-staticdev \ +# libappcontroller-staticdev \ +# " diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb b/meta-agl-core/recipes-platform/images/agl-image-minimal.bb index 1fd213d0f..1fd213d0f 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb +++ b/meta-agl-core/recipes-platform/images/agl-image-minimal.bb diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc b/meta-agl-core/recipes-platform/images/agl-image-minimal.inc index 825393978..825393978 100644 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc +++ b/meta-agl-core/recipes-platform/images/agl-image-minimal.inc diff --git a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb b/meta-agl-core/recipes-platform/images/agl-image-weston.bb index bbb61c922..bbb61c922 100644 --- a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb +++ b/meta-agl-core/recipes-platform/images/agl-image-weston.bb diff --git a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc b/meta-agl-core/recipes-platform/images/agl-image-weston.inc index cef3bf64e..cef3bf64e 100644 --- a/meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc +++ b/meta-agl-core/recipes-platform/images/agl-image-weston.inc diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb index 1633feddc..5ffa4cfff 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb @@ -35,7 +35,6 @@ RDEPENDS_${PN} = "\ base-passwd \ busybox \ rng-tools \ - run-agl-postinsts \ ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${SYSVINIT_SCRIPTS}", "", d)} \ ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \ netbase \ diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb index e209c59ca..0d7bbb58b 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb @@ -15,5 +15,5 @@ RDEPENDS_${PN} += "\ dhcp-server \ ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client connman-tests \ connman-tools connman-ncurses connman-plugin-session-policy-local','',d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '${PKGGROUP_ZEROCONF}', '', d)} \ + ${@bb.utils.contains('AGL_FEATURES', 'agl-devel', '${PKGGROUP_ZEROCONF}', '', d)} \ " diff --git a/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-devel.bb index c360f2a72..72fec3ff0 100644 --- a/meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-devel.bb @@ -12,22 +12,20 @@ RDEPENDS_${PN} = "\ gdb \ valgrind \ perf \ - htop \ powertop \ screen \ usbutils \ rsync \ - tree \ pstree \ procps \ - jq \ libxslt-bin \ - agl-service-network-tools \ gcc-sanitizers \ pciutils \ - pyagl \ - gcov \ - gcov-symlinks \ - gcovr \ - gcovr-wrapper \ " + +# needs meta-oe present +#RRECOMMENDS_${PN} = "\ +# jq \ +# htop \ +# tree \ +#" diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb index aef732838..aef732838 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb index 0ae5c77a3..0ae5c77a3 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb index cd37cb7d5..cd37cb7d5 100644 --- a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb index 79577c170..6d3435d99 100644 --- a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb @@ -12,9 +12,6 @@ ALLOW_EMPTY_${PN} = "1" RDEPENDS_${PN} += " \ weston \ weston-init \ - weston-ini-conf \ weston-examples \ - agl-login-manager \ - agl-compositor \ " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb index afa04e7a1..afa04e7a1 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb index 284c961b1..45107ed9c 100644 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb @@ -15,11 +15,9 @@ RDEPENDS_${PN} += "\ packagegroup-machine-base \ " - RDEPENDS_${PN} += "\ packagegroup-agl-core-connectivity \ packagegroup-agl-core-os-commonlibs \ - packagegroup-agl-core-services \ packagegroup-agl-core-security \ " diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb index 406ebcdb4..bfc5e19e8 100644 --- a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb +++ b/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb @@ -14,7 +14,6 @@ ALLOW_EMPTY_${PN} = "1" RDEPENDS_${PN} += "\ packagegroup-agl-image-minimal \ packagegroup-agl-graphical-weston \ - packagegroup-agl-graphical-services \ packagegroup-agl-graphical-multimedia \ " # FIXME: Removed due to issues building against weston 5.0.0: diff --git a/meta-agl-profile-core/recipes-support/libsoup/libsoup-2.4_%.bbappend b/meta-agl-core/recipes-support/libsoup/libsoup-2.4_%.bbappend index 06651fc11..06651fc11 100644 --- a/meta-agl-profile-core/recipes-support/libsoup/libsoup-2.4_%.bbappend +++ b/meta-agl-core/recipes-support/libsoup/libsoup-2.4_%.bbappend diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch b/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch index 6232c4fa4..6232c4fa4 100644 --- a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch +++ b/meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch diff --git a/meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend b/meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend new file mode 100644 index 000000000..5033ed7f6 --- /dev/null +++ b/meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend @@ -0,0 +1,2 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.%.bbappend b/meta-agl-core/recipes-support/ptest-runner/ptest-runner_agl.inc index 7a1d2a8f8..1dcbe0b7b 100644 --- a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.%.bbappend +++ b/meta-agl-core/recipes-support/ptest-runner/ptest-runner_agl.inc @@ -1,4 +1,3 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - +FILESEXTRAPATHS_prepend := "${THISDIR}/ptest-runner:" SRC_URI += "file://0007-WIP-Initial-LAVA-support.patch" diff --git a/meta-agl-distro/scripts/oe-depends-dot b/meta-agl-core/scripts/oe-depends-dot index 5cec23bf0..5cec23bf0 100755 --- a/meta-agl-distro/scripts/oe-depends-dot +++ b/meta-agl-core/scripts/oe-depends-dot diff --git a/meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh b/meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh new file mode 100755 index 000000000..93403b974 --- /dev/null +++ b/meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -x + +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT=`mktemp -d` + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# workaround: +# ERROR: Nothing PROVIDES 'smack' (but /home/dl9pf/AGL/master-newlayout/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it) +BBMASK += "meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb" + +AGL_FEATURES += "aglcore" + +EOF + + +yocto-check-layer \ + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + -- \ + $AGLROOT/meta-agl/meta-agl-core + + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl + +exit 0 + + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ diff --git a/meta-agl-core/scripts/run-yocto-check-layer.sh b/meta-agl-core/scripts/run-yocto-check-layer.sh new file mode 100755 index 000000000..9082be920 --- /dev/null +++ b/meta-agl-core/scripts/run-yocto-check-layer.sh @@ -0,0 +1,48 @@ +#!/bin/bash +set -x + +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT=`mktemp -d` + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# workaround: +# ERROR: Nothing PROVIDES 'smack' (but /home/dl9pf/AGL/master-newlayout/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it) +BBMASK += "meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb" + +EOF + + +yocto-check-layer \ + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + -- \ + $AGLROOT/meta-agl/meta-agl-core + + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl + +exit 0 + + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ diff --git a/meta-agl-distro/README b/meta-agl-distro/README deleted file mode 100644 index 08630b438..000000000 --- a/meta-agl-distro/README +++ /dev/null @@ -1,3 +0,0 @@ -This is meta-agl-disto. - -This layer holds the distro config(s) in use by AGL. diff --git a/meta-agl-distro/conf/layer.conf b/meta-agl-distro/conf/layer.conf deleted file mode 100644 index f8cf50c76..000000000 --- a/meta-agl-distro/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "agl-distro" -BBFILE_PATTERN_agl-distro = "^${LAYERDIR}/" -BBFILE_PRIORITY_agl-distro = "70" - -LAYERSERIES_COMPAT_agl-distro = "dunfell" diff --git a/meta-agl-profile-cluster-qt5/LICENSE b/meta-agl-profile-cluster-qt5/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-cluster-qt5/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only b/meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster-qt5/LICENSE.MIT b/meta-agl-profile-cluster-qt5/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-cluster-qt5/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster-qt5/conf/layer.conf b/meta-agl-profile-cluster-qt5/conf/layer.conf deleted file mode 100644 index 6ed7d8ca8..000000000 --- a/meta-agl-profile-cluster-qt5/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofileclusterqt5" -BBFILE_PATTERN_aglprofileclusterqt5 = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofileclusterqt5 = "70" - -LAYERSERIES_COMPAT_aglprofileclusterqt5 = "dunfell" diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb b/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb deleted file mode 100644 index 244e2ba48..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "A basic Wayland based cluster image with Qt5 support" - -require agl-image-cluster-qt5.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - profile-cluster-qt5 \ - " diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc b/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc deleted file mode 100644 index 93826aa46..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc +++ /dev/null @@ -1,7 +0,0 @@ -require recipes-platform/images/agl-image-boot.inc - -IMAGE_FEATURES += "splash package-management ssh-server-dropbear" - -inherit features_check - -REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb b/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb deleted file mode 100644 index 5436a5617..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "The middleware for AGL Qt5 based cluster profile" -DESCRIPTION = "The set of packages required for AGL Qt5 based Cluster Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-cluster-qt5 \ - profile-cluster-qt5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-boot \ - packagegroup-agl-core-security \ - packagegroup-agl-graphical-weston \ - packagegroup-agl-appfw-native-qt5 \ -" - -RDEPENDS_profile-cluster-qt5 = "${PN}" diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb b/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb deleted file mode 100644 index 9d54b33a4..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb +++ /dev/null @@ -1,36 +0,0 @@ -SUMMARY = "The middleware for AGL Qt5 based cluster qtcompositor" -DESCRIPTION = "The set of packages required for AGL Qt5 based Cluster Demo Qtcompositor Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-cluster-qtcompositor \ - profile-cluster-qt5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-boot \ - packagegroup-agl-core-security \ - packagegroup-agl-core-connectivity \ -" - -QT_LITE = " \ - qtbase \ - qtdeclarative \ - qtwayland \ - qtgraphicaleffects-qmlplugins \ - qtsvg-plugins \ - qtwebsockets \ - qtwebsockets-qmlplugins \ - qtcompositor-conf \ -" - -RDEPENDS_${PN}_append = " \ - ${QT_LITE} \ - agl-login-manager \ -" - -RDEPENDS_profile-cluster-qt5 = "${PN}" diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch deleted file mode 100644 index 5c936e7ae..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch +++ /dev/null @@ -1,45 +0,0 @@ -537bb3cc027eed14500fe5724ab30f Mon Sep 17 00:00:00 2001 -From: Laszlo Agocs <laszlo.agocs@qt.io> -Date: Fri, 14 Dec 2018 10:48:43 +0100 -Subject: eglfs: avoid breaking builds without EGL_EXT_platform_base - -Change-Id: I9183e17b42c00435f20c00a414e1f20aa3972351 -Fixes: QTBUG-72559 -Reviewed-by: Johan Helsing <johan.helsing@qt.io> ---- - .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp | 1 - - .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp | 4 ++++ - 2 files changed, 4 insertions(+), 1 deletion(-) - -(limited to 'src/plugins/platforms/eglfs/deviceintegration/eglfs_kms') - -diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -index 1e4f4e72c8..f154520669 100644 ---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -@@ -63,7 +63,6 @@ QEglFSKmsGbmIntegration::QEglFSKmsGbmIntegration() - - #ifndef EGL_EXT_platform_base - typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); --typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); - #endif - - #ifndef EGL_PLATFORM_GBM_KHR -diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp -index 65a7c4f38a..a93762e5b4 100644 ---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp -+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp -@@ -45,6 +45,10 @@ - - QT_BEGIN_NAMESPACE - -+#ifndef EGL_EXT_platform_base -+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); -+#endif -+ - void QEglFSKmsGbmWindow::resetSurface() - { - QEglFSKmsGbmScreen *gbmScreen = static_cast<QEglFSKmsGbmScreen *>(screen()); --- -cgit v1.2.1 - diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch deleted file mode 100644 index 3c33cfc10..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 9514c51b5a6881c445586fa3a232ccd47fe4b1e5 Mon Sep 17 00:00:00 2001 -From: Stefan Zehetbauer -Date: Fri, 14 Dec 2018 13:26:03 +0100 -Subject: [PATCH] fixed invalid conversion from EGLNativeDisplayType to void* - ---- - .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -index d495a8d..34ca9e8 100644 ---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp -@@ -82,7 +82,7 @@ EGLDisplay QEglFSKmsGbmIntegration::createDisplay(EGLNativeDisplayType nativeDis - } - - if (getPlatformDisplay) { -- display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr); -+ display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, reinterpret_cast<void *>(&nativeDisplay), nullptr); - } else { - qCDebug(qLcEglfsKmsDebug, "No eglGetPlatformDisplay for GBM, falling back to eglGetDisplay"); - display = eglGetDisplay(nativeDisplay); --- -1.9.1 diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend deleted file mode 100644 index e94ef03ae..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend +++ /dev/null @@ -1,12 +0,0 @@ -#Enable eglfs for QT based application - -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -# FIXME: Disabled as they do not apply against 5.13.2, and it is -# unclear if they are still required for building dra7xx-evm, -# which fails for what looks like a different reason. -#SRC_URI += " file://0001-fixed-eglfs_kms-fails-to-build.patch \ -# file://0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch \ -# " - -PACKAGECONFIG_GL_append = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', ' eglfs kms gbm', '', d)}" diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb deleted file mode 100644 index 49111b6e8..000000000 --- a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "Configuration files for running wayland with a non-weston compositor" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -inherit allarch agl-graphical - -do_configure[noexec] = "1" -do_compile[noexec] = "1" - -do_install() { - # Add a rule to ensure the 'display' user has permissions to - # open the graphics device - install -d ${D}${sysconfdir}/udev/rules.d - cat >${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF' -SUBSYSTEM=="drm", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*" -EOF - - # user 'display' must also be able to access /dev/input/* - cat >${D}${sysconfdir}/udev/rules.d/zz-input.rules <<'EOF' -SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="^" -EOF - - # user 'display' must also be able to access /dev/media*, etc. - cat >${D}${sysconfdir}/udev/rules.d/zz-remote-display.rules <<'EOF' -SUBSYSTEM=="media", MODE="0660", GROUP="display", SECLABEL{smack}="*" -SUBSYSTEM=="video4linux", MODE="0660", GROUP="display", SECLABEL{smack}="*" -KERNEL=="uvcs", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*" -KERNEL=="rgnmm", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*" -EOF -} - -do_install_append_imx() { - install -d ${D}${sysconfdir}/udev/rules.d - cat >>${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF' -SUBSYSTEM=="gpu_class", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*" -EOF - -} - -RCONFLICTS_${PN} = "weston-init" diff --git a/meta-agl-profile-cluster/LICENSE b/meta-agl-profile-cluster/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-cluster/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster/LICENSE.GPL-2.0-only b/meta-agl-profile-cluster/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-cluster/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster/LICENSE.MIT b/meta-agl-profile-cluster/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-cluster/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-cluster/conf/layer.conf b/meta-agl-profile-cluster/conf/layer.conf deleted file mode 100644 index e71e04c90..000000000 --- a/meta-agl-profile-cluster/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofilecluster" -BBFILE_PATTERN_aglprofilecluster = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofilecluster = "70" - -LAYERSERIES_COMPAT_aglprofilecluster = "dunfell" diff --git a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb b/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb deleted file mode 100644 index 552d7a74e..000000000 --- a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "A basic Wayland based cluster image" - -require agl-image-cluster.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - profile-cluster \ - " diff --git a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc b/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc deleted file mode 100644 index 93826aa46..000000000 --- a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc +++ /dev/null @@ -1,7 +0,0 @@ -require recipes-platform/images/agl-image-boot.inc - -IMAGE_FEATURES += "splash package-management ssh-server-dropbear" - -inherit features_check - -REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb b/meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb deleted file mode 100644 index c0c612467..000000000 --- a/meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "The middleware for AGL cluster profile" -DESCRIPTION = "The set of packages required for AGL Cluster Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-cluster \ - profile-cluster \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-boot \ - packagegroup-agl-core-security \ - packagegroup-agl-graphical-weston \ -" - -RDEPENDS_profile-cluster = "${PN}" diff --git a/meta-agl-profile-core/LICENSE b/meta-agl-profile-core/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-core/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-core/LICENSE.GPL-2.0-only b/meta-agl-profile-core/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-core/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-core/LICENSE.MIT b/meta-agl-profile-core/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-core/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-core/conf/layer.conf b/meta-agl-profile-core/conf/layer.conf deleted file mode 100644 index fef746d76..000000000 --- a/meta-agl-profile-core/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofilecore" -BBFILE_PATTERN_aglprofilecore = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofilecore = "80" - -LAYERSERIES_COMPAT_aglprofilecore = "dunfell" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb deleted file mode 100644 index bc53051f2..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Bluetooth MAP Service Binding" -DESCRIPTION = "AGL Bluetooth MAP Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth-map" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth-map;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "glib-2.0 json-c" -RDEPENDS_${PN} = "bluez5-obex agl-service-bluetooth" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb deleted file mode 100644 index 3f9ff7be1..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Bluetooth PBAP Service Binding" -DESCRIPTION = "AGL Bluetooth PBAP Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth-pbap" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth-pbap;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "glib-2.0 json-c" -RDEPENDS_${PN} = "bluez5-obex agl-service-bluetooth agl-service-data-persistence" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb deleted file mode 100644 index 8cfa8ec8f..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Bluetooth Service Binding" -DESCRIPTION = "AGL Bluetooth Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "glib-2.0 json-c" -RDEPENDS_${PN} = "agl-service-data-persistence agl-service-network" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb deleted file mode 100644 index 83f6c1e75..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "Low level CAN service" -DESCRIPTION = "AGL Service application for read and decode CAN messages" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/low-level-can-service" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-can-low-level;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "${AGLVERSION}" -S = "${WORKDIR}/git" - -DEPENDS = "libafb-helpers libappcontroller" - -inherit cmake aglwgt pkgconfig ptest - -# For now, just enable J1939 on the qemu platforms where we know the -# linux-yocto kernel is new enough (>= 5.4) and has the support enabled. -AGLWGT_CMAKE_CONFIGURE_ARGS_append_qemuall = " -DWITH_FEATURE_J1939=ON" - -RDEPENDS_${PN} = "virtual/low-can-dev-mapping" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest deleted file mode 100644 index cc9c41365..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -afm-test /usr/AGL/apps/testwgt/low-can-service-test.wgt diff --git a/meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb deleted file mode 100644 index 569f0707e..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -DESCRIPTION = "AGL low level user database binding" -HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-data-persistence/" -SECTION = "base" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-data-persistence;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -inherit cmake aglwgt pkgconfig - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS += " af-binder json-c gdbm " - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb deleted file mode 100644 index a12923247..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "GeoClue Service Binding" -DESCRIPTION = "AGL GeoClue Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-geoclue" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-geoclue;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c geoclue" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb deleted file mode 100644 index 8bdcd7c93..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Geofence Service Binding" -DESCRIPTION = "AGL Geofence Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-geofence" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-geofence;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c glib-2.0" -RDEPENDS_${PN} = "agl-service-gps" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb deleted file mode 100644 index 254e5e409..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "GPS/GNSS Service Binding" -DESCRIPTION = "AGL GPS/GNSS Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-gps" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-gps;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c gpsd" -RDEPENDS_${PN} = "libgps" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb deleted file mode 100644 index e4dccbf3d..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb +++ /dev/null @@ -1,27 +0,0 @@ -SUMMARY = "HVAC Service Binding Configuration" -DESCRIPTION = "AGL HVAC Service Binding Configuration" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-hvac" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-hvac;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -do_configure[noexec] = "1" -do_compile[noexec] = "1" - -do_install () { - install -D -m 644 ${S}/hvac.json ${D}${sysconfdir}/hvac.json -} - -do_install_append_ulcb() { - sed -i -e "s#vcan0#sllin0#g" ${D}${sysconfdir}/hvac.json -} - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb deleted file mode 100644 index 545ab6a28..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "HVAC Service Binding" -DESCRIPTION = "AGL HVAC Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-hvac" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-hvac;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c" - -inherit cmake aglwgt pkgconfig - -RDEPENDS_${PN} += "agl-service-identity-agent agl-service-can-low-level" -RRECOMMENDS_${PN} += "agl-service-hvac-conf" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb deleted file mode 100644 index f2474be7b..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -DESCRIPTION = "AGL identity agent binding" -HOMEPAGE = "https://gitlab.com/iotbzh/aia-binding" -SECTION = "base" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-identity-agent;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" -PV = "1.0+git${SRCPV}" - -inherit cmake aglwgt pkgconfig - -S = "${WORKDIR}/git" - -DEPENDS = "curl af-binder json-c systemd" - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb deleted file mode 100644 index cc893698c..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "IIODEVICES Service Binding" -DESCRIPTION = "AGL IIODEVICES Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-iiodevices" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-iiodevices;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c libiio glib-2.0" - -RDEPENDS_${PN} = "libiio" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb deleted file mode 100644 index c50a04804..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Mediascanner Service Binding" -DESCRIPTION = "AGL Mediascanner Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediascanner" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediascanner;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c sqlite3 glib-2.0" -RDEPENDS_${PN} = "lightmediascanner" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb deleted file mode 100755 index 71a615cf4..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Navigation Service Binding" -DESCRIPTION = "AGL Navigation Service API Binding" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -DEPENDS = "json-c libdbus-c++" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-navigation;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "0.1+git${SRCPV}" -S = "${WORKDIR}/git" - -inherit cmake aglwgt pkgconfig - -RDEPENDS_${PN} += "json-c libdbus-c++" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb deleted file mode 100644 index c7fb72f22..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Network Service Binding" -DESCRIPTION = "AGL Network Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-network" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-network;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "glib-2.0 json-c" - -inherit cmake aglwgt pkgconfig - -do_install_append() { - install -d ${D}${sbindir} - install -m 755 ${B}/build-release/test/agl-service-network-ctl ${D}${sbindir} -} - -FILES_${PN}-tools = "${sbindir}/agl-service-network-ctl" -PACKAGES_prepend = "${PN}-tools " diff --git a/meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb deleted file mode 100644 index 1757dcb38..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "agl-service-nfc" -DESCRIPTION = "" -HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-nfc/" -SECTION = "apps" -DEPENDS = "af-binder json-c glib-2.0 neardal" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit cmake pkgconfig aglwgt - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-nfc;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb deleted file mode 100644 index 43eed3f2e..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "Platform info provider binding" -DESCRIPTION = "AGL Platform info provider binding" -HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-platform-info/" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-platform-info;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "libafb-helpers" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb deleted file mode 100644 index bf714f45d..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "agl-service-signal-composer" -DESCRIPTION = "AGL High Level Signaling service to handle CAN, LIN, and others signaling sources" -HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-signal-composer/" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit cmake pkgconfig aglwgt ptest - -DEPENDS += "lua lua-native libappcontroller libafb-helpers" -RDEPENDS_${PN} += "lua" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-signal-composer;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "${AGLVERSION}" -S = "${WORKDIR}/git" diff --git a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest b/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest deleted file mode 100644 index 49187ad85..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -afm-test /usr/AGL/apps/testwgt/signal-composer-test.wgt diff --git a/meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb deleted file mode 100644 index ff3913643..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Telephony Service Binding" -DESCRIPTION = "AGL Telephony Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-telephony" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-telephony;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c glib-2.0" -RDEPENDS_${PN} = "ofono" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb deleted file mode 100644 index 85ebc90f6..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Infotainment network device control" -DESCRIPTION = "Abstraction layer to control INICnet devices" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-unicens-controller" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-unicens-controller;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "0.1+git${SRCPV}" -S = "${WORKDIR}/git" - -inherit cmake aglwgt pkgconfig - -DEPENDS += "json-c af-binder libafb-helpers" -RDEPENDS_${PN} += "agl-service-unicens" - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb deleted file mode 100644 index e7e25c74e..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "4A - Infotainment network setup and access" -DESCRIPTION = "Infotainment network setup and access (using Unified Centralized Network Stack)" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-unicens" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-unicens;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "0.1+git${SRCPV}" -S = "${WORKDIR}/git" - -inherit cmake aglwgt pkgconfig - -DEPENDS += "alsa-lib json-c systemd af-binder glib-2.0 libxml2 libafb-helpers" -RDEPENDS_${PN} += "libxml2 " - diff --git a/meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb deleted file mode 100644 index 75532da42..000000000 --- a/meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Weather Service Binding" -DESCRIPTION = "AGL Weather Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-weather" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-weather;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "glib-2.0 json-c" -RDEPENDS_${PN} = "agl-service-geoclue" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb b/meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb deleted file mode 100644 index 49efce796..000000000 --- a/meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "AGL Login manager" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -LOGIN_USER ??="1001 1002" - -RDEPENDS_${PN} += "af-main" - -do_install_append() { - - install -d ${D}${systemd_system_unitdir}/multi-user.target.wants/ - - for AGL_USER in ${LOGIN_USER};do - ln -s ../afm-user-session@.service ${D}${systemd_system_unitdir}/multi-user.target.wants/afm-user-session@${AGL_USER}.service - done -} - -FILES_${PN} += "${systemd_system_unitdir}" diff --git a/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb b/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb deleted file mode 100644 index 709a1091f..000000000 --- a/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb +++ /dev/null @@ -1,27 +0,0 @@ -inherit allarch useradd - -SUMMARY = "AGL Users Seed" -DESCRIPTION = "This is a core framework component that\ - defines how users are managed and who are the default users." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -ALLOW_EMPTY_${PN} = "1" - -USERADD_PACKAGES = "${PN}" - -USERADDEXTENSION = "useradd-staticids" - -GROUPADD_PARAM_${PN} = "\ - --system display ; \ - --system weston-launch ; \ - -g 1001 agl-driver ; \ - -g 1002 agl-passenger \ -" - -USERADD_PARAM_${PN} = "\ - -g 1001 -u 1001 -o -d /home/1001 -m -K PASS_MAX_DAYS=-1 agl-driver ; \ - -g 1002 -u 1002 -o -d /home/1002 -m -K PASS_MAX_DAYS=-1 agl-passenger ; \ - --gid display --groups weston-launch,video,input --home-dir /run/platform/display --shell /bin/false --comment \"Display daemon\" --key PASS_MAX_DAYS=-1 display \ -" diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default deleted file mode 100644 index 7bd8bf2eb..000000000 --- a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default +++ /dev/null @@ -1,6 +0,0 @@ -; Default CAN device mapping -; Format has to follow ini rules key="value", notice " around value. - -[CANbus-mapping] -hs="can0" -ls="can0" diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb deleted file mode 100644 index 1309ffa20..000000000 --- a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "AGL Device mapping configuration file" -DESCRIPTION = "This provide default dev-mapping.conf file \ - that defines mapping between kernel device and logical name \ - used in low-can binding by example." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -SRC_URI += "file://dev-mapping.conf.default" - -inherit allarch - -do_install() { - install -d ${D}${sysconfdir} - install -m 0644 ${WORKDIR}/dev-mapping.conf.default ${D}${sysconfdir}/dev-mapping.conf -} - -RPROVIDES_${PN} = "virtual/low-can-dev-mapping" diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb deleted file mode 100644 index 010329ee7..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb +++ /dev/null @@ -1,43 +0,0 @@ -SUMMARY = "Bluetooth Audio ALSA Backend" -HOMEPAGE = "https://github.com/Arkq/bluez-alsa" -SECTION = "libs" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7d6ac7e2dbd2505652dceb3acdf1fe" - -SRC_URI = "git://github.com/Arkq/bluez-alsa.git;protocol=https;branch=master" -SRCREV = "2cd6e4686f7808276480b430fb37df55dfdcc02b" - -SRC_URI += "file://bluez-alsa.service" - -S = "${WORKDIR}/git" - -DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc" - -PACKAGECONFIG[aac] = "--enable-aac, --disable-aac, " -PACKAGECONFIG[aptx] = "--enable-aptx,--disable-aptx," -PACKAGECONFIG[ofono] = "--enable-ofono, --disable-ofono," - -inherit autotools pkgconfig -inherit systemd - -SYSTEMD_AUTO_ENABLE = "enable" -SYSTEMD_SERVICE_${PN} = "bluez-alsa.service" - -PACKAGECONFIG += "ofono" - -# enable debug tools in devel images -PACKAGECONFIG[hcitop] = "--enable-hcitop, --disable-hcitop, libbsd ncurses" -PACKAGECONFIG[rfcomm] = "--enable-rfcomm, --disable-rfcomm," -PACKAGECONFIG_append_agl-devel = " hcitop rfcomm" - -do_install_append () { - install -d ${D}${base_libdir}/systemd/system - install -m 0644 ${WORKDIR}/bluez-alsa.service ${D}${base_libdir}/systemd/system -} - -FILES_${PN} += "\ - ${datadir}/alsa/alsa.conf.d/20-bluealsa.conf\ - ${libdir}/alsa-lib/libasound_module_ctl_bluealsa.so\ - ${libdir}/alsa-lib/libasound_module_pcm_bluealsa.so\ -" diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service deleted file mode 100644 index b59302ee4..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Bluetooth Audio ALSA Backend -After=bluetooth.service -Requires=bluetooth.service - -[Service] -Type=simple -ExecStart=/usr/bin/bluealsa -p a2dp-sink -p hfp-ofono - -[Install] -WantedBy=multi-user.target diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf deleted file mode 100644 index 1f2762de7..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf +++ /dev/null @@ -1,39 +0,0 @@ -<!-- This configuration file specifies the required security policies - for Bluetooth core daemon to work. --> - -<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - - <!-- ../system.conf have denied everything, so we just punch some holes --> - - <policy user="root"> - <allow own="org.bluez"/> - <allow send_destination="org.bluez"/> - <allow send_interface="org.bluez.Agent1"/> - <allow send_interface="org.bluez.MediaEndpoint1"/> - <allow send_interface="org.bluez.MediaPlayer1"/> - <allow send_interface="org.bluez.ThermometerWatcher1"/> - <allow send_interface="org.bluez.AlertAgent1"/> - <allow send_interface="org.bluez.Profile1"/> - <allow send_interface="org.bluez.HeartRateWatcher1"/> - <allow send_interface="org.bluez.CyclingSpeedWatcher1"/> - <allow send_interface="org.bluez.GattCharacteristic1"/> - <allow send_interface="org.bluez.GattDescriptor1"/> - <allow send_interface="org.freedesktop.DBus.ObjectManager"/> - <allow send_interface="org.freedesktop.DBus.Properties"/> - <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.Properties"/> - <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.ObjectManager"/> - </policy> - - <policy at_console="true"> - <allow send_destination="org.bluez"/> - </policy> - - <!-- allow users of lp group (printing subsystem) to - communicate with bluetoothd --> - <policy group="lp"> - <allow send_destination="org.bluez"/> - </policy> - -</busconfig> diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service deleted file mode 100644 index 8ae83bd48..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=Bluetooth service -Documentation=man:bluetoothd(8) -ConditionPathIsDirectory=/sys/class/bluetooth - -[Service] -Type=dbus -BusName=org.bluez -ExecStartPre=-/usr/bin/hciconfig hci0 aclmtu 930:10 -ExecStart=/usr/libexec/bluetooth/bluetoothd -NotifyAccess=main -#WatchdogSec=10 -#Restart=on-failure -CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE -LimitNPROC=1 -ProtectHome=true -ProtectSystem=full - -[Install] -WantedBy=bluetooth.target -Alias=dbus-org.bluez.service diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service deleted file mode 100644 index 87ffff6ae..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Bluetooth OBEX service - -[Service] -Type=dbus -BusName=org.bluez.obex -ExecStart=/usr/libexec/bluetooth/obexd --root=/var/volatile/tmp - -[Install] -Alias=dbus-org.bluez.obex.service diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf deleted file mode 100644 index 8545d76ec..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Service] -Environment="TMPDIR=/run/user/%U/usrshr" diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend deleted file mode 100644 index 52ae30bc5..000000000 --- a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend +++ /dev/null @@ -1,24 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI_append = " \ - file://bluetooth.conf \ - file://tmpdir.conf \ - file://obex.service \ - file://bluetooth.service \ -" - -FILES_${PN} += "${systemd_user_unitdir}/obex.service.d/tmpdir.conf" - -do_install_append() { - install -m 0644 ${WORKDIR}/bluetooth.conf ${D}${sysconfdir}/dbus-1/system.d/bluetooth.conf - - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - mkdir -p ${D}${systemd_user_unitdir}/obex.service.d - - install -m 0644 ${WORKDIR}/obex.service ${D}${systemd_user_unitdir} - install -m 0644 ${WORKDIR}/tmpdir.conf ${D}${systemd_user_unitdir}/obex.service.d/tmpdir.conf - mkdir -p ${D}/etc/systemd/user - ln -sf ${systemd_user_unitdir}/obex.service ${D}/etc/systemd/user/dbus-org.bluez.obex.service - mkdir -p ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/bluetooth.service ${D}${systemd_system_unitdir} - fi -} diff --git a/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend deleted file mode 100644 index 198b651dd..000000000 --- a/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -SRC_URI += "file://enable-wget-https.cfg" -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" diff --git a/meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch b/meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch deleted file mode 100644 index c32951693..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d8c03a31e2734e59af43dd50cbd7f5a94d798ab1 Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Tue, 10 Jul 2018 21:18:26 -0700 -Subject: [PATCH] systemd: neard: add multi-user.target to neard.service - -Allowing a service to be system level requires a WantedBy= target - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - src/neard.service.in | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/neard.service.in b/src/neard.service.in -index dfa238c..540da7e 100644 ---- a/src/neard.service.in -+++ b/src/neard.service.in -@@ -9,4 +9,5 @@ ExecStart=@pkglibexecdir@/neard -n - LimitNPROC=1 - - [Install] -+WantedBy=multi-user.target - Alias=dbus-org.neard.service --- -2.17.1 - diff --git a/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch b/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch deleted file mode 100644 index 49c11a509..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d7ea2a00e00795ad24897e3481b015a27d37d60f Mon Sep 17 00:00:00 2001 -From: Raquel Medina <raquel.medina@konsulko.com> -Date: Tue, 22 Jan 2019 09:00:05 -0500 -Subject: [PATCH] ndef: avoid dbus property_get_type method on empty record - -Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> ---- - src/ndef.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/ndef.c b/src/ndef.c -index 5656baf..883c6f4 100644 ---- a/src/ndef.c -+++ b/src/ndef.c -@@ -2832,10 +2832,14 @@ GList *near_ndef_parse_msg(uint8_t *ndef_data, size_t ndef_length, - case RECORD_TYPE_WKT_ALTERNATIVE_CARRIER: - case RECORD_TYPE_WKT_COLLISION_RESOLUTION: - case RECORD_TYPE_WKT_ERROR: -- case RECORD_TYPE_UNKNOWN: - case RECORD_TYPE_ERROR: - break; - -+ case RECORD_TYPE_UNKNOWN: -+ if (record->header->tnf == RECORD_TNF_EMPTY) -+ goto fail; -+ break; -+ - case RECORD_TYPE_WKT_HANDOVER_REQUEST: - case RECORD_TYPE_WKT_HANDOVER_SELECT: - /* --- -2.17.1 - diff --git a/meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend b/meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend deleted file mode 100644 index 64a044cb5..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI_append = "\ - file://0001-systemd-neard-add-multi-user.target-to-neard.service.patch \ - file://0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch \ - " -SYSTEMD_SERVICE_${PN} = "neard.service" diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc b/meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc deleted file mode 100644 index 3bb6b24ec..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Neard Abstraction Library (NeardAL)" - -DESCRIPTION = "NeardAL is a library that provides a simple C API \ -to exchange data with NFC daemon (Neard)." - -HOMEPAGE = "https://github.com/connectivity/neardal" -SECTION = "libs" -LICENSE = "LGPLv2" - -DEPENDS = "glib-2.0 readline glib-2.0-native" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \ - file://lib/neardal.h;endline=20;md5=a53e93aea9357387078ed217565c0a99" - -inherit autotools pkgconfig - -PACKAGES =+ "${PN}-tools ${PN}-tools-dbg" - -FILES_${PN}-tools = "${libexecdir}/ncl" -FILES_${PN}-tools-dbg += "${libexecdir}/.debug" - -RDEPENDS_${PN}-tools = "bash" diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch deleted file mode 100644 index 596fe0579..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 795308b2452ee617da4096914b53ba3a1142e3db Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Fri, 6 Jul 2018 17:19:09 -0700 -Subject: [PATCH] neardal: ncl: fix segfault on help page being displayed - -LISTCMD_NAME is declared as a const char due to being defined in a -macro so g_strdup it to stop proceeding operations from segfaulting. - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> - ---- - ncl/ncl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ncl/ncl.c b/ncl/ncl.c -index 590d13b..f4165b7 100644 ---- a/ncl/ncl.c -+++ b/ncl/ncl.c -@@ -329,7 +329,7 @@ int main(int argc, char *argv[]) - g_io_channel_unref(gNclCtx.channel); - - if (show_help) -- ncl_exec(LISTCMD_NAME); -+ ncl_exec(g_strdup(LISTCMD_NAME)); - - rl_callback_handler_install(NCL_PROMPT, ncl_parse_line); - diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch deleted file mode 100644 index d40d9a4fe..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch +++ /dev/null @@ -1,58 +0,0 @@ -From ee6267f357b3d158f0a0e88460782e8b9d44274a Mon Sep 17 00:00:00 2001 -From: Raquel Medina <raquel.medina@konsulko.com> -Date: Fri, 4 Jan 2019 07:43:03 -0500 -Subject: [PATCH] neardal: lib: fix memory corruption - - The current commit fixes an invalid memory access - which manifests as a random segfault when executing - continuous tag read operations. - - The corruption happens when releasing the memory allocated to a - record: in the time between the memory being g_free'd and the - subsequent memset operation, the memory could have been reused by - some other process. And since memory allocation depends on - system-wide factors, it makes this bug hard to track. - - Tested using ACR122U reader and NTAG213 - tags on Automotive Grade Linux (flounder, - guppy and master branches) - -Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> ---- - lib/neardal_record.c | 1 - - lib/neardal_tools.c | 5 ++++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/lib/neardal_record.c b/lib/neardal_record.c -index 669012c..cfed5e8 100644 ---- a/lib/neardal_record.c -+++ b/lib/neardal_record.c -@@ -31,7 +31,6 @@ void neardal_record_free(neardal_record *r) - { - g_return_if_fail(r); - neardal_g_strfreev((void **) r, &r->uriObjSize); -- memset(r, 0, sizeof(*r)); - } - - void neardal_free_record(neardal_record *record) \ -diff --git a/lib/neardal_tools.c b/lib/neardal_tools.c -index f0d6157..f307df6 100644 ---- a/lib/neardal_tools.c -+++ b/lib/neardal_tools.c -@@ -32,9 +32,12 @@ - void neardal_g_strfreev(void **array, void *end) - { - void **p = array; -- for (; (void *) p < end; p++) -+ for (; (void *) p < end; p++) { - g_free(*p); -+ *p = NULL; -+ } - g_free(array); -+ array = NULL; - } - - void neardal_g_variant_add_parsed(GVariant **v, const char *format, ...) --- -2.17.1 - diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch deleted file mode 100644 index baef6ccaa..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch +++ /dev/null @@ -1,25 +0,0 @@ -From eab402bae42c3ea5caa8d540b6702d39e56c84c1 Mon Sep 17 00:00:00 2001 -From: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com> -Date: Tue, 10 Feb 2015 12:58:39 +0200 -Subject: [PATCH] build: Install ncl - -Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com> ---- - ncl/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ncl/Makefile.am b/ncl/Makefile.am -index beda75b..c06742f 100644 ---- a/ncl/Makefile.am -+++ b/ncl/Makefile.am -@@ -1,6 +1,6 @@ - AM_CPPFLAGS = @gio_CFLAGS@ -I$(top_builddir)/lib -I$(top_srcdir)/lib - --noinst_PROGRAMS=ncl -+libexec_PROGRAMS = ncl - - ncl_SOURCES = \ - $(srcdir)/ncl.c $(srcdir)/ncl.h \ --- -2.1.0 - diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb b/meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb deleted file mode 100644 index f8634c468..000000000 --- a/meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb +++ /dev/null @@ -1,10 +0,0 @@ -require neardal.inc - -SRC_URI = "git://github.com/connectivity/neardal.git;protocol=https \ - file://ncl.patch \ - file://0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch \ - file://0002-neardal-lib-fix-memory-corruption.patch \ - " -SRCREV = "fe0fa79c94e9a0f1c2cfa1f58b3acc9bdc7d5e13" - -S = "${WORKDIR}/git" diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch b/meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch deleted file mode 100644 index 7b44e483e..000000000 --- a/meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 7782f8f9d9634ebeddafefedab10ba254f9cc34a Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Fri, 1 Mar 2019 17:53:17 +0900 -Subject: [PATCH] provision: allow duplicate entries from mbpi_lookup_apn() - results - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - plugins/provision.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/plugins/provision.c b/plugins/provision.c -index 99c299eb..aa0b05e4 100644 ---- a/plugins/provision.c -+++ b/plugins/provision.c -@@ -50,7 +50,7 @@ static int provision_get_settings(const char *mcc, const char *mnc, - - DBG("Provisioning for MCC %s, MNC %s, SPN '%s'", mcc, mnc, spn); - -- apns = mbpi_lookup_apn(mcc, mnc, FALSE, &error); -+ apns = mbpi_lookup_apn(mcc, mnc, TRUE, &error); - if (apns == NULL) { - if (error != NULL) { - ofono_error("%s", error->message); --- -2.20.1 - diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf b/meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf deleted file mode 100644 index e47214c76..000000000 --- a/meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf +++ /dev/null @@ -1,30 +0,0 @@ -<!-- This configuration file specifies the required security policies - for oFono core daemon to work. --> - -<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - - <!-- ../system.conf have denied everything, so we just punch some holes --> - - <policy user="root"> - <allow own="org.ofono"/> - <allow send_destination="org.ofono"/> - <allow send_interface="org.ofono.Manager"/> - <allow send_interface="org.ofono.SimToolkitAgent"/> - <allow send_interface="org.ofono.PushNotificationAgent"/> - <allow send_interface="org.ofono.SmartMessagingAgent"/> - <allow send_interface="org.ofono.PositioningRequestAgent"/> - <allow send_interface="org.ofono.HandsfreeAudioAgent"/> - <allow send_interface="org.ofono.Modem"/> - </policy> - - <policy at_console="true"> - <allow send_destination="org.ofono"/> - </policy> - - <policy context="default"> - <deny send_destination="org.ofono"/> - </policy> - -</busconfig> diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend b/meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend deleted file mode 100644 index b02d6ee22..000000000 --- a/meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend +++ /dev/null @@ -1,11 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" -SRC_URI_append = "\ - file://ofono.conf \ - file://0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch \ - " - -do_install_append() { - install -m 0644 ${WORKDIR}/ofono.conf ${D}${sysconfdir}/dbus-1/system.d/ofono.conf -} - -SYSTEMD_AUTO_ENABLE = "enable" diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch deleted file mode 100644 index 86b7392df..000000000 --- a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 3aeaf8054fcb2617ca8f6196ca32be3e69337f77 Mon Sep 17 00:00:00 2001 -From: Martin Kelly <mkelly@xevo.com> -Date: Fri, 21 Apr 2017 10:29:19 -0700 -Subject: [PATCH] remove -I/usr/include in pkg-config - -This shouldn't be necessary as it's part of the default compiler include -paths anyway. Morever, it can cause GCC 6 C++ build failures in -downstream packages when combined with QMake (such as -qtmultimedia-rtlfm-radio-plugin). - -Fix these issues by removing it. - -Upstream-Status: Inappropriate [disable-feature] - -This patch should not go upstream because it breaks the ability to build -with --prefix. That's not a problem for Openembedded, but it is for -upstream more generally. See this mail thread for more information: - -http://lists.osmocom.org/pipermail/osmocom-sdr/2017-April/001580.html - -Signed-off-by: Martin Kelly <mkelly@xevo.com> ---- - librtlsdr.pc.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/librtlsdr.pc.in b/librtlsdr.pc.in -index 5e55049..84b6d0c 100644 ---- a/librtlsdr.pc.in -+++ b/librtlsdr.pc.in -@@ -6,6 +6,6 @@ includedir=@includedir@ - Name: RTL-SDR Library - Description: C Utility Library - Version: @VERSION@ --Cflags: -I${includedir}/ @RTLSDR_PC_CFLAGS@ -+Cflags: @RTLSDR_PC_CFLAGS@ - Libs: -L${libdir} -lrtlsdr -lusb-1.0 - Libs.private: @RTLSDR_PC_LIBS@ --- -2.1.4 - diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb deleted file mode 100644 index b442d9f46..000000000 --- a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "Turns a Realtek RTL2832U-based DVB dongle into a SDR receiver" -DESCRIPTION = "DVB-T dongles based on the Realtek RTL2832U chipset can be used as Software Digital Radio adapters, since the chip allows transferring raw I/Q samples to the host, which is really used for DAB/DAB+/FM demodulation." -HOMEPAGE = "http://sdr.osmocom.org/trac/wiki/rtl-sdr" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ - file://src/librtlsdr.c;endline=18;md5=1b05599c3ebd4d74857a0a7c45f3d4ef" - -DEPENDS = "libusb1" - -SRC_URI = "git://git.osmocom.org/rtl-sdr \ - file://0001-remove-I-usr-include-in-pkg-config.patch \ - " -SRCREV = "e3c03f738f5aef4dc51e2b741fbdb542b9cc1bb1" -S = "${WORKDIR}/git" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--enable-driver-detach" - -do_configure_append() { - # remove included temporary path from pc file due to pass-through of OE CFLAGS - # debug-prefix-map - # See: http://lists.openembedded.org/pipermail/openembedded-devel/2016-May/107456.html - sed -i -e "s# -fdebug-prefix-map=.*##g;s# -fmacro-prefix-map=.*##g" librtlsdr.pc -} - -do_install_append() { - install -D -m 0644 ${S}/rtl-sdr.rules ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules - sed -i 's/MODE:="0666"/GROUP="audio", MODE="0660", SECLABEL{smack}="*"/' \ - ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules -} diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service deleted file mode 100644 index dee6ad741..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=D-Bus User Message Bus -Documentation=man:dbus-daemon(1) -Requires=dbus.socket - -[Service] -ExecStart=/usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation -ExecReload=/usr/bin/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig -Restart=always -RestartSec=1 diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket deleted file mode 100644 index af76b2f12..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=D-Bus User Message Bus Socket -Before=sockets.target - -[Socket] -ListenStream=%t/bus - -[Install] -WantedBy=default.target diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf deleted file mode 100644 index f8f02669b..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf +++ /dev/null @@ -1,5 +0,0 @@ -[Unit] -Wants=dbus.service - -[Service] -Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/bus diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch b/meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch deleted file mode 100644 index c4fafef62..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h.threading 2017-02-15 13:40:53.796004263 +0000 -+++ libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h 2017-02-15 13:40:46.907000493 +0000 -@@ -188,6 +188,7 @@ - /* classes for multithreading support - */ - -+#if 0 - class DXXAPI Mutex - { - public: -@@ -243,9 +244,11 @@ - typedef bool (*CondVarWaitTimeoutFn)(CondVar *cv, Mutex *mx, int timeout); - typedef void (*CondVarWakeOneFn)(CondVar *cv); - typedef void (*CondVarWakeAllFn)(CondVar *cv); -+#endif - - void DXXAPI _init_threading(); - -+#if 0 - void DXXAPI _init_threading( - MutexNewFn, MutexFreeFn, MutexLockFn, MutexUnlockFn, - CondVarNewFn, CondVarFreeFn, CondVarWaitFn, CondVarWaitTimeoutFn, CondVarWakeOneFn, CondVarWakeAllFn -@@ -312,6 +315,7 @@ - cv->wake_all(); - } - }; -+#endif - - } /* namespace DBus */ - ---- libdbus-c++-0.9.0/src/dispatcher.cpp.threading 2017-02-15 13:48:22.627249868 +0000 -+++ libdbus-c++-0.9.0/src/dispatcher.cpp 2017-02-15 13:48:29.164253445 +0000 -@@ -253,6 +253,7 @@ - #endif//DBUS_HAS_THREADS_INIT_DEFAULT - } - -+#if 0 - void DBus::_init_threading( - MutexNewFn m1, - MutexFreeFn m2, -@@ -318,3 +319,4 @@ - #endif//DBUS_HAS_RECURSIVE_MUTEX - dbus_threads_init(&functions); - } -+#endif diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend b/meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend deleted file mode 100644 index 379c5435e..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend +++ /dev/null @@ -1,28 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/dbus" - -SRC_URI += "file://dbus.service \ - file://dbus.socket \ - file://dbus_env.conf \ - " - -inherit systemd - -do_install_append() { - if [ "${PN}" != "nativesdk-dbus" ]; then - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -m 644 -p -D ${WORKDIR}/dbus.service ${D}${systemd_user_unitdir}/dbus.service - install -m 644 -p -D ${WORKDIR}/dbus.socket ${D}${systemd_user_unitdir}/dbus.socket - install -m 644 -p -D ${WORKDIR}/dbus_env.conf ${D}${systemd_system_unitdir}/user@.service.d/dbus_env.conf - - # Execute these manually on behalf of systemctl script (from systemd-systemctl-native.bb) - # because it does not support systemd's user mode. - mkdir -p ${D}/etc/systemd/user/default.target.wants/ - ln -sf ${systemd_user_unitdir}/dbus.socket ${D}/etc/systemd/user/default.target.wants/dbus.socket - fi - fi -} - -FILES_${PN} += " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/dbus.*', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/user@.service.d/dbus_env.conf', '', d)} \ - " diff --git a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch b/meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch deleted file mode 100644 index c4fafef62..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h.threading 2017-02-15 13:40:53.796004263 +0000 -+++ libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h 2017-02-15 13:40:46.907000493 +0000 -@@ -188,6 +188,7 @@ - /* classes for multithreading support - */ - -+#if 0 - class DXXAPI Mutex - { - public: -@@ -243,9 +244,11 @@ - typedef bool (*CondVarWaitTimeoutFn)(CondVar *cv, Mutex *mx, int timeout); - typedef void (*CondVarWakeOneFn)(CondVar *cv); - typedef void (*CondVarWakeAllFn)(CondVar *cv); -+#endif - - void DXXAPI _init_threading(); - -+#if 0 - void DXXAPI _init_threading( - MutexNewFn, MutexFreeFn, MutexLockFn, MutexUnlockFn, - CondVarNewFn, CondVarFreeFn, CondVarWaitFn, CondVarWaitTimeoutFn, CondVarWakeOneFn, CondVarWakeAllFn -@@ -312,6 +315,7 @@ - cv->wake_all(); - } - }; -+#endif - - } /* namespace DBus */ - ---- libdbus-c++-0.9.0/src/dispatcher.cpp.threading 2017-02-15 13:48:22.627249868 +0000 -+++ libdbus-c++-0.9.0/src/dispatcher.cpp 2017-02-15 13:48:29.164253445 +0000 -@@ -253,6 +253,7 @@ - #endif//DBUS_HAS_THREADS_INIT_DEFAULT - } - -+#if 0 - void DBus::_init_threading( - MutexNewFn m1, - MutexFreeFn m2, -@@ -318,3 +319,4 @@ - #endif//DBUS_HAS_RECURSIVE_MUTEX - dbus_threads_init(&functions); - } -+#endif diff --git a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend b/meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend deleted file mode 100644 index dac44b5e6..000000000 --- a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" -SRC_URI_append = "file://dbus-c++-threading.patch" diff --git a/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb b/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb deleted file mode 100644 index 823cc28a1..000000000 --- a/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb +++ /dev/null @@ -1,164 +0,0 @@ -SUMMARY = "Distribution build manifest" -DESCRIPTION = "The folder /etc/platform-info contains build manifest (SPEC-720)." -LICENSE = "MIT" - -# information distributed by the package is machine specific -PACKAGE_ARCH = "${MACHINE_ARCH}" - -# dependencies of ${DISTRO_MANIFEST_GENERATOR} -DEPENDS = "coreutils-native bash-native git-native gawk-native sed-native jq-native" - -# force a rebuild everytime a build is started -do_compile[nostamp] = "1" - -# borrowed to os-release.bb (output format is very close) -python do_compilestep1 () { - import shutil - with open(d.expand('${B}/bbinfo-deploy'),'w') as f: - allkeys=[] - for field in d.getVar('BUILD_MANIFEST_FIELDS_DEPLOY').split(): - key='DIST_BB_{0}'.format(field) - allkeys.append(key) - value=d.getVar(field) - if value: - f.write('{0}="{1}"\n'.format(key,value)) - f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[deploy]="%s"' % ' '.join(allkeys)) - - with open(d.expand('${B}/bbinfo-target'),'w') as f: - allkeys=[] - for field in d.getVar('BUILD_MANIFEST_FIELDS_TARGET').split(): - key='DIST_BB_{0}'.format(field) - allkeys.append(key) - value=d.getVar(field) - if value: - f.write('{0}="{1}"\n'.format(key,value)) - f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[target]="%s"' % ' '.join(allkeys)) - - with open(d.expand('${B}/bbinfo-sdk'),'w') as f: - allkeys=[] - for field in d.getVar('BUILD_MANIFEST_FIELDS_SDK').split(): - key='DIST_BB_{0}'.format(field) - allkeys.append(key) - value=d.getVar(field) - if value: - f.write('{0}="{1}"\n'.format(key,value)) - f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[sdk]="%s"' % ' '.join(allkeys)) -} - -do_compilestep2 () { - rc=99 - timestamp=${DATETIME} - outfile=${B}/build-info - if [ -x "${DISTRO_MANIFEST_GENERATOR}" -a -f "${DISTRO_SETUP_MANIFEST}" ]; then - rc=0 - for format in bash json; do - if [ "$format" = "json" ]; then - ext=".json" - else - ext="" - fi - for mode in deploy target sdk; do - ${DISTRO_MANIFEST_GENERATOR} -m $mode -f $format -t $timestamp -s ${B}/bbinfo-${mode} ${DISTRO_SETUP_MANIFEST} >${outfile}-${mode}${ext} - rc=$? - if [ $rc -ne 0 ]; then - break - fi - done - done - else - if [ -z "${DISTRO_MANIFEST_GENERATOR}" ]; then - echo "The name of the generation script is not defined." - elif [ ! -f "${DISTRO_MANIFEST_GENERATOR}" ]; then - echo "Generation script ${DISTRO_MANIFEST_GENERATOR} is missing." - elif [ ! -x "${DISTRO_MANIFEST_GENERATOR}" ]; then - echo "Generation script ${DISTRO_MANIFEST_GENERATOR} isn't executable." - fi - if [ -z "${DISTRO_SETUP_MANIFEST}" ]; then - echo "The name of the data file is not defined." - elif [ ! -f "${DISTRO_SETUP_MANIFEST}" ]; then - echo "Data file ${DISTRO_SETUP_MANIFEST} is missing." - fi - echo "You can try to rerun aglsetup.sh to solve that issue." - echo "You can also try to source agl-init-build-env instead of oe-init-build-env." - fi - - if [ "$rc" -ne 0 ]; then - echo "distro-build-manifest generation failed." - fi - return $rc -} - -do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}" -do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}" -do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}" - -# avoid errors "ERROR: When reparsing .../distro-build-manifest/distro-build-manifest.bb.do_compile, the basehash value changed from .... to .... . The metadata is not deterministic and this needs to be fixed." -do_compilestep2[vardepsexclude] = "DATETIME" - -# combine the two steps -python do_compile() { - bb.build.exec_func("do_compilestep1",d) - bb.build.exec_func("do_compilestep2",d) -} - -do_install () { - # install in target dir - install -d ${D}${sysconfdir}/platform-info - install -m 0644 build-info-target ${D}${sysconfdir}/platform-info/build - install -m 0644 build-info-target.json ${D}${sysconfdir}/platform-info/build.json - - # also copy in deploy dir - install -d ${DEPLOY_DIR_IMAGE} - install -m 0644 build-info-deploy ${DEPLOY_DIR_IMAGE}/build-info - install -m 0644 build-info-deploy.json ${DEPLOY_DIR_IMAGE}/build-info.json - - # copy into sdk deploy dir - install -d ${DEPLOY_DIR}/sdk - install -m 0644 build-info-sdk ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info - install -m 0644 build-info-sdk.json ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info.json - - # and copy to nativesdk package - # TODO -} - -# list of variables to add to the various manifests -# smalles one is 'target', then 'deploy' and finally 'sdk' -BUILD_MANIFEST_FIELDS_TARGET = "\ - MACHINE_ARCH \ - MACHINEOVERRIDES \ - MACHINE_FEATURES \ - DISTRO_CODENAME \ - DISTRO_FEATURES \ - DISTRO_BRANCH_VERSION_TAG \ - AGLVERSION \ - AGL_BRANCH \ - AGLRELEASETYPE \ -" - -BUILD_MANIFEST_FIELDS_DEPLOY = "\ - ${BUILD_MANIFEST_FIELDS_TARGET} \ - DISTRO \ - DISTRO_VERSION \ - DISTROOVERRIDES \ - TUNE_FEATURES \ - TUNE_PKGARCH \ - ALL_MULTILIB_PACKAGE_ARCHS \ -" - -BUILD_MANIFEST_FIELDS_SDK = "\ - ${BUILD_MANIFEST_FIELDS_DEPLOY} \ - HOST_SYS \ - TARGET_SYS \ - TARGET_VENDOR \ - SDK_ARCH \ - SDK_VENDOR \ - SDK_VERSION \ - SDK_OS \ -" - -# dont exec useless tasks -do_fetch[noexec] = "1" -do_unpack[noexec] = "1" -do_patch[noexec] = "1" -do_configure[noexec] = "1" - diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend deleted file mode 100644 index 301a1d573..000000000 --- a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend +++ /dev/null @@ -1 +0,0 @@ -RDEPENDS_${PN}_remove_sota = "systemtap" diff --git a/meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h b/meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h deleted file mode 100644 index 447490397..000000000 --- a/meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * pslash - a lightweight framebuffer splashscreen for embedded devices. - * - * Copyright (c) 2012 sleep(5) ltd - * Author: Tomas Frydrych <tomas@sleepfive.com> - * - * This program 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 2, or (at your option) - * any later version. - * - * This program 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. - * - */ - -#ifndef _HAVE_PSPLASH_COLORS_H -#define _HAVE_PSPLASH_COLORS_H - -/* This is the overall background color */ -#define PSPLASH_BACKGROUND_COLOR 0xff,0xff,0xff - -/* This is the color of any text output */ -#define PSPLASH_TEXT_COLOR 0x00,0x00,0x00 - -/* This is the color of the progress bar indicator */ -#define PSPLASH_BAR_COLOR 0x00,0x00,0x00 - -/* This is the color of the progress bar background */ -#define PSPLASH_BAR_BACKGROUND_COLOR 0xff,0xff,0xff - -#endif diff --git a/meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h b/meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h deleted file mode 100644 index c0e8b0818..000000000 --- a/meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h +++ /dev/null @@ -1,5411 +0,0 @@ -/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */ - -#define POKY_IMG_ROWSTRIDE (1800) -#define POKY_IMG_WIDTH (600) -#define POKY_IMG_HEIGHT (400) -#define POKY_IMG_BYTES_PER_PIXEL (3) /* 3:RGB, 4:RGBA */ -#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ - "\377\377\377\377\377\377\377\377\203\377\377\377\1\376\376\376\221\377" \ - "\377\377\1\376\376\376\215\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\376\376\376\206\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\376\376\376\203\377\377\377\5\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\202\376\376\376\207\377\377" \ - "\377\1\376\376\376\205\377\377\377\1\376\376\376\211\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\235\377\377\377\1\376\376\376\203\377" \ - "\377\377\1\376\376\376\213\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\216\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\365\377\377\377\1\376" \ - "\376\376\203\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \ - "\203\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\205\377" \ - "\377\377\1\376\376\376\203\377\377\377\12\376\376\376\377\377\377\346" \ - "\346\346\315\315\315\316\316\316\265\265\265\235\235\235\234\234\234" \ - "\233\233\233\204\204\204\203kkm\202lln\2EEG;;=\215::<\204kkm\3kkkxxx" \ - "\235\235\235\202\234\234\234\1\265\265\265\202\316\316\316\1\332\332" \ - "\332\207\377\377\377\202\376\376\376\2\377\377\377\376\376\376\211\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\203\377\377\377\5\376" \ - "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\366\377\377\377\1\376\376\376\205" \ - "\377\377\377\1\376\376\376\214\377\377\377\11\376\376\376\332\332\332" \ - "\316\316\320\247\247\251\236\236\240\204\204\206kkm__a<<>\202::<\11;" \ - ";=99;;;=99;::<;;=::<;;=99;\203::<\1<<>\213::<\13;;=::<;;=::<;;=::<;;" \ - "=::<;;=::<;;=\207::<\3SSUllnxxz\202\234\234\236\202\316\316\316\2\377" \ - "\377\377\376\376\376\214\377\377\377\1\376\376\376\203\377\377\377\1" \ - "\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\376\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\203\377\377\377" \ - "\7\332\332\334\302\302\304\234\234\236\203\203\205llnEEG;;=\202::<\6" \ - ";;=::<;;=::<;;=99;\204::<\1""99;\202;;=\1""99;\205::<\1;;=\213::<\11" \ - ";;=::<;;=::<;;=::<;;=::<;;=\202::<\1""99;\206::<\1;;=\203::<\13;;=99" \ - ";;;=::<;;=::<kkmxxz\234\234\236\300\300\302\316\316\316\203\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\374\377\377\377\7\346\346\350\301\301\303\235\235\237ww" \ - "y``b99;;;=\202::<\1;;=\204::<\203;;=\3::<99;;;=\207::<\202;;=\204::<" \ - "\203;;=\215::<\1;;=\207::<\11;;=::<;;=99;::<;;=::<99;::<\202;;=\5::<" \ - ";;=::<;;=99;\202::<\2;;=::<\202;;=\6::<SSUkkm\235\235\237\264\264\266" \ - "\332\332\334\210\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\377\377\377\377\377\377\377\377\377\377\377\377\362\377\377\377" \ - "\1\376\376\376\202\377\377\377\11\346\346\350\265\265\267\221\221\223" \ - "kkm::<;;=::<99;;;=\203::<\1;;=\202::<\3""99;::<;;=\202::<\4;;=99;::<" \ - ";;=\204::<\1;;=\202::<\202;;=\1::<\202;;=\202::<\1;;=\203::<\1;;=\211" \ - "::<\2;;=99;\202::<\2;;=99;\206::<\1;;=\202::<\2""99;;;=\210::<\1;;=\202" \ - "::<\1;;=\203::<\1;;=\203::<\1;;=\202::<\4kkm\222\222\224\265\265\267" \ - "\332\332\334\204\377\377\377\1\376\376\376\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\362\377\377\377\12\363\363\363\316\316\316\235\235" \ - "\235jjjFFH;;=::<;;=::<;;=\202::<\1;;=\204::<\1""99;\202::<\2;;=::<\202" \ - ";;=\204::<\7;;=::<;;=::<;;=::<;;=\203::<\1;;=\202::<\1;;=\217::<\2""9" \ - "9;;;=\203::<\1;;=\202::<\4""99;;;=::<;;=\203::<\2;;=99;\202::<\1;;=\207" \ - "::<\1;;=\213::<\1;;=\204::<\7kkk\221\221\221\301\301\301\363\363\363" \ - "\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\321\377\377\377\1\376\376\376\202\377\377\377\1\376" \ - "\376\376\221\377\377\377\1\376\376\376\204\377\377\377\4\363\363\365" \ - "\301\301\303\222\222\224__a\220::<\3;;=::<;;=\204::<\203;;=\203::<\2" \ - ";;=::<\202;;=\4::<;;=::<;;=\204::<\1;;=\202::<\4;;=::<99;;;=\211::<\1" \ - "99;\205::<\202;;=\210::<\5;;=::<;;=::<;;=\203::<\1;;=\212::<\4;;=99;" \ - ";;=99;\211::<\4SSU\204\204\206\266\266\270\345\345\345\221\377\377\377" \ - "\1\376\376\376\204\377\377\377\202\376\376\376\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\266\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\207\377\377\377\1\376\376" \ - "\376\210\377\377\377\10\363\363\363\301\301\301\221\221\221``b99;;;=" \ - "::<;;=\213::<\3;;=::<;;=\203::<\1;;=\204::<\2;;=99;\202::<\1""99;\202" \ - ";;=\204::<\1;;=\210::<\202;;=\202::<\2;;=99;\215::<\1;;=\204::<\1;;=" \ - "\205::<\5;;=99;;;=::<;;=\202::<\202;;=\4""99;;;=::<;;=\203::<\1;;=\204" \ - "::<\3;;=99;;;=\210::<\11;;=::<;;=99;;;=SSS\205\205\205\266\266\266\363" \ - "\363\363\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376" \ - "\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\266\377\377\377\1\376\376\376" \ - "\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\207\377" \ - "\377\377\5\376\376\376\333\333\335\250\250\252kkm;;=\203::<\202;;=\212" \ - "::<\10;;=::<;;=::<;;=::<;;=::<\202;;=\206::<\10;;=::<;;=::<;;=::<;;=" \ - "::<\202;;=\2::<;;=\203::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\211::<\1" \ - "99;\202;;=\203::<\1;;=\205::<\1;;=\204::<\1;;=\206::<\203;;=\202::<\1" \ - ";;=\206::<\1;;=\213::<\1;;=\204::<\1;;=\202::<\3__a\221\221\223\316\316" \ - "\316\204\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\207" \ - "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\267\377\377\377\202\376\376\376\210\377\377\377\1\376\376\376\207" \ - "\377\377\377\3\301\301\301\204\204\206SSU\203::<\3;;=::<;;=\202::<\2" \ - "99;;;=\215::<\1;;=\204::<\2;;=99;\202::<\202;;=\202::<\7""99;::<;;=:" \ - ":<;;=99;;;=\202::<\2""99;;;=\202::<\1;;=\207::<\1;;=\211::<\2""99;;;" \ - "=\202::<\3;;=::<;;=\202::<\2""99;;;=\206::<\4;;=::<;;=::<\202;;=\206" \ - "::<\3;;=::<;;=\202::<\5;;=::<;;=99;;;=\220::<\2;;=::<\202;;=\5""99;G" \ - "GIxxx\265\265\265\363\363\363\207\377\377\377\1\376\376\376\205\377\377" \ - "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\274" \ - "\377\377\377\1\376\376\376\204\377\377\377\202\376\376\376\4\364\364" \ - "\364\265\265\265xxz;;=\20299;\202::<\1""99;\204::<\3;;=::<;;=\213::<" \ - "\1;;=\203::<\3;;=::<;;=\207::<\2;;=::<\202;;=\4""99;;;=::<;;=\202::<" \ - "\5__allnkkm\221\221\223\235\235\237\202\234\234\236\6\317\317\317\315" \ - "\315\315\317\317\317\315\315\315\316\316\316\346\346\346\213\377\377" \ - "\377\3\376\376\376\377\377\377\346\346\346\204\316\316\316\5\316\316" \ - "\320\251\251\253\234\234\236\233\233\235\235\235\237\203kkm\202::<\1" \ - ";;=\202::<\6;;=::<;;=99;::<;;=\205::<\2;;=::<\203;;=\202::<\1;;=\212" \ - "::<\1;;=\202::<\1;;=\202::<\1;;=\204::<\1;;=\202::<\3lln\250\250\252" \ - "\346\346\350\206\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \ - "\376\377\377\377\377\377\377\377\377\377\377\377\377\271\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\4\362\362" \ - "\362\266\266\270xxz::<\202;;=\202::<\10;;=::<99;;;=::<;;=::<;;=\203:" \ - ":<\1;;=\213::<\3;;=::<;;=\205::<\1;;=\202::<\1<<>\202::<\7llnkkm\233" \ - "\233\235\235\235\237\302\302\304\316\316\320\347\347\351\241\377\377" \ - "\377\202\376\376\376\203\377\377\377\17\376\376\376\377\377\377\376\376" \ - "\376\377\377\377\376\376\376\363\363\363\316\316\316\315\315\315\234" \ - "\234\234\235\235\235xxxllnFFH::<;;=\205::<\5;;=99;;;=::<;;=\212::<\202" \ - ";;=\212::<\5;;=99;;;=::<99;\202::<\5__a\250\250\252\346\346\346\377\377" \ - "\377\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\271\377\377\377\202\376\376\376\2\377\377\377" \ - "\376\376\376\203\377\377\377\3\363\363\363\266\266\266wwy\202;;=\210" \ - "::<\1<<>\203::<\2<<>99;\215::<\1;;=\205::<\11;;=::<;;;___xxx\235\235" \ - "\235\266\266\266\315\315\315\364\364\364\207\377\377\377\1\376\376\376" \ - "\213\377\377\377\1\376\376\376\231\377\377\377\5\376\376\376\377\377" \ - "\377\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376" \ - "\204\377\377\377\1\376\376\376\202\377\377\377\5\316\316\316\302\302" \ - "\302\233\233\233yyykkk\202::<\6;;=::<;;=::<99;;;=\211::<\1;;=\202::<" \ - "\1;;=\206::<\1""99;\202;;=\202::<\203;;=\1""99;\202::<\3__a\251\251\253" \ - "\346\346\346\204\377\377\377\3\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\266\377\377\377\1\376\376" \ - "\376\202\377\377\377\2\302\302\302xxx\203::<\3;;=::<;;=\232::<\1;;=\202" \ - "::<\6RRTkkm\235\235\237\301\301\303\332\332\334\376\376\376\222\377\377" \ - "\377\1\376\376\376\260\377\377\377\3\376\376\376\377\377\377\376\376" \ - "\376\202\377\377\377\5\345\345\347\316\316\320\235\235\237xxzSSU\215" \ - "::<\202;;=\202::<\203;;=\2::<;;=\203::<\1;;=\204::<\10;;=::<;;=::<;;" \ - "=kkm\266\266\266\363\363\363\202\377\377\377\1\376\376\376\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\245\377\377\377\1\376\376\376\214" \ - "\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376\377\377\377" \ - "\332\332\332\205\205\207GGI\202::<\1;;=\211::<\202;;=\205::<\2;;=::<" \ - "\202;;=\203::<\14;;=99;::<;;=99;;;=FFFxxx\234\234\234\315\315\315\364" \ - "\364\364\376\376\376\323\377\377\377\4\317\317\317\250\250\250xxxSSS" \ - "\202::<\1;;=\206::<\2;;=::<\203;;=\202::<\2;;=99;\204::<\7;;=::<;;=:" \ - ":<;;=::<;;=\204::<\3\204\204\206\301\301\301\376\376\376\220\377\377" \ - "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\225" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\206\377\377" \ - "\377\1\376\376\376\202\377\377\377\4\363\363\363\251\251\251___;;=\202" \ - "::<\1;;=\202::<\202;;=\204::<\1;;=\202::<\7;;=::<;;=::<;;=::<;;=\203" \ - "::<\3""99;::<;;=\202::<\5;;=__a\221\221\223\265\265\267\346\346\346\323" \ - "\377\377\377\1\376\376\376\211\377\377\377\5\363\363\363\301\301\303" \ - "\235\235\237lln::<\202;;=\203::<\1;;=\204::<\1;;=\202::<\2""99;;;=\205" \ - "::<\2;;=99;\203::<\1""99;\204::<\3TTT\233\233\233\346\346\346\207\377" \ - "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\250\377\377\377\3\316\316\316\204\204\204;;=\203::<\1;;=\203::<\1;;" \ - "=\202::<\1;;=\205::<\3;;=::<;;=\202::<\4""99;;;=::<;;=\202::<\202;;=" \ - "\4___\221\221\221\301\301\303\363\363\365\203\377\377\377\1\376\376\376" \ - "\203\377\377\377\202\376\376\376\321\377\377\377\1\376\376\376\210\377" \ - "\377\377\1\376\376\376\202\377\377\377\4\316\316\316\235\235\235kkk;" \ - ";=\202::<\202;;=\203::<\5;;=::<;;=99;;;=\204::<\202;;=\7::<;;=99;::<" \ - ";;=::<;;=\202::<\202;;=\2xxz\302\302\304\213\377\377\377\1\376\376\376" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\1\376" \ - "\376\376\212\377\377\377\3\363\363\363\266\266\266TTV\203::<\3;;=::<" \ - ";;=\202::<\203;;=\202::<\202;;=\205::<\1;;=\202::<\1;;=\204::<\4SSU\221" \ - "\221\223\301\301\301\363\363\363\206\377\377\377\1\376\376\376\203\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\315\377\377\377" \ - "\202\376\376\376\202\377\377\377\1\376\376\376\210\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\3\316\316\316" \ - "\221\221\223__a\203::<\1;;=\203::<\3;;=::<;;=\203::<\5;;=99;;;=::<;;" \ - "=\204::<\1""99;\205::<\3SSU\234\234\236\346\346\346\207\377\377\377\3" \ - "\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\233\377\377\377\4\376\376\376\347\347\347\221\221\221" \ - "FFH\207::<\4""99;;;=::<;;=\20299;\202;;=\202::<\1;;=\203::<\2;;=::<\202" \ - ";;=\202::<\3xxz\250\250\252\346\346\350\215\377\377\377\203\376\376\376" \ - "\316\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\211\377" \ - "\377\377\1\376\376\376\211\377\377\377\4\363\363\363\265\265\267\205" \ - "\205\207FFH\210::<\3;;=::<;;=\204::<\1;;=\207::<\2;;=::<\202;;=\2\203" \ - "\203\205\317\317\321\206\377\377\377\1\376\376\376\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\233\377\377\377\3\316\316\316yy{99;\206" \ - "::<\2;;=99;\202;;=\205::<\5""99;::<;;=::<;;=\202::<\6;;=::<;;=SSU\204" \ - "\204\204\301\301\301\226\377\377\377\1\376\376\376\317\377\377\377\1" \ - "\376\376\376\203\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\202" \ - "\377\377\377\3\316\316\316\221\221\221SSU\203::<\3;;=::<99;\204::<\1" \ - ";;=\203::<\2""99;;;=\202::<\1;;=\204::<\5""99;<<>::<kkk\264\264\264\203" \ - "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\232\377\377\377\2\266\266\270__a\202::<\5;;=::<;;=::<99;\202;;=" \ - "\10::<;;=::<;;=::<;;=99;;;=\202::<\11;;=::<99;;;=::<;;=SSU\221\221\223" \ - "\331\331\331\211\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\324\377\377\377\1\376\376\376\202" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377\377\1" \ - "\376\376\376\214\377\377\377\14\332\332\332\251\251\251``b::<;;=::<;" \ - ";=99;::<;;=::<;;=\202::<\3;;=99;;;=\203::<\1;;=\202::<\10;;=99;;;=::" \ - "<;;=SSU\250\250\252\363\363\363\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\231\377\377\377\2\265\265\265SSU\216::<\4;;=::<99;;;=\205::" \ - "<\10;;=SSU\222\222\224\332\332\334\377\377\377\376\376\376\377\377\377" \ - "\376\376\376\205\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\327\377\377\377\1\376\376\376\202" \ - "\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\207\377\377" \ - "\377\1\376\376\376\216\377\377\377\4\347\347\351\250\250\252``b::<\202" \ - ";;=\202::<\1;;=\203::<\1;;=\203::<\1;;=\202::<\3;;=::<;;=\202::<\6""9" \ - "9;;;=::<FFF\233\233\233\363\363\363\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\206\377\377\377\3\376\376\376\377\377\377\376\376\376\213" \ - "\377\377\377\4\363\363\365\234\234\236FFH;;=\206::<\2""99;;;=\204::<" \ - "\202;;=\2::<;;=\206::<\4FFH\204\204\206\333\333\333\376\376\376\264\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\327\377\377\377\4\346" \ - "\346\346\221\221\221SSS:::\202::<\1;;=\204::<\3;;=::<;;=\214::<\3GGI" \ - "\221\221\223\347\347\347\211\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\376\376\376\377\377\377\377\377\377\377\377\371\377\377\377\1\376" \ - "\376\376\207\377\377\377\5\363\363\363\234\234\234FFH::<;;=\204::<\1" \ - ";;=\202::<\1;;=\203::<\1;;=\204::<\1;;=\203::<\5;;=xxz\300\300\302\377" \ - "\377\377\376\376\376\267\377\377\377\1\376\376\376\202\377\377\377\1" \ - "\376\376\376\215\377\377\377\1\376\376\376\303\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\204\377\377\377\4\332\332\332\203\203\205" \ - "GGI99;\207::<\202;;=\203::<\6;;=::<;;=::<;;=99;\202;;=\202::<\3\204\204" \ - "\204\346\346\346\376\376\376\205\377\377\377\1\376\376\376\377\377\377" \ - "\377\377\377\377\377\373\377\377\377\1\376\376\376\203\377\377\377\1" \ - "\376\376\376\204\377\377\377\3\362\362\362\234\234\236GGI\203::<\15;" \ - ";=::<;;=::<;;=::<;;=99;;;=::<;;=::<99;\202;;=\7::<;;=99;::<```\250\250" \ - "\250\363\363\363\202\377\377\377\1\375\375\375\272\377\377\377\1\376" \ - "\376\376\214\377\377\377\1\376\376\376\306\377\377\377\1\375\375\375" \ - "\210\377\377\377\6\265\265\265lln::<;;=::<;;=\202::<\5;;=99;;;=::<99" \ - ";\205::<\1;;=\206::<\4\204\204\206\345\345\345\377\377\377\376\376\376" \ - "\207\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\372\377" \ - "\377\377\1\376\376\376\202\377\377\377\3\364\364\364\233\233\235GGI\202" \ - "::<\203;;=\2""99;;;=\202::<\3""99;::<;;=\202::<\13;;=99;::<;;=::<;;=" \ - "::<FFH\204\204\204\333\333\333\376\376\376\204\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\376\376\376\304\377\377\377\1\376\376\376\317" \ - "\377\377\377\4\346\346\346\221\221\223GGI99;\204::<\1""99;\202;;=\2:" \ - ":<;;=\204::<\1;;=\204::<\202;;=\3::<\221\221\223\364\364\364\203\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377" \ - "\377\377\377\377\371\377\377\377\1\376\376\376\202\377\377\377\6\265" \ - "\265\267SSU::<99;::<;;=\203::<\1;;=\202::<\1;;=\204::<\3;;=::<;;=\202" \ - "::<\6;;=SSS\264\264\264\363\363\363\377\377\377\376\376\376\204\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\267\377\377\377\1\376\376" \ - "\376\221\377\377\377\1\376\376\376\307\377\377\377\1\376\376\376\207" \ - "\377\377\377\4\376\376\376\377\377\377\266\266\266kkm\202::<\1;;=\202" \ - "::<\6;;=::<99;;;=99;;;=\205::<\3;;=::<99;\202::<\4GGI\234\234\234\363" \ - "\363\363\376\376\376\377\377\377\377\377\377\377\377\375\377\377\377" \ - "\4\376\376\376\377\377\377\265\265\265SSU\202::<\1;;=\204::<\1;;=\203" \ - "::<\3;;=99;;;=\205::<\202;;=\2yyy\316\316\316\203\377\377\377\1\376\376" \ - "\376\206\377\377\377\3\376\376\376\377\377\377\376\376\376\263\377\377" \ - "\377\1\376\376\376\205\377\377\377\2\315\315\315;;;\211::<\3;;;:::\315" \ - "\315\315\202\377\377\377\1\376\376\376\312\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\205\377\377\377\5\346\346\346\204\204\204FF" \ - "H::<;;=\202::<\4;;=::<;;=::<\203;;=\203::<\2<<>99;\202::<\4""99;;;=F" \ - "FF\234\234\234\377\377\377\377\377\377\377\377\375\377\377\377\11\316" \ - "\316\320kkm::<;;=::<;;=99;::<;;=\203::<\202;;=\2::<99;\205::<\13;;=F" \ - "FH\221\221\221\346\346\346\376\376\376\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376" \ - "\273\377\377\377\2\376\376\376\317\317\317\212::<\6;;=;;;\316\316\316" \ - "\376\376\376\377\377\377\376\376\376\304\377\377\377\1\376\376\376\206" \ - "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\204\377\377\377\4\363\363\363\235\235\235RRT;;=\202::<\202;;=\7" \ - "::<;;=99;::<;;=::<;;=\203::<\1;;=\202::<\6;;=::<SSU\264\264\264\377\377" \ - "\377\376\376\376\377\377\377\377\377\377\377\377\367\377\377\377\3\346" \ - "\346\346xxz;;=\205::<\1;;=\203::<\3;;=::<;;=\207::<\3SSU\247\247\251" \ - "\363\363\363\217\377\377\377\1\376\376\376\272\377\377\377\1\316\316" \ - "\316\213::<\2;;=\316\316\316\306\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\221\377\377\377\4\265\265\267SSU;;=99;\202::<\2""99;;;=" \ - "\206::<\1;;=\204::<\1;;=\202::<\3jjj\317\317\317\376\376\376\377\377" \ - "\377\377\377\377\377\377\343\377\377\377\1\376\376\376\211\377\377\377" \ - "\1\376\376\376\206\377\377\377\2\363\363\363\233\233\233\210::<\1;;=" \ - "\203::<\1;;=\203::<\1;;=\203::<\2SSS\265\265\265\315\377\377\377\1\316" \ - "\316\316\214::<\1\316\316\316\334\377\377\377\3\316\316\316kkk::<\202" \ - ";;=\206::<\1;;=\202::<\1;;=\202::<\7""99;;;=::<;;=::<\204\204\206\346" \ - "\346\350\377\377\377\377\377\377\377\377\347\377\377\377\1\376\376\376" \ - "\212\377\377\377\3\265\265\265SSS::<\202;;=\205::<\1;;=\202::<\202;;" \ - "=\202::<\1;;=\203::<\2lln\265\265\267\203\377\377\377\1\376\376\376\313" \ - "\377\377\377\1\316\316\316\214::<\1\316\316\316\336\377\377\377\6\316" \ - "\316\316kkm::<;;=::<;;=\202::<\3;;=::<;;=\204::<\10;;=99;;;=::<99;;;" \ - "=FFH\234\234\234\210\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\377\377\377\377\377\327\377\377\377\2\376\376\376\377\377" \ - "\377\202\376\376\376\205\377\377\377\1\376\376\376\203\377\377\377\5" \ - "\332\332\332kkk;;=::<;;=\205::<\4;;=::<;;=::<\202;;=\2::<;;=\203::<\2" \ - "kkm\317\317\317\204\377\377\377\1\376\376\376\314\377\377\377\1\316\316" \ - "\316\214::<\1\316\316\316\336\377\377\377\14\376\376\376\377\377\377" \ - "\316\316\316\204\204\206;;=::<;;=::<;;=99;::<;;=\205::<\11;;=99;;;=9" \ - "9;::<;;;RRR\317\317\317\376\376\376\204\377\377\377\1\376\376\376\377" \ - "\377\377\377\377\377\377\377\332\377\377\377\202\376\376\376\211\377" \ - "\377\377\2\363\363\363\221\221\223\203::<\1;;=\207::<\1;;=\202::<\202" \ - ";;=\10::<99;::<lln\316\316\316\376\376\376\377\377\377\376\376\376\206" \ - "\377\377\377\1\376\376\376\311\377\377\377\1\316\316\316\214::<\1\316" \ - "\316\316\335\377\377\377\7\376\376\376\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\347\347\347kkm\202::<\2""88:;;=\203::<\1;;=\204::<\3" \ - ";;=99;;;=\202::<\4;;=::<xxx\346\346\346\206\377\377\377\1\376\376\376" \ - "\377\377\377\377\377\377\377\377\331\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\203\377\377\377\4\376\376\376\377\377\377\300\300\302" \ - "SSU\207::<\1;;=\202::<\1;;=\205::<\4""99;;;=SSU\316\316\316\204\377\377" \ - "\377\1\376\376\376\205\377\377\377\1\376\376\376\202\377\377\377\1\376" \ - "\376\376\307\377\377\377\1\316\316\316\214::<\1\316\316\316\334\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\204\377\377\377\3\317" \ - "\317\317kkm;;=\205::<\3;;=::<99;\203::<\1;;=\204::<\3;;=FFH\250\250\250" \ - "\205\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377" \ - "\377\377\377\377\326\377\377\377\1\376\376\376\204\377\377\377\4\376" \ - "\376\376\377\377\377\347\347\351xxz\202::<\1;;=\204::<\1;;=\203::<\1" \ - ";;=\204::<\4""99;;;=SSU\266\266\266\205\377\377\377\1\376\376\376\202" \ - "\377\377\377\1\376\376\376\205\377\377\377\1\375\375\375\310\377\377" \ - "\377\1\316\316\316\214::<\1\316\316\316\344\377\377\377\7\376\376\376" \ - "\377\377\377\316\316\316kkm;;=::<99;\202::<\203;;=\2::<;;=\204::<\1;" \ - ";=\202::<\3;;=__a\332\332\334\377\377\377\377\377\377\377\377\335\377" \ - "\377\377\1\376\376\376\204\377\377\377\4\250\250\252FFH::<;;=\202::<" \ - "\3;;=::<;;=\202::<\3""99;::<;;=\202::<\1;;=\202::<\4HHJ\250\250\250\377" \ - "\377\377\376\376\376\206\377\377\377\202\376\376\376\205\377\377\377" \ - "\1\376\376\376\311\377\377\377\1\316\316\316\214::<\1\316\316\316\345" \ - "\377\377\377\1\376\376\376\202\377\377\377\2\301\301\301SSU\202::<\1" \ - ";;=\202::<\2""99;;;=\212::<\3;;=\233\233\233\363\363\363\377\377\377" \ - "\377\377\377\377\377\331\377\377\377\1\376\376\376\204\377\377\377\2" \ - "\346\346\346kkk\211::<\3;;=99;;;=\206::<\2\235\235\237\363\363\363\205" \ - "\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\321\377\377" \ - "\377\1\316\316\316\214::<\1\316\316\316\352\377\377\377\2\250\250\252" \ - "GGI\206::<\5;;=::<;;=::<;;=\202::<\202;;=\4::<:::SSS\316\316\316\203" \ - "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\330\377\377" \ - "\377\2\251\251\251FFH\203::<\1""99;\207::<\1;;=\204::<\3;;=xxx\346\346" \ - "\346\334\377\377\377\1\316\316\316\214::<\1\316\316\316\350\377\377\377" \ - "\13\376\376\376\377\377\377\376\376\376\363\363\363\234\234\23699;;;" \ - "=::<;;=99;;;=\202::<\2""99;;;=\206::<\202;;=\2\221\221\223\363\363\363" \ - "\204\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \ - "\1\376\376\376\377\377\377\377\377\377\377\377\316\377\377\377\2\346" \ - "\346\346kkk\202;;=\206::<\1;;=\203::<\3;;=::<;;=\202::<\2``b\316\316" \ - "\320\336\377\377\377\1\316\316\316\214::<\1\316\316\316\353\377\377\377" \ - "\4\376\376\376\377\377\377\350\350\352kkm\206::<\2;;=99;\203::<\1;;=" \ - "\203::<\6;;=::<TTV\331\331\331\377\377\377\376\376\376\207\377\377\377" \ - "\1\376\376\376\377\377\377\377\377\377\377\377\306\377\377\377\1\376" \ - "\376\376\203\377\377\377\5\376\376\376\377\377\377\266\266\266EEG;;=" \ - "\203::<\1;;=\203::<\1;;=\204::<\202;;=\3::<GGI\250\250\252\205\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\327\377\377\377\1\316" \ - "\316\316\214::<\1\316\316\316\351\377\377\377\1\376\376\376\203\377\377" \ - "\377\5\376\376\376\377\377\377\316\316\316TTV;;=\203::<\3;;=::<;;=\204" \ - "::<\202;;=\5::<;;=99;;;=\234\234\236\207\377\377\377\1\376\376\376\377" \ - "\377\377\377\377\377\377\377\303\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\203\377\377\377\6\376\376\376\377\377\377\364\364\364ww" \ - "y::<;;=\202::<\202;;=\202::<\5;;=::<99;::<;;=\202::<\4;;=::<\204\204" \ - "\206\363\363\363\202\377\377\377\1\376\376\376\202\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\331\377\377\377\1\316\316\316\214::" \ - "<\1\316\316\316\353\377\377\377\1\376\376\376\204\377\377\377\11\376" \ - "\376\376\234\234\234GGI::<;;=::<;;=::<;;=\207::<\1;;=\202::<\2__a\332" \ - "\332\332\377\377\377\377\377\377\377\377\320\377\377\377\4\316\316\316" \ - "FFH::<;;=\202::<\1;;=\207::<\2;;=99;\202;;=\3__a\316\316\320\376\376" \ - "\376\342\377\377\377\1\316\316\316\214::<\1\316\316\316\361\377\377\377" \ - "\5\376\376\376\347\347\347lln::<;;=\210::<\1""99;\202::<\7;;=::<99;G" \ - "GI\247\247\247\377\377\377\376\376\376\202\377\377\377\1\376\376\376" \ - "\377\377\377\377\377\377\377\377\305\377\377\377\1\376\376\376\203\377" \ - "\377\377\3\221\221\221:::;;=\203::<\1;;=\202::<\1;;=\203::<\1;;=\202" \ - "::<\4;;=FFH\234\234\234\376\376\376\202\377\377\377\1\375\375\375\202" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\332\377\377" \ - "\377\1\316\316\316\214::<\1\316\316\316\364\377\377\377\3\301\301\303" \ - "FFH;;=\206::<\1;;=\205::<\5;;=99;;;=yy{\363\363\363\377\377\377\377\377" \ - "\377\377\377\312\377\377\377\3\346\346\346^^`;;=\207::<\1;;=\203::<\1" \ - ";;=\203::<\2jjl\346\346\350\202\377\377\377\1\376\376\376\213\377\377" \ - "\377\1\375\375\375\327\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\360\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \ - "\2\363\363\363\220\220\220\202;;=\203::<\2;;=99;\206::<\1;;=\202::<\2" \ - "SSU\316\316\320\202\377\377\377\1\376\376\376\377\377\377\377\377\377" \ - "\377\377\303\377\377\377\4\376\376\376\377\377\377\302\302\302FFH\217" \ - "::<\2GGI\250\250\252\205\377\377\377\1\376\376\376\211\377\377\377\3" \ - "\376\376\376\377\377\377\376\376\376\326\377\377\377\1\316\316\316\214" \ - "::<\1\316\316\316\356\377\377\377\1\376\376\376\210\377\377\377\3\316" \ - "\316\316SSU;;=\203::<\202;;=\207::<\1;;=\202::<\1\235\235\237\377\377" \ - "\377\377\377\377\377\377\306\377\377\377\1\221\221\221\202::<\2;;=99" \ - ";\203::<\3;;=::<;;=\203::<\1;;=\202::<\2kkm\346\346\346\351\377\377\377" \ - "\1\316\316\316\214::<\1\316\316\316\370\377\377\377\2\362\362\362\221" \ - "\221\221\204::<\3;;=::<;;=\206::<\1;;=\202::<\2xxz\362\362\364\377\377" \ - "\377\377\377\377\377\377\301\377\377\377\3\376\376\376\363\363\363__" \ - "_\204::<\3;;=::<;;=\202::<\2;;=99;\202;;=\4::<99;GGI\250\250\252\353" \ - "\377\377\377\1\316\316\316\214::<\1\316\316\316\366\377\377\377\1\376" \ - "\376\376\203\377\377\377\2\317\317\317SSS\211::<\202;;=\6""99;;;=99;" \ - "::<SSU\332\332\332\202\377\377\377\1\376\376\376\377\377\377\377\377" \ - "\377\377\377\267\377\377\377\11\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\317\317\321FFH;;=\202::<\3;;=::<99;" \ - "\203::<\203;;=\202::<\4;;=lll\346\346\346\376\376\376\353\377\377\377" \ - "\1\316\316\316\214::<\1\316\316\316\367\377\377\377\1\376\376\376\202" \ - "\377\377\377\5\376\376\376\363\363\363\221\221\223;;=99;\202;;=\3::<" \ - "99;;;=\202::<\202;;=\6::<;;=::<;;=::<\265\265\265\202\377\377\377\1\376" \ - "\376\376\377\377\377\377\377\377\377\377\273\377\377\377\1\250\250\252" \ - "\202::<\2""99;;;=\203::<\1;;=\202::<\1;;=\204::<\3;;=\250\250\250\376" \ - "\376\376\205\377\377\377\1\376\376\376\347\377\377\377\1\316\316\316" \ - "\214::<\1\316\316\316\373\377\377\377\5\376\376\376\377\377\377\300\300" \ - "\300FFH;;=\202::<\1;;=\202::<\3;;=::<;;=\202::<\2;;=::<\202;;=\4\205" \ - "\205\207\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377" \ - "\377\377\267\377\377\377\3\376\376\376\364\364\364\205\205\207\202::" \ - "<\202;;=\15""99;;;=::<;;=::<;;=::<99;;;=99;;;=__a\331\331\331\357\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\366\377\377\377\1\376\376" \ - "\376\203\377\377\377\1\376\376\376\203\377\377\377\2\363\363\363kkm\215" \ - "::<\4;;=99;__a\363\363\363\202\377\377\377\1\376\376\376\377\377\377" \ - "\377\377\377\377\377\265\377\377\377\4\347\347\351__a::<;;=\203::<\1" \ - ";;=\202::<\1;;=\203::<\1;;=\202::<\2\221\221\223\363\363\363\360\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\364\377\377\377\1\376\376" \ - "\376\203\377\377\377\1\376\376\376\207\377\377\377\2\251\251\253;;=\203" \ - "::<\1;;=\203::<\1;;=\203::<\203;;=\3FFH\332\332\332\376\376\376\377\377" \ - "\377\377\377\377\377\377\265\377\377\377\4\331\331\331FFH::<;;=\203:" \ - ":<\1;;=\202::<\1;;=\205::<\2FFH\302\302\302\205\377\377\377\7\376\376" \ - "\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\376" \ - "\376\376\346\377\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377" \ - "\377\202\377\377\377\2\332\332\332SSU\203::<\1;;=\203::<\12""99;;;=:" \ - ":<99;::<;;=99;;;=\266\266\266\376\376\376\377\377\377\377\377\377\377" \ - "\377\263\377\377\377\1\265\265\265\202::<\1;;=\205::<\202;;=\202::<\1" \ - ";;=\202::<\2__a\346\346\350\203\377\377\377\1\376\376\376\357\377\377" \ - "\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\203\377\377\377" \ - "\2\363\363\363\204\204\204\202::<\1;;=\203::<\1;;=\205::<\1;;=\202::" \ - "<\1\221\221\221\377\377\377\377\377\377\377\377\262\377\377\377\4\235" \ - "\235\237;;=::<;;=\203::<\1;;=\206::<\3;;=::<\222\222\222\202\377\377" \ - "\377\1\376\376\376\362\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\377\377\377\377\205\377\377\377\3\265\265\265:::;;=\206::<\5;;=::<;" \ - ";=::<;;=\202::<\2\204\204\206\363\363\363\212\377\377\377\1\376\376\376" \ - "\377\377\377\377\377\377\377\377\236\377\377\377\1\376\376\376\202\377" \ - "\377\377\4\376\376\376\377\377\377\376\376\377\204\204\206\206::<\12" \ - ";;=::<;;=::<;;=::<;;=::<FFH\301\301\301\366\377\377\377\1\316\316\316" \ - "\214::<\1\316\316\316\377\377\377\377\206\377\377\377\4\333\333\333S" \ - "SU::<;;=\205::<\4;;=::<;;=::<\202;;=\3::<__a\364\364\364\202\377\377" \ - "\377\1\376\376\376\205\377\377\377\1\376\376\376\202\377\377\377\1\376" \ - "\376\376\377\377\377\377\377\377\377\377\236\377\377\377\4\376\376\376" \ - "\377\377\377\363\363\365__a\203::<\10""99;;;=::<;;=99;;;=99;;;=\203:" \ - ":<\2__a\332\332\332\203\377\377\377\1\376\376\376\363\377\377\377\1\316" \ - "\316\316\214::<\1\316\316\316\377\377\377\377\207\377\377\377\7\363\363" \ - "\363kkm;;=::<;;=::<;;=\204::<\202;;=\10""99;;;=::<SSU\332\332\332\376" \ - "\376\376\377\377\377\376\376\376\205\377\377\377\1\376\376\376\377\377" \ - "\377\377\377\377\377\377\236\377\377\377\1\376\376\376\202\377\377\377" \ - "\2\346\346\350__a\202::<\4;;=::<;;=99;\204::<\1;;=\203::<\3xxz\362\362" \ - "\362\377\377\377\202\376\376\376\365\377\377\377\1\316\316\316\214::" \ - "<\1\316\316\316\377\377\377\377\210\377\377\377\5\376\376\376\234\234" \ - "\234;;=::<;;=\202::<\14;;=::<;;=99;;;=::<;;=::<;;=FFH\332\332\332\376" \ - "\376\376\203\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\377\377\377\377\377\235\377\377" \ - "\377\4\332\332\332FFH::<;;=\205::<\1;;=\205::<\2;;=\234\234\234\372\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\212\377\377" \ - "\377\2\300\300\300FFH\203::<\1""99;\202::<\2;;=99;\203::<\4;;=::<FFH" \ - "\266\266\266\205\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\377\377\377\377\377\377\377\377\235\377\377\377\3\332\332\332FF" \ - "H;;=\205::<\1;;=\202::<\1""99;\203::<\6FFH\301\301\301\377\377\377\376" \ - "\376\376\377\377\377\376\376\376\207\377\377\377\1\376\376\376\357\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\211\377\377" \ - "\377\4\376\376\376\377\377\377\331\331\331SSU\204::<\6""99;::<;;=::<" \ - ";;=::<\202;;=\202::<\1\266\266\270\203\377\377\377\1\376\376\376\377" \ - "\377\377\377\377\377\377\377\240\377\377\377\2\265\265\265EEG\202::<" \ - "\6;;=::<;;=::<;;=99;\203::<\4;;=::<SSU\332\332\332\203\377\377\377\1" \ - "\376\376\376\207\377\377\377\1\376\376\376\360\377\377\377\1\316\316" \ - "\316\214::<\1\316\316\316\377\377\377\377\212\377\377\377\15\376\376" \ - "\376\377\377\377\363\363\363__a::<;;=99;;;=::<99;;;=::<;;=\202::<\4;" \ - ";=99;;;=\250\250\252\204\377\377\377\1\376\376\376\377\377\377\377\377" \ - "\377\377\377\235\377\377\377\5\265\265\265::<;;=::<;;=\202::<\202;;=" \ - "\2::<;;=\204::<\2__a\364\364\364\206\377\377\377\1\376\376\376\366\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\211\377\377" \ - "\377\1\376\376\376\204\377\377\377\2\204\204\20699;\204::<\1;;=\204:" \ - ":<\5""99;;;=99;::<\204\204\204\377\377\377\377\377\377\377\377\232\377" \ - "\377\377\1\376\376\376\205\377\377\377\2\265\265\267;;=\211::<\1;;=\203" \ - "::<\1\205\205\205\377\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\377\377\377\377\215\377\377\377\12\376\376\376\377\377\377\250\250\250" \ - "::<;;=::<99;;;=::<;;=\202::<\3;;=::<99;\202::<\1\205\205\207\212\377" \ - "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\223\377\377\377" \ - "\1\265\265\267\203::<\202;;=\1""99;\204::<\5;;=::<;;=::<\235\235\237" \ - "\377\377\377\377\2\377\377\377\316\316\316\214::<\1\316\316\316\377\377" \ - "\377\377\216\377\377\377\3\376\376\376\377\377\377\265\265\267\202::" \ - "<\3;;=::<;;=\205::<\1;;=\203::<\1\204\204\204\210\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\220" \ - "\377\377\377\6\234\234\236::<;;=::<;;=99;\204::<\1;;=\204::<\1\265\265" \ - "\265\377\377\377\377\202\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\377\377\377\377\215\377\377\377\1\376\376\376\203\377\377\377\2\334" \ - "\334\334FFH\207::<\202;;=\203::<\3;;=\204\204\206\376\376\376\207\377" \ - "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\216\377\377\377" \ - "\11\376\376\376\377\377\377\376\376\376\204\204\206::<99;;;=::<;;=\204" \ - "::<\6;;=99;;;=::<FFH\301\301\301\377\377\377\377\203\377\377\377\1\316" \ - "\316\316\214::<\1\316\316\316\377\377\377\377\215\377\377\377\1\376\376" \ - "\376\202\377\377\377\202\376\376\376\3\332\332\332FFH::<\202;;=\203:" \ - ":<\3;;=99;;;=\204::<\2\205\205\207\376\376\376\203\377\377\377\1\376" \ - "\376\376\203\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377" \ - "\377\377\377\377\377\377\212\377\377\377\7\376\376\376\377\377\377\376" \ - "\376\376\204\204\20499;::<;;=\202::<\1""99;\205::<\4;;=::<GGI\332\332" \ - "\334\377\377\377\377\204\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\377\377\377\377\217\377\377\377\6\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\362\362\362__a\203::<\202;;=\11""99;;;=::<99;;;=::<;;=:" \ - ":<\204\204\204\205\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\377\377\377\377\377\377\377\377\215\377\377\377\1\204\204\204\202" \ - "::<\1;;=\207::<\1<<>\202::<\2FFH\331\331\333\377\377\377\377\205\377" \ - "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\216\377\377" \ - "\377\1\376\376\376\203\377\377\377\4\376\376\376\377\377\377\363\363" \ - "\363__a\204::<\2;;=99;\206::<\2;;=\204\204\204\203\377\377\377\1\376" \ - "\376\376\377\377\377\377\377\377\377\377\220\377\377\377\1\204\204\204" \ - "\205::<\1;;=\203::<\1;;=\203::<\4__a\363\363\363\377\377\377\376\376" \ - "\376\377\377\377\377\204\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\377\377\377\377\224\377\377\377\4\376\376\376\363\363\363xxx::<\202" \ - ";;=\202::<\1;;=\203::<\1;;=\203::<\1\205\205\207\204\377\377\377\1\376" \ - "\376\376\377\377\377\377\377\377\377\377\215\377\377\377\1\250\250\250" \ - "\205::<\1;;=\203::<\12;;=99;;;=::<__a\363\363\365\377\377\377\376\376" \ - "\376\377\377\377\376\376\376\377\377\377\377\203\377\377\377\1\316\316" \ - "\316\214::<\1\316\316\316\377\377\377\377\227\377\377\377\5\204\204\204" \ - "::<;;=::<;;=\204::<\1""99;\204::<\1\204\204\204\377\377\377\377\377\377" \ - "\377\377\213\377\377\377\1\376\376\376\202\377\377\377\4\376\376\376" \ - "\377\377\377\265\265\267;;=\212::<\4;;=::<__a\363\363\363\217\377\377" \ - "\377\1\376\376\376\367\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\376\377\377\377\202\377\377\375\3\377\376\377\377\377\377\376\377\375" \ - "\224\377\377\377\3\204\204\206::<;;=\211::<\7""99;::<\203\203\205\377" \ - "\377\377\376\376\376\377\377\377\376\376\376\205\377\377\377\1\376\376" \ - "\376\202\377\377\377\202\376\376\376\377\377\377\377\377\377\377\377" \ - "\2\264\264\266;;=\202::<\202;;=\1""99;\207::<\2__a\363\363\365\217\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\366\377\377\377\1\316" \ - "\316\316\214::<\1\316\316\316\375\377\377\377\5\377\377\375\377\376\377" \ - "\377\375\377\377\377\375\377\377\377\202\377\376\377\221\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\204\204\206\203::<\1;;=\202::<\2;;=" \ - "::<\202;;=\202::<\3;;=\204\204\204\376\376\376\211\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\377\377\377\377\375\377\377\377\7\376" \ - "\376\376\264\264\266;;=99;::<;;=99;\204::<\1;;=\203::<\2aac\363\363\363" \ - "\221\377\377\377\1\376\376\376\367\377\377\377\1\316\316\316\214::<\1" \ - "\316\316\316\375\377\377\377\202\376\376\376\203\377\377\377\202\376" \ - "\377\377\222\377\377\377\10\376\376\376\377\377\377\376\376\376\204\204" \ - "\206::<;;=::<;;=\203::<\202;;=\202::<\6""99;;;=\205\205\207\376\376\376" \ - "\377\377\377\376\376\376\203\377\377\377\202\376\376\376\202\377\377" \ - "\377\1\376\376\376\377\377\377\377\375\377\377\377\3\376\376\376\302" \ - "\302\304;;=\203::<\1;;=\204::<\6;;=99;;;=::<aac\362\362\362\223\377\377" \ - "\377\1\376\376\376\366\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\374\377\377\377\6\375\377\376\377\377\375\377\376\377\376\377\377\376" \ - "\376\376\377\377\375\202\377\376\377\225\377\377\377\2\376\376\376\204" \ - "\204\206\206::<\1""99;\203::<\1;;=\202::<\1\251\251\253\204\377\377\377" \ - "\1\376\376\376\377\377\377\377\377\377\377\377\203\377\377\377\4\332" \ - "\332\332FFH::<;;=\202::<\1""99;\205::<\4;;=::<__a\363\363\365\202\377" \ - "\377\377\1\376\376\376\377\377\377\377\211\377\377\377\1\316\316\316" \ - "\214::<\1\316\316\316\374\377\377\377\5\376\377\377\376\376\376\377\376" \ - "\377\377\377\375\376\377\375\202\376\377\377\1\377\377\375\221\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\203\377\377\377\2\204\204" \ - "\206;;=\205::<\1;;=\203::<\7;;=::<;;=\265\265\265\376\376\376\377\377" \ - "\377\376\376\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\377\373\377\377\377\6\331\331\331" \ - "GGI::<;;=::<;;=\205::<\1<<>\202::<\2__a\363\363\365\202\377\377\377\1" \ - "\376\376\376\213\377\377\377\1\376\376\376\375\377\377\377\1\316\316" \ - "\316\214::<\1\316\316\316\374\377\377\377\7\377\376\377\376\377\377\376" \ - "\376\374\377\376\377\377\377\375\376\377\377\377\377\375\226\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\203\203\203\214::<\2;;=\265\265" \ - "\265\206\377\377\377\1\376\376\376\377\377\377\377\374\377\377\377\4" \ - "\364\364\364GGI99;;;=\206::<\1;;=\203::<\2__a\363\363\363\205\377\377" \ - "\377\1\376\376\376\212\377\377\377\1\363\363\363\203\377\377\377\1\376" \ - "\376\376\370\377\377\377\1\316\316\316\214::<\1\316\316\316\374\377\377" \ - "\377\10\377\377\375\377\376\377\377\377\377\377\377\375\377\376\377\370" \ - "\373\362\370\373\364\377\376\377\220\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\204\204\204\203::<\1;;=\210::<\2FFH\332\332\334\204\377\377\377\1" \ - "\376\376\376\377\377\377\377\374\377\377\377\3\363\363\363___;;=\202" \ - "::<\1;;=\204::<\6;;=99;;;=::<__a\363\363\365\220\377\377\377\3\265\265" \ - "\265FFF\333\333\333\373\377\377\377\1\316\316\316\214::<\1\316\316\316" \ - "\376\377\377\377\6\374\377\377\377\377\375\371\374\365\242\320c\240\322" \ - "c\371\372\362\221\377\377\377\1\376\376\376\210\377\377\377\2\203\203" \ - "\203;;=\202::<\1;;=\203::<\1;;=\203::<\3;;=FFH\333\333\333\202\377\377" \ - "\377\1\376\376\376\377\377\377\377\371\377\377\377\1\376\376\376\203" \ - "\377\377\377\2kkm::<\202;;=\1""99;\205::<\202;;=\3::<__a\363\363\363" \ - "\220\377\377\377\5\265\265\267::<;;=FFH\332\332\332\206\377\377\377\3" \ - "\376\376\376\377\377\377\376\376\376\361\377\377\377\1\316\316\316\213" \ - "::<\2;;=\316\316\316\365\377\377\377\22\376\376\377\377\377\375\377\377" \ - "\377\377\377\375\377\377\377\377\376\377\377\377\375\377\377\377\376" \ - "\376\377\377\377\377\371\374\365\242\320c\215\307\77\215\305@\242\322" \ - "e\372\373\365\376\377\375\377\376\377\230\377\377\377\3\205\205\207:" \ - ":<;;=\206::<\1;;=\202::<\4;;=SSU\363\363\365\376\376\376\377\377\377" \ - "\377\374\377\377\377\13\376\376\376\204\204\204::<;;=99;::<;;=::<;;=" \ - "::<;;=\203::<\3__a\364\364\366\376\376\376\217\377\377\377\1\265\265" \ - "\267\203::<\3;;=FFF\332\332\332\206\377\377\377\1\376\376\376\361\377" \ - "\377\377\2\376\376\376\317\317\317\212::<\6;;=;;;\316\316\316\376\376" \ - "\376\377\377\377\376\376\376\361\377\377\377\6\376\376\377\377\376\377" \ - "\375\376\377\376\377\377\377\377\375\375\377\376\202\377\377\377\17\376" \ - "\376\376\377\377\377\371\372\364\240\322a\215\305@\212\307>\215\307\77" \ - "\215\305>\242\320c\370\372\365\377\377\377\377\376\377\376\377\375\377" \ - "\377\375\377\376\377\225\377\377\377\5kkm::<;;=99;;;=\210::<\4__a\364" \ - "\364\364\376\376\376\377\377\377\202\376\376\376\377\377\377\377\363" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\4" \ - "\250\250\252::<;;=99;\202;;=\205::<\202;;=\3FFH\345\345\345\376\376\376" \ - "\217\377\377\377\4\264\264\266;;=::<;;=\203::<\2GGI\332\332\332\203\377" \ - "\377\377\1\376\376\376\356\377\377\377\1\376\376\376\205\377\377\377" \ - "\2\315\315\315;;;\211::<\3;;;:::\315\315\315\202\377\377\377\1\376\376" \ - "\376\361\377\377\377\23\377\377\375\375\376\377\376\377\377\376\377\375" \ - "\377\374\377\377\377\375\375\377\376\377\377\377\377\377\375\371\372" \ - "\364\242\321g\215\306A\212\307>\215\306A\212\306@\214\305@\212\306B\241" \ - "\322_\367\372\361\204\377\377\377\1\377\377\375\220\377\377\377\1\376" \ - "\376\376\203\377\377\377\3\363\363\363__a99;\202::<\6;;=::<99;;;=99;" \ - ";;=\203::<\1\205\205\207\204\377\377\377\1\376\376\376\377\377\377\377" \ - "\362\377\377\377\1\376\376\376\202\377\377\377\22\376\376\376\265\265" \ - "\267::<99;;;=::<;;=99;;;=::<;;=::<;;=::<FFH\331\331\331\377\377\377\376" \ - "\376\376\216\377\377\377\1\265\265\267\203::<\1;;=\202::<\4;;=::<GGI" \ - "\332\332\332\210\377\377\377\1\376\376\376\353\377\377\377\1\376\376" \ - "\376\221\377\377\377\1\376\376\376\363\377\377\377\17\376\377\377\376" \ - "\377\375\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377" \ - "\367\374\365\240\320b\215\307=\213\305=\215\306A\215\305>\214\305@\214" \ - "\306>\202\214\305@\4\241\321a\371\374\365\376\376\377\377\377\375\202" \ - "\376\377\377\221\377\377\377\1\376\376\376\203\377\377\377\3\362\362" \ - "\362``b99;\205::<\1;;=\203::<\6;;=99;\235\235\237\376\376\376\377\377" \ - "\377\376\376\376\377\377\377\377\366\377\377\377\2\332\332\332FFH\202" \ - ";;=\4""99;;;=::<;;=\205::<\2FFH\332\332\334\202\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\213\377\377\377\4\266\266\26699;::<;;=\202" \ - "::<\1;;=\202::<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\376\376\376\375\377\377\377\1\376\376\376\363\377" \ - "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \ - "\377\377\21\370\373\364\241\321c\216\306\77\212\306@\214\306>\215\305" \ - "@\212\306@\213\310=\214\306<\216\306\77\214\304=\214\306>\241\321c\372" \ - "\375\362\376\376\376\377\376\377\376\376\374\220\377\377\377\2\376\376" \ - "\376\377\377\377\203\376\376\376\4\377\377\377\364\364\364FFH;;=\202" \ - "::<\1;;=\202::<\1;;=\203::<\3;;=::<\265\265\265\377\377\377\377\367\377" \ - "\377\377\4\362\362\362SSU::<;;=\205::<\1""99;\202;;=\3::<;;=\265\265" \ - "\267\216\377\377\377\3\376\376\376\377\377\377\265\265\265\202::<\5;" \ - ";=99;;;=::<;;=\204::<\4;;=FFH\332\332\332\376\376\376\205\377\377\377" \ - "\1\376\376\376\355\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \ - "\376\366\377\377\377\1\375\377\376\202\377\377\375\24\377\377\377\376" \ - "\376\376\373\373\363\243\322b\213\307A\214\306>\215\305@\214\305@\212" \ - "\307>\214\306>\215\305>\213\307A\214\305@\216\310@\214\306>\215\305>" \ - "\242\320c\366\373\364\375\377\376\377\376\377\221\377\377\377\1\376\376" \ - "\376\204\377\377\377\3\376\376\376\333\333\333EEG\202;;=\2::<;;=\207" \ - "::<\3GGI\332\332\332\376\376\376\377\377\377\377\365\377\377\377\1__" \ - "a\205::<\10;;=::<;;=::<;;=::<;;=\265\265\265\202\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\213\377\377\377\1\266\266\266\203::<\5""9" \ - "9;<<>::<;;=::<\202;;=\203::<\4;;=FFH\333\333\333\376\376\376\202\377" \ - "\377\377\1\376\376\376\355\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\215\377\377\377\1\376\376\376\363\377\377\377\3\377\376" \ - "\377\377\377\377\375\377\376\202\377\377\377\2\373\373\363\241\321d\202" \ - "\214\306>\17\216\306=\215\305@\215\307\77\214\306>\217\304>\214\306>" \ - "\214\305B\215\307\77\211\305A\215\306A\216\306\77\214\305@\242\322e\370" \ - "\373\364\377\377\375\230\377\377\377\1\333\333\335\203::<\202;;=\206" \ - "::<\3;;=FFH\363\363\363\377\377\377\377\364\377\377\377\1\204\204\206" \ - "\203::<\1;;=\207::<\2;;=\204\204\206\220\377\377\377\1\346\346\346\204" \ - "::<\1;;=\203::<\1;;=\202::<\202;;=\203::<\2FFH\332\332\332\357\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\204\377\377" \ - "\377\1\377\377\375\202\377\377\377\17\377\376\377\370\373\364\243\322" \ - "b\214\306>\213\310\77\212\307>\214\306>\215\306C\212\307>\214\306<\213" \ - "\310\77\214\305@\214\306<\214\306>\216\306\77\203\214\306>\3\214\306" \ - "<\265\334\211\376\376\376\222\377\377\377\1\376\376\376\205\377\377\377" \ - "\4\376\376\377\265\265\267::<;;=\212::<\1___\377\377\377\377\363\377" \ - "\377\377\1\265\265\267\204::<\1;;=\206::<\2;;=\203\203\203\222\377\377" \ - "\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\204::<\3;;=FFH\332\332" \ - "\332\206\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\377\345\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375" \ - "\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370" \ - "\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4" \ - "\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306" \ - ">\215\307\77\214\305@\244\317c\367\375\361\233\377\377\377\3\234\234" \ - "\236::<99;\211::<\2;;=\204\204\206\377\377\377\377\360\377\377\377\13" \ - "\376\376\376\332\332\33299;::<99;;;=::<99;;;=::<;;=\202::<\3;;=^^`\364" \ - "\364\364\223\377\377\377\12\265\265\267;;=::<;;=99;;;=::<;;=::<;;=\202" \ - "::<\1;;=\203::<\3;;=FFF\332\332\332\206\377\377\377\1\376\376\376\377" \ - "\377\377\377\345\377\377\377\6\376\376\377\377\376\377\375\376\377\376" \ - "\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373" \ - "\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212" \ - "\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306" \ - ">\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\233" \ - "\377\377\377\1\204\204\206\203::<\13;;=::<;;=::<;;=::<;;=::<;;=\266\266" \ - "\266\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\352\377" \ - "\377\377\2\363\363\363TTV\202::<\3;;=99;;;=\204::<\4;;=99;FFH\363\363" \ - "\363\224\377\377\377\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<" \ - "\1;;=\203::<\1;;=\203::<\2GGI\332\332\332\203\377\377\377\1\376\376\376" \ - "\377\377\377\377\347\377\377\377\7\377\377\375\375\376\377\376\377\377" \ - "\376\377\375\377\374\377\377\377\375\375\377\376\202\377\377\377\5\372" \ - "\373\366\240\320b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305" \ - "@\212\306@\214\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@" \ - "\214\306>\215\307\77\215\305@\242\320c\370\373\362\377\377\373\377\376" \ - "\377\377\377\375\232\377\377\377\3\376\376\376\377\377\377^^`\202;;=" \ - "\205::<\1""99;\202;;=\5::<;;=\332\332\332\377\377\377\376\376\376\377" \ - "\377\377\377\347\377\377\377\1\376\376\376\204\377\377\377\1lln\204:" \ - ":<\202;;=\203::<\6;;=99;GGI\332\332\332\377\377\377\376\376\376\225\377" \ - "\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;;;=::<\202;;" \ - "=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376\376\377\377" \ - "\377\377\342\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377" \ - "\376\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307" \ - "\77\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216" \ - "\306\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306" \ - ">\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \ - "\234\377\377\377\2\364\364\364RRT\202::<\4""99;;;=::<;;=\205::<\3SSU" \ - "\362\362\362\377\377\377\202\376\376\376\377\377\377\377\351\377\377" \ - "\377\1\234\234\236\204::<\1;;=\203::<\1;;=\203::<\1\265\265\267\231\377" \ - "\377\377\2\265\265\267;;=\203::<\2""99;;;=\202::<\1;;=\202::<\1;;=\202" \ - "::<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\377\377\377\377\342\377\377\377\202\377\377\375\3" \ - "\377\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243" \ - "\322b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B" \ - "\214\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214" \ - "\306>\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377" \ - "\377\375\235\377\377\377\3\376\376\376\332\332\334GGI\202;;=\6::<;;=" \ - "99;;;=::<;;=\203::<\1yyy\202\376\376\376\202\377\377\377\1\376\376\376" \ - "\377\377\377\377\345\377\377\377\4\376\376\376\317\317\317::<;;=\202" \ - "::<\3;;=99;;;=\204::<\6;;=\221\221\223\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\226\377\377\377\3\376\376\376\265\265\267;;=\202::<" \ - "\2;;=99;\205::<\1;;=\204::<\4;;=FFH\332\332\332\376\376\376\205\377\377" \ - "\377\1\376\376\376\377\377\377\377\342\377\377\377\1\375\377\376\202" \ - "\377\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307" \ - "B\212\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214" \ - "\306<\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307" \ - ">\244\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377" \ - "\377\377\375\377\376\377\236\377\377\377\4\265\265\267::<;;=99;\202;" \ - ";=\205::<\202;;=\1\250\250\250\202\377\377\377\1\376\376\376\377\377" \ - "\377\377\343\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363" \ - "FFH;;=\202::<\5;;=::<;;=::<99;\202;;=\2::<kkm\205\377\377\377\1\376\376" \ - "\376\227\377\377\377\1\265\265\265\204::<\6;;=::<;;=::<;;=::<\202;;=" \ - "\203::<\4;;=FFH\333\333\333\376\376\376\202\377\377\377\1\376\376\376" \ - "\377\377\377\377\343\377\377\377\3\377\376\377\377\377\377\375\377\376" \ - "\202\377\377\377\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214" \ - "\305@\213\310=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214" \ - "\306>\215\305>\217\304@\215\307\77\215\307=\242\320c\367\375\361\376" \ - "\376\377\377\376\377\376\376\376\202\377\377\375\2\374\377\377\377\376" \ - "\377\234\377\377\377\1\376\376\376\202\377\377\377\10\221\221\221::<" \ - ";;=99;::<;;=::<;;=\205::<\2\333\333\333\376\376\376\377\377\377\377\347" \ - "\377\377\377\1kkk\202::<\1;;=\205::<\1;;=\202::<\2RRT\363\363\365\236" \ - "\377\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1;;=\202::<\202;;" \ - "=\203::<\2FFH\332\332\332\377\377\377\377\346\377\377\377\1\377\377\375" \ - "\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213\310" \ - "\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307=\214" \ - "\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244\317c" \ - "\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377\377" \ - "\377\202\377\376\377\241\377\377\377\2kkm::<\202;;=\1""99;\204::<\203" \ - ";;=\2SSU\364\364\364\377\377\377\377\336\377\377\377\3\376\376\376\377" \ - "\377\377\376\376\376\204\377\377\377\2\376\376\376\250\250\252\202::" \ - "<\1;;=\210::<\2FFH\333\333\333\202\377\377\377\1\376\376\376\235\377" \ - "\377\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\204::<\3;;=FFH\332" \ - "\332\332\206\377\377\377\3\376\376\376\377\377\377\376\376\376\243\377" \ - "\377\377\4\376\377\377\377\377\375\377\376\377\376\376\377\202\377\377" \ - "\377\2\376\377\375\376\377\377\230\377\377\377\10\376\377\377\377\376" \ - "\377\376\377\377\376\377\375\376\376\376\376\377\377\377\377\377\377" \ - "\376\377\231\377\377\377\7\377\376\377\376\376\374\376\377\377\377\377" \ - "\375\374\377\377\376\377\377\377\376\377\231\377\377\377\17\375\377\374" \ - "\377\377\375\377\377\377\377\376\377\376\377\377\377\376\377\377\377" \ - "\377\376\377\377\376\376\374\377\377\377\377\377\373\377\377\377\376" \ - "\377\377\377\377\377\377\377\375\220\377\377\377\4\377\377\373\377\377" \ - "\377\377\377\375\377\377\377\202\376\377\377\2\377\377\375\377\377\373" \ - "\251\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377" \ - "\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373" \ - "\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214" \ - "\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215" \ - "\307\77\214\305@\244\317c\367\375\361\251\377\377\377\6\363\363\363T" \ - "TT::<;;=::<;;=\206::<\2;;=www\204\377\377\377\1\376\376\376\377\377\377" \ - "\377\340\377\377\377\2\332\332\332;;=\203::<\3;;=99;;;=\203::<\3;;=:" \ - ":<\265\265\267\204\377\377\377\1\376\376\376\235\377\377\377\12\265\265" \ - "\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\203::<\3;;=FFF\332\332\332" \ - "\206\377\377\377\1\376\376\376\244\377\377\377\202\377\377\375\1\377" \ - "\377\377\202\376\377\375\3\376\376\377\377\377\377\377\376\377\230\377" \ - "\377\377\3\376\377\375\377\377\377\377\377\373\202\377\376\377\2\377" \ - "\377\377\376\376\376\231\377\377\377\10\376\377\373\376\375\377\377\377" \ - "\375\377\376\377\377\375\377\377\377\373\377\376\377\377\377\375\230" \ - "\377\377\377\12\377\376\377\377\377\377\377\375\376\376\377\377\376\377" \ - "\372\376\377\377\377\377\377\376\377\375\377\376\377\377\377\375\203" \ - "\377\377\377\202\376\377\375\1\375\376\377\227\377\377\377\1\377\374" \ - "\377\250\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377" \ - "\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241" \ - "\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@" \ - "\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \ - "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\251\377" \ - "\377\377\2\331\331\331;;=\206::<\1;;=\203::<\2;;=\265\265\265\204\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \ - "\322\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\202\377\377\377\2\363\363\363SSU\203::<\2;;=::<\202" \ - ";;=\2""99;;;=\202::<\1\204\204\204\206\377\377\377\1\376\376\376\234" \ - "\377\377\377\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203" \ - "::<\1;;=\203::<\2GGI\332\332\332\203\377\377\377\1\376\376\376\247\377" \ - "\377\377\1\377\377\375\202\377\376\377\1\377\375\377\202\377\377\377" \ - "\1\377\376\377\232\377\377\377\6\377\377\375\377\377\377\375\377\376" \ - "\376\377\375\377\377\375\377\375\377\230\377\377\377\202\377\377\375" \ - "\2\377\377\377\376\376\376\202\377\377\377\2\376\377\377\374\377\377" \ - "\230\377\377\377\1\377\377\375\202\377\376\377\1\375\376\377\203\377" \ - "\377\377\1\377\377\375\202\377\377\377\6\376\376\377\377\377\375\377" \ - "\377\377\377\375\377\377\376\377\377\377\375\220\377\377\377\1\376\377" \ - "\377\202\377\377\377\3\376\377\375\376\376\376\377\376\377\252\377\377" \ - "\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377\377" \ - "\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307\77" \ - "\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216\306" \ - "\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215\305" \ - "@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\252\377\377" \ - "\377\2\250\250\25099;\204::<\12;;=99;::<;;=99;::<FFH\346\346\346\377" \ - "\377\377\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\330" \ - "\377\377\377\1\376\376\376\204\377\377\377\3\221\221\221::<;;=\202::" \ - "<\5;;=::<;;=::<;;=\202::<\4___\363\363\363\377\377\377\376\376\376\202" \ - "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\234\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;" \ - ";;=::<\202;;=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376" \ - "\376\241\377\377\377\7\376\377\377\376\376\377\377\377\377\377\377\375" \ - "\376\377\375\375\377\376\376\377\377\230\377\377\377\3\376\376\377\376" \ - "\377\377\376\376\377\203\377\377\377\1\376\376\374\231\377\377\377\1" \ - "\377\376\377\202\377\377\377\202\376\377\377\1\376\376\376\232\377\377" \ - "\377\11\376\377\377\376\376\376\377\377\377\376\377\377\377\377\377\377" \ - "\377\375\376\377\377\376\376\377\376\377\377\202\377\377\377\5\377\377" \ - "\375\377\377\377\377\376\377\377\377\377\376\377\377\220\377\377\377" \ - "\10\376\376\377\377\376\377\377\377\377\376\376\376\377\376\377\377\377" \ - "\375\377\376\377\377\377\375\251\377\377\377\37\376\377\377\376\377\375" \ - "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \ - "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \ - ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \ - "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \ - "\376\376\376\376\377\377\253\377\377\377\1yyy\205::<\3;;=::<99;\202;" \ - ";=\3::<__a\376\376\376\377\377\377\377\335\377\377\377\1\376\376\376" \ - "\202\377\377\377\5\301\301\301::<;;=99;;;=\207::<\2GGI\332\332\332\203" \ - "\377\377\377\1\376\376\376\243\377\377\377\2\265\265\267;;=\203::<\2" \ - "99;;;=\202::<\1;;=\202::<\1;;=\202::<\4;;=::<FFF\332\332\332\203\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\242\377\377\377" \ - "\1\377\377\375\204\377\377\377\1\376\377\377\231\377\377\377\202\377" \ - "\376\377\202\377\377\377\4\377\377\375\377\377\377\376\377\377\375\377" \ - "\376\230\377\377\377\203\377\377\375\202\377\377\377\2\376\376\376\376" \ - "\377\377\231\377\377\377\1\376\376\376\202\376\377\377\13\377\376\374" \ - "\377\376\377\376\376\374\376\377\377\377\377\377\376\377\377\377\377" \ - "\377\377\377\375\376\376\376\377\377\377\377\376\377\222\377\377\377" \ - "\202\377\377\375\5\377\377\377\376\377\377\377\377\377\377\377\375\376" \ - "\377\377\251\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376" \ - "\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214" \ - "\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>" \ - "\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370" \ - "\373\362\377\377\377\202\377\376\377\1\377\377\375\254\377\377\377\4" \ - "\363\363\363SSU;;=99;\202;;=\1""99;\204::<\3;;=::<\235\235\237\377\377" \ - "\377\377\334\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363" \ - "GGI\202::<\7;;=::<99;::<;;=::<;;=\202::<\2\266\266\266\376\376\376\204" \ - "\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\236\377\377" \ - "\377\3\376\376\376\265\265\267;;=\202::<\2;;=99;\205::<\1;;=\204::<\4" \ - ";;=FFH\332\332\332\376\376\376\205\377\377\377\1\376\376\376\240\377" \ - "\377\377\10\376\377\375\377\375\377\377\377\375\376\377\375\377\377\377" \ - "\377\376\377\377\377\377\376\376\374\230\377\377\377\10\374\377\377\377" \ - "\376\374\377\377\377\376\376\374\377\376\377\376\377\377\377\377\377" \ - "\377\376\377\230\377\377\377\3\377\377\375\377\377\377\376\377\375\203" \ - "\377\377\377\1\377\376\377\231\377\377\377\6\377\375\377\376\376\374" \ - "\377\377\377\377\376\377\376\377\375\377\376\377\202\377\377\377\2\377" \ - "\376\377\377\377\377\202\376\377\377\2\376\376\377\376\377\377\222\377" \ - "\377\377\2\377\377\375\377\375\377\202\376\377\377\4\376\376\376\376" \ - "\377\377\375\377\374\377\375\377\251\377\377\377\1\375\377\376\202\377" \ - "\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212" \ - "\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<" \ - "\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244" \ - "\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377" \ - "\377\375\377\376\377\252\377\377\377\5\376\376\376\377\377\377\333\333" \ - "\33399;;;=\202::<\5;;=99;;;=99;;;=\203::<\1\332\332\334\377\377\377\377" \ - "\330\377\377\377\1\376\376\376\205\377\377\377\1xxx\202::<\1;;=\202:" \ - ":<\1;;=\204::<\4:::xxx\376\376\376\377\377\377\202\376\376\376\205\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\237\377\377\377\1\265" \ - "\265\265\204::<\6;;=::<;;=::<;;=::<\202;;=\203::<\4;;=FFH\333\333\333" \ - "\376\376\376\202\377\377\377\1\376\376\376\242\377\377\377\7\376\376" \ - "\376\377\376\377\326\352\267\247\324o\247\324m\252\324r\247\324o\231" \ - "\252\324p\10\323\353\271\377\376\377\377\377\377\376\377\377\350\365" \ - "\333\253\323p\250\324r\251\324k\230\252\324p\10\250\325n\252\324p\277" \ - "\337\223\376\377\377\377\377\377\375\377\376\376\377\377\276\336\222" \ - "\230\252\324p\7\250\325p\250\324r\247\324o\253\324n\251\323m\346\364" \ - "\332\377\376\377\202\377\377\377\7\323\352\266\253\323p\251\323m\253" \ - "\323r\251\323o\247\324m\252\324r\220\252\324p\10\252\324n\253\324n\247" \ - "\324k\252\324p\254\325o\247\324m\252\324p\324\353\267\250\377\377\377" \ - "\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11\373\373\363" \ - "\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304" \ - ">\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307" \ - "\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376" \ - "\202\377\377\375\2\374\377\377\377\376\377\254\377\377\377\2\376\376" \ - "\376\251\251\251\202::<\5;;=::<;;=99;;;=\204::<\1``b\377\377\377\377" \ - "\334\377\377\377\3\376\376\376\301\301\301:::\205::<\1""99;\202::<\4" \ - ";;=::<SSS\362\362\362\207\377\377\377\1\376\376\376\202\377\377\377\202" \ - "\376\376\376\240\377\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1" \ - ";;=\202::<\202;;=\203::<\2FFH\332\332\332\245\377\377\377\10\376\377" \ - "\377\377\377\377\305\342\237\215\306A\215\307\77\215\305@\213\310=\214" \ - "\305@\230\214\306>\10\304\341\237\377\374\377\377\376\377\377\377\377" \ - "\341\362\322\215\305>\212\307>\215\305>\230\214\306>\4\215\305<\214\305" \ - "@\252\324r\376\377\377\202\377\377\377\2\377\377\375\250\324r\230\214" \ - "\306>\20\215\307\77\214\306>\214\306<\214\305B\212\307>\337\363\320\377" \ - "\376\377\376\377\377\376\376\374\305\342\240\214\305@\213\310=\215\305" \ - "@\214\306>\212\307<\214\305@\220\214\306>\10\214\305@\215\306C\212\307" \ - "<\214\306>\215\305>\212\306@\215\305>\304\343\237\250\377\377\377\1\377" \ - "\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306" \ - ">\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215" \ - "\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<" \ - "\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377" \ - "\377\377\377\202\377\376\377\257\377\377\377\1kkm\202::<\2;;=::<\202" \ - ";;=\3::<;;=::<\202;;=\1\233\233\233\377\377\377\377\330\377\377\377\1" \ - "\376\376\376\202\377\377\377\3\364\364\366FFH;;=\205::<\3;;=::<;;=\202" \ - "::<\1\316\316\316\256\377\377\377\2\265\265\265;;=\203::<\1;;=\205::" \ - "<\1;;=\204::<\3;;=FFH\332\332\332\206\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\235\377\377\377\1\304\343\240\235\214\306>\1\305\342" \ - "\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377" \ - "\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377" \ - "\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306" \ - ">\1\214\305@\205\214\306>\1\305\342\237\241\377\377\377\10\376\376\377" \ - "\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377\377\377" \ - "\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307B\213" \ - "\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306<\215" \ - "\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244\317" \ - "c\367\375\361\267\377\377\377\2\363\363\363FFF\204::<\1;;=\203::<\4:" \ - "9>::<;;=\332\332\332\377\377\377\377\332\377\377\377\1yy{\202::<\2""9" \ - "9;;;=\202::<\6;;=99;::<;;=::<\234\234\236\260\377\377\377\12\265\265" \ - "\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\203::<\3;;=FFF\332\332\332" \ - "\206\377\377\377\1\376\376\376\236\377\377\377\1\304\343\240\235\214" \ - "\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250" \ - "\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316" \ - "\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305" \ - "@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\240\377\377\377" \ - "\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377\375\375\377" \ - "\376\203\377\377\377\27\377\377\375\372\373\366\241\321a\217\304@\212" \ - "\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306>\214\305B" \ - "\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77\214\306>\242" \ - "\322b\370\373\362\376\376\377\377\375\376\267\377\377\377\1\301\301\301" \ - "\205::<\3;;=::<;;=\202::<\2""99;```\377\377\377\377\331\377\377\377\1" \ - "\301\301\301\202::<\1;;=\203::<\1;;=\202::<\3<<>::<__a\261\377\377\377" \ - "\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203::<\1;;=\203" \ - "::<\2GGI\332\332\332\203\377\377\377\1\376\376\376\240\377\377\377\1" \ - "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \ - "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \ - "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \ - "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \ - "\240\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377" \ - "\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320" \ - "b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214" \ - "\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307" \ - "\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375" \ - "\270\377\377\377\3\204\204\204::<;;=\206::<\4;;=::<;;=\234\234\236\377" \ - "\377\377\377\325\377\377\377\4\376\376\376\377\377\377\363\363\363SS" \ - "U\211::<\4""99;::<\332\332\334\376\376\376\202\377\377\377\1\376\376" \ - "\376\257\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;" \ - ";;=::<\202;;=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376" \ - "\376\232\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377" \ - "\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252" \ - "\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342" \ - "\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305" \ - "@\205\214\306>\1\305\342\237\241\377\377\377\37\376\377\377\376\377\375" \ - "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \ - "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \ - ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \ - "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \ - "\376\376\376\376\377\377\270\377\377\377\3\363\363\363TTT;;=\202::<\1" \ - ";;=\203::<\5""99;;;=::<;;=\332\332\332\377\377\377\377\323\377\377\377" \ - "\1\376\376\376\202\377\377\377\4\221\221\221;;=99;;;=\202::<\1;;=\202" \ - "::<\1;;=\202::<\1\233\233\233\202\377\377\377\1\376\376\376\262\377\377" \ - "\377\2\265\265\267;;=\203::<\2""99;;;=\202::<\1;;=\202::<\1;;=\202::" \ - "<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\233\377\377\377\1\304\343\240\235\214\306>\1\305\342\237" \ - "\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377" \ - "\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \ - "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \ - "\305@\205\214\306>\1\305\342\237\240\377\377\377\202\377\377\375\3\377" \ - "\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243\322" \ - "b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B\214" \ - "\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214\306" \ - ">\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377\377" \ - "\375\272\377\377\377\7\316\316\316::<;;=::<99;::<;;=\205::<\1kkm\377" \ - "\377\377\377\325\377\377\377\1\315\315\315\206::<\6""99;::<99;;;=::<" \ - "```\206\377\377\377\1\376\376\376\257\377\377\377\3\376\376\376\265\265" \ - "\267;;=\202::<\2;;=99;\205::<\1;;=\204::<\4;;=FFH\332\332\332\376\376" \ - "\376\205\377\377\377\1\376\376\376\232\377\377\377\1\304\343\240\235" \ - "\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306>\1" \ - "\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362" \ - "\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214" \ - "\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\241\377\377" \ - "\377\1\375\377\376\202\377\377\375\34\377\377\377\376\376\376\373\373" \ - "\363\243\322b\211\307B\212\307<\215\305>\214\306>\212\307>\214\305@\217" \ - "\304>\212\307<\214\306<\214\306>\215\307\77\213\307A\214\306>\215\305" \ - "@\215\307\77\212\307>\244\317c\370\373\362\377\377\373\376\377\377\377" \ - "\376\377\375\376\377\377\377\375\377\376\377\272\377\377\377\2\222\222" \ - "\22299;\205::<\1;;=\203::<\2;;=\250\250\250\377\377\377\377\324\377\377" \ - "\377\4```;;=99;;;=\204::<\5;;=::<;;=::<\331\331\331\207\377\377\377\1" \ - "\376\376\376\260\377\377\377\1\265\265\265\204::<\6;;=::<;;=::<;;=::" \ - "<\202;;=\203::<\4;;=FFH\333\333\333\376\376\376\202\377\377\377\1\376" \ - "\376\376\234\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203" \ - "\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1" \ - "\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \ - "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \ - "\305@\205\214\306>\1\305\342\237\240\377\377\377\3\377\376\377\377\377" \ - "\377\375\377\376\202\377\377\377\11\373\373\363\241\321d\214\306>\213" \ - "\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202\215\307=\14\214" \ - "\306>\215\305>\214\306>\215\305>\217\304@\215\307\77\215\307=\242\320" \ - "c\367\375\361\376\376\377\377\376\377\376\376\376\202\377\377\375\2\374" \ - "\377\377\377\376\377\262\377\377\377\2\376\376\376\377\377\377\202\376" \ - "\376\376\204\377\377\377\5\363\363\363SSU99;::<;;=\207::<\2GGG\363\363" \ - "\363\377\377\377\377\322\377\377\377\4\234\234\234:::::<;;=\202::<\1" \ - ";;=\203::<\202;;=\1\234\234\236\207\377\377\377\1\376\376\376\262\377" \ - "\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1;;=\202::<\202;;=\203" \ - "::<\2FFH\332\332\332\237\377\377\377\1\304\343\240\235\214\306>\1\305" \ - "\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377" \ - "\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377" \ - "\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214" \ - "\306>\1\214\305@\205\214\306>\1\305\342\237\240\377\377\377\1\377\377" \ - "\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213" \ - "\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307" \ - "=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244" \ - "\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377" \ - "\377\377\202\377\376\377\273\377\377\377\2\376\376\376\316\316\316\206" \ - "::<\202;;=\4::<;;=::<xxx\377\377\377\377\321\377\377\377\2\346\346\350" \ - "FFH\203::<\1;;=\206::<\1__a\202\377\377\377\1\377\377\375\271\377\377" \ - "\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\203::<\4;;=::<GGI\331\331" \ - "\331\236\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377" \ - "\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252" \ - "\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342" \ - "\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305" \ - "@\205\214\306>\1\305\342\237\231\377\377\377\10\376\376\377\377\377\375" \ - "\377\377\377\377\377\375\377\377\377\377\376\377\377\377\375\376\377" \ - "\377\202\377\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305" \ - "@\214\306<\202\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214" \ - "\306>\6\212\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\305" \ - "\377\377\377\2xxz;;=\203::<\3;;=::<;;=\203::<\2;;=\315\315\315\377\377" \ - "\377\377\313\377\377\377\203\376\376\376\202\377\377\377\3xxz;;=::<\202" \ - ";;=\1""99;\202;;=\202::<\4;;=::<\333\333\335\376\376\376\274\377\377" \ - "\377\12\265\265\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\202::<\4;" \ - ";=99;GGI\332\332\332\235\377\377\377\1\304\343\240\235\214\306>\1\305" \ - "\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377" \ - "\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377" \ - "\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214" \ - "\306>\1\214\305@\205\214\306>\1\305\342\237\230\377\377\377\6\376\376" \ - "\377\377\376\377\375\376\377\376\377\377\377\377\375\375\377\376\203" \ - "\377\377\377\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214" \ - "\306>\215\305>\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77" \ - "\215\305>\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370" \ - "\373\362\376\376\377\377\375\376\304\377\377\377\2\364\364\364FFH\203" \ - "::<\2""99;;;=\203::<\4<<>99;TTT\376\376\376\377\377\377\377\310\377\377" \ - "\377\1\376\376\376\205\377\377\377\3\316\316\316::<99;\206::<\1;;=\202" \ - "::<\1\221\221\221\203\377\377\377\1\376\376\376\272\377\377\377\7\376" \ - "\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203::<\6;;=::<;;=::<" \ - "FFH\332\332\332\234\377\377\377\1\304\343\240\235\214\306>\1\305\342" \ - "\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377" \ - "\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377" \ - "\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306" \ - ">\1\214\305@\205\214\306>\1\305\342\237\230\377\377\377\7\377\377\375" \ - "\375\376\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377" \ - "\376\202\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305" \ - ">\202\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215" \ - "\307\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373" \ - "\362\377\377\373\377\376\377\377\377\375\304\377\377\377\3\376\376\376" \ - "\265\265\267;;=\204::<\1""99;\203::<\3;;=::<\234\234\234\203\377\377" \ - "\377\1\376\376\376\377\377\377\377\306\377\377\377\7\376\376\376\377" \ - "\377\377\376\376\376\377\377\377__a::<;;=\203::<\7;;=::<;;=::<;;=SSU" \ - "\363\363\363\300\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::" \ - "<\3""99;;;=::<\202;;=\204::<\2FFH\332\332\332\233\377\377\377\1\304\343" \ - "\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214" \ - "\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77" \ - "\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214" \ - "\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\231" \ - "\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377" \ - "\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215\307" \ - "=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215" \ - "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \ - "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\301\377" \ - "\377\377\1\376\376\376\204\377\377\377\2kkm99;\203::<\202;;=\1""99;\203" \ - "::<\2FFH\363\363\363\377\377\377\377\310\377\377\377\1\376\376\376\203" \ - "\377\377\377\3\250\250\252::<;;=\203::<\1;;=\202::<\5;;=::<;;=\301\301" \ - "\301\376\376\376\301\377\377\377\2\265\265\267;;=\203::<\2""99;;;=\202" \ - "::<\1;;=\202::<\2;;=::<\202;;=\3::<GGI\332\332\332\232\377\377\377\1" \ - "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \ - "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \ - "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \ - "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \ - "\230\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377" \ - "\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215" \ - "\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>" \ - "\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362" \ - "\377\377\377\202\377\376\377\1\377\377\375\301\377\377\377\1\376\376" \ - "\376\204\377\377\377\2\376\376\376\346\346\350\203::<\4;;=99;::<;;=\204" \ - "::<\3\203\203\203\377\377\377\376\376\376\377\377\377\377\311\377\377" \ - "\377\2\364\364\364FFH\202::<\5;;=::<;;=::<;;=\202::<\2;;=kkm\202\377" \ - "\377\377\1\376\376\376\300\377\377\377\3\376\376\376\265\265\267;;=\202" \ - "::<\2;;=99;\204::<\3;;=99;;;=\202::<\3;;=::<\265\265\265\232\377\377" \ - "\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362" \ - "\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>" \ - "\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215" \ - "\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1" \ - "\305\342\237\231\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \ - "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \ - "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \ - "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \ - "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \ - "\377\301\377\377\377\202\376\376\376\2\377\377\377\376\376\376\202\377" \ - "\377\377\1\234\234\236\203::<\1;;=\206::<\2;;=\331\331\331\377\377\377" \ - "\377\306\377\377\377\1\376\376\376\203\377\377\377\4\233\233\233;;=:" \ - ":<;;=\202::<\3;;=99;;;=\203::<\1\346\346\350\305\377\377\377\1\265\265" \ - "\265\204::<\3;;=::<;;=\203::<\5;;=99;;;=::<\265\265\267\233\377\377\377" \ - "\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \ - "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \ - "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \ - "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \ - "\230\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \ - "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \ - "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \ - ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \ - "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\301\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\6\364" \ - "\364\364SSU::<;;=::<;;=\205::<\4""99;kkk\377\377\377\376\376\376\377" \ - "\377\377\377\307\377\377\377\2\346\346\346;;;\204::<\3;;=99;;;=\203:" \ - ":<\1\234\234\236\205\377\377\377\1\376\376\376\301\377\377\377\1\265" \ - "\265\267\203::<\2""99;;;=\202::<\1;;;\204::<\1\265\265\267\234\377\377" \ - "\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362" \ - "\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>" \ - "\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215" \ - "\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1" \ - "\305\342\237\230\377\377\377\1\377\377\375\202\377\377\377\32\377\376" \ - "\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305" \ - "@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212" \ - "\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377" \ - "\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377\306\377" \ - "\377\377\1\376\376\376\202\377\377\377\2\301\301\303::<\202;;=\11::<" \ - ";;=::<;;=::<99;;;=::<\301\301\301\377\377\377\377\306\377\377\377\12" \ - "\376\376\376\377\377\377\204\204\204;;=::<:9>;;=::<99;;;=\203::<\5SS" \ - "U\363\363\363\376\376\376\377\377\377\376\376\376\305\377\377\377\5\265" \ - "\265\26599;;;=::<;;=\206::<\1\266\266\270\235\377\377\377\1\304\343\240" \ - "\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306" \ - ">\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342" \ - "\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306" \ - ">\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\221\377" \ - "\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377" \ - "\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243" \ - "\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214" \ - "\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77" \ - "\214\305@\244\317c\367\375\361\322\377\377\377\1kkk\203::<\4;;=99;::" \ - "<;;=\203::<\1SSU\210\377\377\377\1\376\376\376\377\377\377\377\276\377" \ - "\377\377\1\316\316\316\202::<\1;;=\202::<\202;;=\202::<\4;;=::<\265\265" \ - "\267\376\376\376\307\377\377\377\3\376\376\376\377\377\377\265\265\267" \ - "\207::<\3""99;\266\266\270\376\376\377\202\377\377\377\1\376\376\376" \ - "\232\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \ - "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \ - "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \ - "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \ - "\214\306>\1\305\342\237\220\377\377\377\6\376\376\377\377\376\377\375" \ - "\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377" \ - "\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305" \ - "@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212" \ - "\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377" \ - "\375\376\321\377\377\377\1\346\346\346\204::<\1;;=\202::<\5;;=99;;;=" \ - "::<\266\266\266\205\377\377\377\202\376\376\376\2\377\377\377\376\376" \ - "\376\377\377\377\377\273\377\377\377\5\376\376\376\377\377\377kkm::<" \ - ";;=\202::<\1;;=\203::<\3;;=::<kkm\203\377\377\377\1\376\376\376\306\377" \ - "\377\377\4\376\376\376\377\377\377\265\265\265::<\202;;=\202::<\2""9" \ - "9;\266\266\270\237\377\377\377\1\304\343\240\235\214\306>\1\305\342\237" \ - "\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377" \ - "\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \ - "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \ - "\305@\205\214\306>\1\305\342\237\220\377\377\377\7\377\377\375\375\376" \ - "\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377\376\202" \ - "\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>\202" \ - "\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307\77" \ - "\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \ - "\377\377\373\377\376\377\377\377\375\322\377\377\377\1\221\221\223\202" \ - "::<\12;;=99;::<;;=::<;;=99;;;=EEG\364\364\364\203\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\377\377\377\377\275\377\377\377\2" \ - "\316\316\320;;=\205::<\2""99;;;=\203::<\3\316\316\316\377\377\377\376" \ - "\376\376\313\377\377\377\3\265\265\265;;=99;\202::<\1\266\266\270\203" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1" \ - "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \ - "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \ - "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \ - "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \ - "\221\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377" \ - "\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215" \ - "\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77" \ - "\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242" \ - "\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\322" \ - "\377\377\377\2\363\363\363FFH\203::<\202;;=\203::<\3;;=::<\235\235\235" \ - "\204\377\377\377\1\376\376\376\377\377\377\377\277\377\377\377\1__a\202" \ - "::<\1;;=\203::<\5;;=::<;;=::<\204\204\206\312\377\377\377\1\376\376\376" \ - "\202\377\377\377\7\376\376\376\377\377\377\265\265\267;;=99;\266\266" \ - "\270\376\376\377\203\377\377\377\202\376\376\376\233\377\377\377\1\304" \ - "\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235" \ - "\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307" \ - "\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214" \ - "\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\220" \ - "\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202" \ - "\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305" \ - ">\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212" \ - "\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377" \ - "\377\377\202\377\376\377\1\377\377\375\324\377\377\377\4\234\234\234" \ - ";;=::<<<>\204::<\1;;=\202::<\2FFH\363\363\363\204\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\377\377\377\377\272\377\377\377\1" \ - "\265\265\265\202::<\5;;=99;::<;;=::<\202;;=\3""99;;;=\346\346\346\320" \ - "\377\377\377\2\264\264\266\265\265\267\203\377\377\377\202\376\376\376" \ - "\235\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \ - "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \ - "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \ - "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \ - "\214\306>\1\305\342\237\221\377\377\377\1\375\377\376\202\377\377\375" \ - "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \ - "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \ - "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \ - "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \ - "\377\376\377\320\377\377\377\1\376\376\376\203\377\377\377\2SSU;;=\203" \ - "::<\1;;=\203::<\3""99;::<\234\234\236\203\377\377\377\1\376\376\376\377" \ - "\377\377\377\276\377\377\377\5RRT99;;;=99;;;=\203::<\4""99;;;=::<\234" \ - "\234\236\314\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376" \ - "\235\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \ - "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \ - "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \ - "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \ - "\214\306>\1\305\342\237\220\377\377\377\3\377\376\377\377\377\377\375" \ - "\377\376\202\377\377\377\11\373\373\363\241\321d\214\306>\213\310=\214" \ - "\306>\214\305@\213\310=\212\306@\217\304>\202\215\307=\14\214\306>\215" \ - "\305>\214\306>\215\305>\217\304@\215\307\77\215\307=\242\320c\367\375" \ - "\361\376\376\377\377\376\377\376\376\376\202\377\377\375\2\374\377\377" \ - "\377\376\377\324\377\377\377\3\265\265\265;;=99;\202;;=\1""99;\202;;" \ - "=\5::<;;=::<GGI\363\363\363\206\377\377\377\1\376\376\376\377\377\377" \ - "\377\271\377\377\377\2\266\266\270;;=\202::<\1;;=\202::<\6;;=::<;;=:" \ - ":<FFH\363\363\363\324\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\236\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \ - "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \ - "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \ - "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \ - "\214\306>\1\305\342\237\220\377\377\377\1\377\377\375\202\377\377\377" \ - "\32\377\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215" \ - "\305>\215\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>" \ - "\215\306A\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377" \ - "\377\377\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376" \ - "\377\326\377\377\377\1__a\203::<\1;;=\203::<\1;;=\202::<\1\234\234\234" \ - "\377\377\377\377\274\377\377\377\1\376\376\376\203\377\377\377\3SSU;" \ - ";=99;\210::<\1\234\234\234\365\377\377\377\7\376\377\375\304\341\236" \ - "\215\306A\214\305B\215\307=\212\307>\212\306@\230\214\305@\1\304\341" \ - "\236\203\377\377\377\4\341\362\320\214\306>\213\310\77\215\305@\231\214" \ - "\305@\2\215\307\77\252\322q\202\377\376\377\202\377\377\377\1\250\325" \ - "n\230\214\305@\3\215\305>\215\306A\215\307\77\202\214\306<\10\342\360" \ - "\317\376\377\377\377\377\375\376\377\377\305\342\240\215\305@\212\306" \ - "@\215\305>\202\214\305@\1\215\307=\220\214\305@\10\214\306>\212\306@" \ - "\216\306A\212\307>\215\305>\215\305@\214\305@\304\343\237\211\377\377" \ - "\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377" \ - "\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322" \ - "b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305" \ - "@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214" \ - "\305@\244\317c\367\375\361\335\377\377\377\2\376\376\376\316\316\316" \ - "\211::<\3;;=GGI\363\363\365\203\377\377\377\1\376\376\376\377\377\377" \ - "\377\266\377\377\377\10\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\265\265\265;;=::<;;=\207::<\2GGI\363\363\363\364\377\377\377\7\377\376" \ - "\377\377\377\375\304\341\236\215\305>\215\307\77\214\306>\214\305@\231" \ - "\214\306>\7\304\343\237\377\377\377\375\376\377\377\377\375\341\360\321" \ - "\215\306A\214\305@\233\214\306>\6\252\324n\376\376\376\377\377\377\376" \ - "\377\377\377\376\377\252\324p\230\214\306>\7\215\306A\212\307>\214\306" \ - ">\212\307>\214\306>\343\361\320\376\377\377\202\377\377\377\7\305\342" \ - "\237\215\305>\213\310\77\214\306>\214\305@\212\306@\215\307\77\222\214" \ - "\306>\6\215\305>\212\307>\214\306>\215\307=\215\305@\305\342\237\210" \ - "\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377" \ - "\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241\321a" \ - "\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306" \ - ">\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77" \ - "\214\306>\242\322b\370\373\362\376\376\377\377\375\376\336\377\377\377" \ - "\1kkm\202::<\1;;=\205::<\202;;=\3\233\233\235\377\377\377\376\376\376" \ - "\377\377\377\377\274\377\377\377\3SSU99;;;=\20299;\1;;=\203::<\3;;=:" \ - ":<\234\234\236\366\377\377\377\7\376\377\375\305\342\240\213\304\77\213" \ - "\310\77\214\305@\215\306A\216\306=\230\214\306>\10\305\342\240\377\377" \ - "\375\376\377\377\377\376\377\341\360\317\214\306<\214\305@\212\306@\231" \ - "\214\306>\7\215\305@\252\324p\377\377\377\377\377\375\376\377\377\377" \ - "\376\374\252\324p\230\214\306>\7\212\307>\215\307\77\216\306A\212\307" \ - ">\213\304\77\343\361\320\377\377\375\202\377\377\377\3\307\342\237\214" \ - "\304\77\213\310\77\203\214\306>\1\215\307\77\220\214\306>\4\214\305@" \ - "\214\306<\215\304B\213\310\77\202\212\307>\2\215\305@\305\342\240\210" \ - "\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374" \ - "\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215" \ - "\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D" \ - "\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77" \ - "\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\331" \ - "\377\377\377\1\376\376\376\203\377\377\377\4\376\376\376\317\317\321" \ - "::<;;=\203::<\3;;=::<;;=\202::<\4FFH\363\363\363\377\377\377\376\376" \ - "\376\377\377\377\377\264\377\377\377\1\376\376\376\205\377\377\377\1" \ - "\265\265\267\202;;=\3::<99;;;=\202::<\202;;=\2::<SSU\366\377\377\377" \ - "\7\377\376\377\375\377\374\304\341\237\216\306\77\212\307<\213\310\77" \ - "\212\307>\231\214\306>\2\305\342\240\377\377\377\202\377\376\377\3\341" \ - "\362\316\216\306\77\214\306<\231\214\306>\3\215\305@\212\307>\252\324" \ - "p\203\377\377\377\2\377\376\377\247\324o\230\214\306>\20\215\306A\214" \ - "\305B\215\307\77\211\305\77\214\304;\342\362\315\377\377\377\377\376" \ - "\377\376\376\376\305\342\237\215\306A\210\307;\215\306A\216\306A\214" \ - "\306>\212\306@\220\214\306>\202\214\305@\6\216\305C\213\305=\214\305" \ - "B\215\307\77\216\306\77\303\344\237\211\377\377\377\37\376\377\377\376" \ - "\377\375\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377" \ - "\370\373\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<" \ - "\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215" \ - "\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376" \ - "\377\377\376\376\376\376\377\377\331\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\203\377\377\377\1kkm\202::<\6;;=::<;;=::<;;=::<\202" \ - ";;=\1\233\233\235\377\377\377\377\267\377\377\377\1\376\376\376\204\377" \ - "\377\377\2kkm;;=\202::<\2;;=::<\202;;=\203::<\5\265\265\267\377\377\377" \ - "\376\376\376\377\377\377\376\376\376\362\377\377\377\2\376\377\377\377" \ - "\376\377\202\377\377\377\202\377\376\377\2\377\377\377\377\377\375\231" \ - "\377\377\377\4\377\376\377\376\377\377\375\377\376\377\377\377\202\376" \ - "\377\377\231\377\377\377\10\374\377\375\377\376\377\377\377\375\376\376" \ - "\376\377\377\377\376\377\377\376\376\374\377\376\377\230\377\377\377" \ - "\1\377\376\377\203\377\377\375\4\376\377\377\377\375\377\377\377\377" \ - "\376\377\377\202\377\377\377\3\376\376\376\377\376\377\377\377\375\202" \ - "\376\377\377\1\377\377\375\220\377\377\377\10\377\377\375\377\377\377" \ - "\376\376\376\377\377\377\377\377\375\377\377\377\376\377\377\377\375" \ - "\377\210\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377" \ - "\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305" \ - "@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212" \ - "\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373" \ - "\362\377\377\377\202\377\376\377\1\377\377\375\340\377\377\377\1\316" \ - "\316\316\203::<\3;;=99;;;=\204::<\2FFH\363\363\363\202\377\377\377\1" \ - "\376\376\376\377\377\377\377\264\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\316\316\320\206::<\1;;=\203::<\2SSU\376\376\376\366\377\377\377" \ - "\1\377\377\375\202\377\376\377\202\377\377\377\3\377\377\375\377\377" \ - "\377\376\377\377\230\377\377\377\202\376\377\377\6\377\377\375\377\377" \ - "\377\376\377\375\377\377\377\376\377\375\377\377\375\231\377\377\377" \ - "\2\376\377\377\377\377\375\202\377\377\377\1\376\376\376\232\377\377" \ - "\377\5\377\376\377\377\377\377\376\377\375\377\377\377\377\377\375\204" \ - "\377\377\377\202\376\377\377\1\376\376\376\202\377\377\377\202\376\377" \ - "\377\220\377\377\377\1\377\377\375\202\377\377\377\4\376\376\374\377" \ - "\376\377\377\377\377\376\377\375\212\377\377\377\1\375\377\376\202\377" \ - "\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212" \ - "\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<" \ - "\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244" \ - "\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377" \ - "\377\375\377\376\377\334\377\377\377\1\376\376\376\202\377\377\377\10" \ - "\376\376\376kkm::<;;=99;;;=::<;;=\202::<\202;;=\1\234\234\236\203\377" \ - "\377\377\1\376\376\376\377\377\377\377\262\377\377\377\5\376\376\376" \ - "\377\377\377\376\376\376\377\377\377lln\210::<\3""99;;;=\265\265\265" \ - "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\370\377" \ - "\377\377\1\376\377\377\230\377\377\377\7\377\376\377\377\377\375\377" \ - "\376\377\376\376\377\377\377\375\377\377\377\377\377\375\233\377\377" \ - "\377\1\377\376\377\203\377\377\377\1\376\377\375\231\377\377\377\5\377" \ - "\377\375\377\377\377\377\377\375\377\377\377\377\377\375\202\377\377" \ - "\377\1\377\377\375\203\377\377\377\2\376\376\376\377\376\377\226\377" \ - "\377\377\5\377\377\375\377\377\377\376\377\377\377\377\375\376\377\377" \ - "\210\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \ - "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \ - "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \ - ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \ - "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\333\377\377" \ - "\377\1\376\376\376\202\377\377\377\3\376\376\376\377\377\377\316\316" \ - "\320\203::<\1;;=\202::<\1;;=\203::<\2FFH\377\377\377\202\376\376\376" \ - "\377\377\377\377\262\377\377\377\5\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\332\332\332\206::<\1;;=\202::<\5;;=FFH\363\363\363\377\377" \ - "\377\376\376\376\203\377\377\377\1\376\376\376\365\377\377\377\1\377" \ - "\377\375\202\377\377\377\1\377\377\375\230\377\377\377\2\376\377\377" \ - "\377\377\375\204\377\377\377\2\377\376\377\376\377\375\230\377\377\377" \ - "\4\377\377\375\377\377\377\377\377\373\376\377\377\203\377\377\377\1" \ - "\377\376\377\230\377\377\377\13\376\377\377\377\377\375\377\377\377\376" \ - "\377\377\377\375\376\377\377\377\377\377\375\376\377\377\377\376\377" \ - "\377\377\377\376\376\376\202\377\377\377\1\377\377\375\226\377\377\377" \ - "\202\376\377\377\2\377\377\375\377\376\377\210\377\377\377\1\377\377" \ - "\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213" \ - "\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307" \ - "=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244" \ - "\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377" \ - "\377\377\202\377\376\377\333\377\377\377\1\376\376\376\204\377\377\377" \ - "\11\376\376\376\377\377\377kkm::<;;=99;;;=::<;;=\202::<\3;;=::<\264\264" \ - "\264\377\377\377\377\265\377\377\377\1\376\376\376\202\377\377\377\1" \ - "\204\204\204\203::<\1;;=\206::<\1\235\235\237\377\377\377\377\377\377" \ - "\377\377\203\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377" \ - "\375\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377" \ - "\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305" \ - "@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214" \ - "\306>\215\307\77\214\305@\244\317c\367\375\361\352\377\377\377\1\316" \ - "\316\316\203::<\1;;=\203::<\202;;=\2::<RRT\377\377\377\377\267\377\377" \ - "\377\3\346\346\346::<;;=\203::<\202;;=\5""99;::<;;=FFH\363\363\365\377" \ - "\377\377\377\377\377\377\377\202\377\377\377\6\376\376\377\377\376\377" \ - "\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377\27\377" \ - "\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305>\215" \ - "\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215\306" \ - "A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376\376" \ - "\377\377\375\376\352\377\377\377\2kkm;;=\207::<\3;;=::<\301\301\301\377" \ - "\377\377\377\266\377\377\377\2\221\221\221;;=\202::<\202;;=\202::<\1" \ - ";;=\202::<\1\235\235\237\377\377\377\377\377\377\377\377\203\377\377" \ - "\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377\377" \ - "\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307\77" \ - "\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216\306" \ - "\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215\305" \ - "@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\350\377\377" \ - "\377\4\376\376\376\377\377\377\265\265\26799;\203::<\3;;=::<;;=\203:" \ - ":<\2kkk\376\376\376\377\377\377\377\264\377\377\377\2\362\362\362FFH" \ - "\202::<\1;;=\203::<\5;;=::<;;=::<\363\363\363\377\377\377\377\377\377" \ - "\377\377\204\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377" \ - "\376\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307" \ - "\77\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216" \ - "\306\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306" \ - ">\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \ - "\352\377\377\377\2\376\376\376TTV\204::<\7;;=99;::<;;=99;::<\332\332" \ - "\332\377\377\377\377\263\377\377\377\3\376\376\376\266\266\266;;=\203" \ - "::<\202;;=\204::<\1\205\205\207\377\377\377\377\377\377\377\377\204\377" \ - "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \ - "\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305>" \ - "\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212\310" \ - "\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377" \ - "\377\202\377\376\377\1\377\377\375\354\377\377\377\2\265\265\267::<\202" \ - ";;=\205::<\4;;=::<\204\204\204\376\376\376\377\377\377\377\263\377\377" \ - "\377\1SSU\202::<\1;;=\206::<\2;;=\346\346\346\377\377\377\377\377\377" \ - "\377\377\205\377\377\377\1\375\377\376\202\377\377\375\34\377\377\377" \ - "\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214\306" \ - ">\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77\213" \ - "\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362\377" \ - "\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376\377" \ - "\354\377\377\377\4FFH;;=99;;;=\203::<\5;;=99;;;=99;\364\364\364\377\377" \ - "\377\377\262\377\377\377\1\316\316\316\202;;=\1""99;\203::<\1;;=\203" \ - "::<\1xxz\377\377\377\377\377\377\377\377\205\377\377\377\3\377\376\377" \ - "\377\377\377\375\377\376\202\377\377\377\11\373\373\363\241\321d\214" \ - "\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202\215\307" \ - "=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307\77\215\307" \ - "=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376\202\377\377" \ - "\375\2\374\377\377\377\376\377\354\377\377\377\1\235\235\237\204::<\1" \ - "<<>\202::<\4;;=::<;;=\247\247\251\377\377\377\377\262\377\377\377\4\204" \ - "\204\204;;=::<;;=\206::<\2;;=\316\316\316\377\377\377\377\377\377\377" \ - "\377\205\377\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370" \ - "\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214" \ - "\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@" \ - "\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375" \ - "\376\377\377\375\376\377\377\377\377\377\202\377\376\377\355\377\377" \ - "\377\1\363\363\363\212::<\1TTV\377\377\377\377\261\377\377\377\5\347" \ - "\347\351::<;;=::<;;=\204::<\3;;=::<TTT\377\377\377\377\376\377\377\377" \ - "\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376" \ - "\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211" \ - "\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214" \ - "\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305" \ - "@\244\317c\367\375\361\361\377\377\377\1\376\376\376\204\377\377\377" \ - "\1\204\204\204\202;;=\203::<\1;;=\202::<\202;;=\1\302\302\302\203\377" \ - "\377\377\1\376\376\376\377\377\377\377\244\377\377\377\1\376\376\376" \ - "\203\377\377\377\1\376\376\376\203\377\377\377\1\234\234\236\202::<\1" \ - ";;=\204::<\6;;=::<;;=\264\264\264\377\377\377\376\376\376\377\377\377" \ - "\377\373\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377" \ - "\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241" \ - "\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@" \ - "\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \ - "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\365\377" \ - "\377\377\1\332\332\332\202::<\1;;=\202::<\6""99;::<;;=99;;;=xxx\205\377" \ - "\377\377\1\376\376\376\377\377\377\377\243\377\377\377\1\376\376\376" \ - "\206\377\377\377\4SSU;;=::<;;=\202::<\1;;=\203::<\3GGI\362\362\362\376" \ - "\376\376\377\377\377\377\374\377\377\377\7\377\377\375\375\376\377\376" \ - "\377\377\376\377\375\377\374\377\377\377\375\375\377\376\202\377\377" \ - "\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>\202\214\305" \ - "@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307\77\214\306" \ - ">\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362\377\377" \ - "\373\377\376\377\377\377\375\364\377\377\377\3\376\376\376\377\377\377" \ - "__a\203::<\202;;=\6::<99;;;=::<;;=\345\345\345\203\377\377\377\1\376" \ - "\376\376\377\377\377\377\245\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\202\377\377\377\2\316\316\316::<\202;;=\205::<\202;;=\1\203" \ - "\203\205\204\377\377\377\1\376\376\376\377\377\377\377\372\377\377\377" \ - "\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377\375\377\377" \ - "\377\377\376\377\370\373\362\241\321a\215\307\77\215\307=\214\305@\214" \ - "\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307" \ - ">\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364" \ - "\377\377\377\376\377\377\376\376\376\376\377\377\362\377\377\377\202" \ - "\376\376\376\3\377\377\377\376\376\376\265\265\267\202::<\1;;=\207::" \ - "<\3\251\251\253\377\377\377\376\376\376\203\377\377\377\1\376\376\376" \ - "\377\377\377\377\247\377\377\377\2\376\376\376\204\204\206\207::<\1;" \ - ";=\202::<\3\346\346\346\377\377\377\376\376\376\377\377\377\377\374\377" \ - "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \ - "\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305>" \ - "\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212\310" \ - "\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377" \ - "\377\202\377\376\377\1\377\377\375\364\377\377\377\17\376\376\376\377" \ - "\377\377\376\376\376\377\377\377FFH;;=99;::<;;=::<;;=99;;;=::<SSU\377" \ - "\377\377\377\251\377\377\377\1\376\376\376\203\377\377\377\3\363\363" \ - "\365::<;;=\202::<\11;;=::<;;=::<;;=::<kkm\377\377\377\376\376\376\377" \ - "\377\377\377\376\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \ - "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \ - "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \ - "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \ - "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \ - "\377\361\377\377\377\202\376\376\376\2\377\377\377\376\376\376\202\377" \ - "\377\377\1\221\221\221\205::<\202;;=\5::<;;=99;\316\316\320\376\376\376" \ - "\377\377\377\377\250\377\377\377\1\376\376\376\202\377\377\377\4\266" \ - "\266\270::<99;;;=\203::<\1;;=\203::<\1\265\265\265\377\377\377\377\377" \ - "\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11" \ - "\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212" \ - "\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217" \ - "\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377" \ - "\376\376\376\202\377\377\375\2\374\377\377\377\376\377\360\377\377\377" \ - "\1\376\376\376\202\377\377\377\202\376\376\376\202\377\377\377\6\346" \ - "\346\346;;=99;::<99;;;=\204::<\2;;=\204\204\206\202\377\377\377\1\376" \ - "\376\376\377\377\377\377\251\377\377\377\1__a\203::<\3;;=::<;;=\203:" \ - ":<\4FFF\363\363\363\377\377\377\376\376\376\377\377\377\377\375\377\377" \ - "\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322" \ - "b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212" \ - "\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>" \ - "\212\307<\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376" \ - "\377\377\377\377\377\202\377\376\377\371\377\377\377\4^^`;;=::<;;=\202" \ - "::<\5;;=::<;;=::<FFH\377\377\377\377\253\377\377\377\3\346\346\346::" \ - "<;;=\210::<\1\204\204\204\202\377\377\377\202\376\376\376\377\377\377" \ - "\377\365\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375" \ - "\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370" \ - "\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4" \ - "\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306" \ - ">\215\307\77\214\305@\244\317c\367\375\361\377\377\377\377\202\377\377" \ - "\377\3\265\265\267::<;;=\204::<\1;;=\202::<\2;;=\265\265\265\202\377" \ - "\377\377\1\376\376\376\377\377\377\377\246\377\377\377\2\376\376\376" \ - "\234\234\234\202;;=\203::<\1;;=\202::<\3""99;::<\332\332\332\377\377" \ - "\377\377\370\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377" \ - "\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366" \ - "\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306" \ - "@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \ - "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\377\377" \ - "\377\377\5\377\377\377\363\363\365;;=::<;;=\202::<\3;;=::<;;=\202::<" \ - "\3xxz\377\377\377\376\376\376\377\377\377\377\246\377\377\377\3\376\376" \ - "\376\377\377\377SSS\202::<\1;;=\202::<\1;;=\202::<\6;;=SSU\377\377\377" \ - "\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376\377" \ - "\377\377\377\362\377\377\377\7\377\377\375\375\376\377\376\377\377\376" \ - "\377\375\377\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373" \ - "\366\240\320b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212" \ - "\306@\214\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306" \ - ">\215\307\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377" \ - "\377\375\377\377\377\377\11\377\377\377\376\376\376\204\204\206;;=::" \ - "<99;;;=::<;;=\204::<\3\362\362\362\377\377\377\376\376\376\377\377\377" \ - "\377\246\377\377\377\1\333\333\333\203::<\202;;=\202::<\5<<>99;::<\250" \ - "\250\252\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\365" \ - "\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377" \ - "\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215\307" \ - "=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215" \ - "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \ - "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\377\377" \ - "\377\377\202\377\377\377\1\301\301\301\202::<\1;;=\203::<\1;;=\203::" \ - "<\1\266\266\270\377\377\377\377\250\377\377\377\2\220\220\220;;=\204" \ - "::<\6;;=::<99;;;=::<\346\346\346\205\377\377\377\1\376\376\376\377\377" \ - "\377\377\363\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376" \ - "\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214" \ - "\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>" \ - "\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370" \ - "\373\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377\377\204" \ - "\377\377\377\2TTV99;\202::<\1;;=\202::<\6;;=::<;;=__a\377\377\377\376" \ - "\376\376\377\377\377\377\244\377\377\377\3\376\376\376\377\377\377TT" \ - "V\207::<\3;;=99;```\377\377\377\377\373\377\377\377\1\375\377\376\202" \ - "\377\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307" \ - "B\212\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214" \ - "\306<\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307" \ - ">\244\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377" \ - "\377\377\375\377\376\377\377\377\377\377\203\377\377\377\3\221\221\221" \ - "::<;;=\202::<\202;;=\203::<\2;;=\345\345\347\377\377\377\377\246\377" \ - "\377\377\4\332\332\332;;=::<;;=\203::<\1;;=\203::<\1\265\265\265\203" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\364" \ - "\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11" \ - "\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212" \ - "\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217" \ - "\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377" \ - "\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377\377" \ - "\202\377\377\377\5\376\376\376\332\332\332;;=::<;;=\202::<\6;;=::<;;" \ - "=99;::<\250\250\252\377\377\377\377\244\377\377\377\6\376\376\376\377" \ - "\377\377\221\221\223::<;;=99;\202::<\3;;=::<;;=\202::<\1\363\363\363" \ - "\377\377\377\377\372\377\377\377\1\377\377\375\202\377\377\377\32\377" \ - "\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215" \ - "\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A" \ - "\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377" \ - "\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377\377" \ - "\377\377\377\204\377\377\377\2\376\376\376SSU\204::<\204;;=\2::<__a\377" \ - "\377\377\377\243\377\377\377\6\376\376\376\377\377\377\376\376\376TT" \ - "V99;;;=\204::<\4;;=99;<<>xxz\377\377\377\377\364\377\377\377\10\376\376" \ - "\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377\377" \ - "\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307B" \ - "\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306" \ - "<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244" \ - "\317c\367\375\361\377\377\377\377\213\377\377\377\5\376\376\376\377\377" \ - "\377\221\221\223::<;;=\204::<\5;;=::<;;=::<\363\363\363\204\377\377\377" \ - "\1\376\376\376\202\377\377\377\202\376\376\376\377\377\377\377\233\377" \ - "\377\377\5\332\332\332::<;;=99;<<>\202::<\1;;=\203::<\1\265\265\267\377" \ - "\377\377\377\363\377\377\377\6\376\376\377\377\376\377\375\376\377\376" \ - "\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373" \ - "\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212" \ - "\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306" \ - ">\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\377" \ - "\377\377\377\213\377\377\377\2\375\375\375\333\333\333\202::<\1;;=\202" \ - "::<\1;;=\202::<\3""99;::<\265\265\265\206\377\377\377\3\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\377\233\377\377\377\2\235\235\23599" \ - ";\202;;=\1""99;\202;;=\202::<\3;;=::<\363\363\365\377\377\377\377\363" \ - "\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374" \ - "\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215" \ - "\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D" \ - "\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77" \ - "\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\377" \ - "\377\377\377\214\377\377\377\2\376\376\376SSU\207::<\3;;=::<xxx\203\377" \ - "\377\377\202\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \ - "\234\377\377\377\1^^`\211::<\3xxz\377\377\377\376\376\376\377\377\377" \ - "\377\363\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376" \ - "\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77" \ - "\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306" \ - "\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>" \ - "\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \ - "\377\377\377\377\212\377\377\377\4\376\376\376\377\377\377\376\376\376" \ - "\222\222\222\205::<\1;;=\20299;\202::<\3\363\363\363\377\377\377\376" \ - "\376\376\377\377\377\377\240\377\377\377\1\346\346\346\202::<\1;;=\204" \ - "::<\1;;=\202::<\1\250\250\252\202\377\377\377\1\376\376\376\377\377\377" \ - "\377\361\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377" \ - "\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305" \ - "@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212" \ - "\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373" \ - "\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377\377\212\377" \ - "\377\377\1\376\376\376\203\377\377\377\2\332\332\332<<>\203::<\3;;=:" \ - ":<<<>\203::<\2\301\301\303\376\376\376\202\377\377\377\5\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\231" \ - "\377\377\377\4\376\376\376\251\251\253::<;;=\204::<\5;;=::<99;::<\346" \ - "\346\346\377\377\377\377\365\377\377\377\1\375\377\376\202\377\377\375" \ - "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \ - "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \ - "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \ - "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \ - "\377\376\377\377\377\377\377\212\377\377\377\1\376\376\376\203\377\377" \ - "\377\1SSS\207::<\3;;=::<\205\205\207\205\377\377\377\1\376\376\376\377" \ - "\377\377\377\234\377\377\377\3wwy::<;;=\206::<\2;;=__a\377\377\377\377" \ - "\365\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \ - "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \ - "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \ - ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \ - "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \ - "\377\211\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\204" \ - "\204\204::<\202;;=\1::<\202;;=\203::<\1SSU\204\377\377\377\1\376\376" \ - "\376\377\377\377\377\235\377\377\377\1;;=\203::<\1;;=\202::<\1;;=\202" \ - "::<\1\234\234\234\202\377\377\377\1\376\376\376\377\377\377\377\362\377" \ - "\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373\364\243" \ - "\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305" \ - "B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214" \ - "\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376\377\377\375" \ - "\376\377\377\377\377\377\202\377\376\377\377\377\377\377\212\377\377" \ - "\377\1\376\376\376\204\377\377\377\6\301\301\301;;=::<;;=::<;;=\205:" \ - ":<\1\333\333\333\202\377\377\377\1\376\376\376\377\377\377\377\231\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\301\301\303\204::<\1;;=\202" \ - "::<\1:9>\202::<\1\332\332\332\377\377\377\377\356\377\377\377\10\376" \ - "\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377" \ - "\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307" \ - "B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306" \ - "<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244" \ - "\317c\367\375\361\377\377\377\377\230\377\377\377\2""99;;;=\210::<\1" \ - "\250\250\250\377\377\377\377\240\377\377\377\3\221\221\223::<;;=\207" \ - "::<\2SSU\376\376\376\377\377\377\377\355\377\377\377\6\376\376\377\377" \ - "\376\377\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377" \ - "\377\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215" \ - "\305>\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305" \ - ">\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362" \ - "\376\376\377\377\375\376\377\377\377\377\227\377\377\377\1yy{\211::<" \ - "\6lll\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\377\224\377\377\377\202\376\376\376\7\377\377\377\376\376\376" \ - "\377\377\377\376\376\376\377\377\377__a;;=\202::<\4<<>;;=::<;;=\202:" \ - ":<\1\204\204\206\203\377\377\377\1\376\376\376\377\377\377\377\352\377" \ - "\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377" \ - "\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307" \ - "\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216" \ - "\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215" \ - "\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\377\377" \ - "\377\377\221\377\377\377\3\376\376\376\377\377\377\376\376\376\203\377" \ - "\377\377\1\265\265\267\212::<\1\363\363\363\377\377\377\377\227\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\345" \ - "\345\345\202::<\202;;=\1""99;\203::<\4;;=::<\301\301\301\376\376\376" \ - "\203\377\377\377\1\376\376\376\377\377\377\377\352\377\377\377\37\376" \ - "\377\377\376\377\375\377\375\376\375\377\376\377\377\375\377\377\377" \ - "\377\376\377\370\373\362\241\321a\215\307\77\215\307=\214\305@\214\306" \ - ">\212\307<\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307>\213" \ - "\307A\215\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364\377" \ - "\377\377\376\377\377\376\376\376\376\377\377\377\377\377\377\222\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\1\347" \ - "\347\347\212::<\1\302\302\304\205\377\377\377\1\376\376\376\377\377\377" \ - "\377\222\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202" \ - "\377\377\377\5\265\265\265::<;;=99;;;=\203::<\1;;=\202::<\1\363\363\363" \ - "\377\377\377\377\356\377\377\377\202\377\377\375\3\377\374\377\375\377" \ - "\376\376\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212" \ - "\306@\214\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B" \ - "\214\306>\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242" \ - "\322b\370\373\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377" \ - "\377\230\377\377\377\2\376\376\376TTT\211::<\3\221\221\223\377\377\377" \ - "\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\231\377\377" \ - "\377\2\204\204\204::<\202;;=\202::<\1;;=\203::<\2``b\376\376\376\377" \ - "\377\377\377\357\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \ - "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \ - "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \ - "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \ - "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \ - "\377\377\377\377\377\225\377\377\377\1\376\376\376\202\377\377\377\1" \ - "\221\221\221\210::<\2;;=__a\202\377\377\377\1\376\376\376\377\377\377" \ - "\377\227\377\377\377\1\376\376\376\203\377\377\377\1SSU\202::<\1;;=\204" \ - "::<\202;;=\1\234\234\234\204\377\377\377\1\376\376\376\377\377\377\377" \ - "\352\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \ - "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \ - "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \ - ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \ - "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \ - "\377\222\377\377\377\1\376\376\376\205\377\377\377\1\301\301\301\210" \ - "::<\4""99;;;=\364\364\366\376\376\376\377\377\377\377\233\377\377\377" \ - "\1\346\346\346\207::<\4;;=99;::<\316\316\316\203\377\377\377\1\376\376" \ - "\376\377\377\377\377\353\377\377\377\1\377\377\375\202\377\377\377\32" \ - "\377\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305" \ - ">\215\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215" \ - "\306A\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377" \ - "\377\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377" \ - "\377\377\377\377\224\377\377\377\1\376\376\376\204\377\377\377\1\363" \ - "\363\363\210::<\3;;=::<\302\302\304\377\377\377\377\231\377\377\377\1" \ - "\376\376\376\202\377\377\377\1\266\266\270\203::<\203;;=\203::<\1:::" \ - "\377\377\377\377\351\377\377\377\10\376\376\377\377\377\375\377\377\377" \ - "\377\377\375\377\377\377\377\376\377\377\377\375\376\377\377\202\377" \ - "\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202" \ - "\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212" \ - "\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\377\377\377\377" \ - "\242\377\377\377\3__a::<;;=\207::<\1\221\221\221\377\377\377\377\234" \ - "\377\377\377\1\204\204\206\204::<\202;;=\203::<\1lll\203\377\377\377" \ - "\1\375\375\375\377\377\377\377\344\377\377\377\6\376\376\377\377\376" \ - "\377\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377" \ - "\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305" \ - ">\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215" \ - "\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376" \ - "\376\377\377\375\376\377\377\377\377\241\377\377\377\2\221\221\223;;" \ - "=\202::<\202;;=\203::<\2;;=^^^\204\377\377\377\1\376\376\376\377\377" \ - "\377\377\224\377\377\377\1\376\376\376\202\377\377\377\1``b\202::<\1" \ - ";;=\206::<\1\234\234\234\205\377\377\377\1\376\376\376\377\377\377\377" \ - "\342\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377" \ - "\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320" \ - "b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214" \ - "\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307" \ - "\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375" \ - "\377\377\377\377\241\377\377\377\6\301\301\303::<;;=::<99;;;=\203::<" \ - "\6;;=:::\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\377\224\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363;;=\211" \ - "::<\1\316\316\316\203\377\377\377\1\376\376\376\202\377\377\377\1\376" \ - "\376\376\377\377\377\377\342\377\377\377\37\376\377\377\376\377\375\377" \ - "\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373\362" \ - "\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306>\214" \ - "\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212\307" \ - ">\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377\376" \ - "\376\376\376\377\377\377\377\377\377\241\377\377\377\1\363\363\365\202" \ - "::<\1;;=\202::<\2""99;;;=\202::<\2;;=\316\316\316\377\377\377\377\231" \ - "\377\377\377\10\376\376\376\316\316\316::<;;=::<;;=99;;;=\204::<\202" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\344" \ - "\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202" \ - "\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305" \ - ">\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212" \ - "\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377" \ - "\377\377\202\377\376\377\1\377\377\375\377\377\377\377\243\377\377\377" \ - "\1``b\203::<\203;;=\6::<<<>::<\234\234\234\377\377\377\376\376\376\377" \ - "\377\377\377\230\377\377\377\1\234\234\236\204::<\12;;=99;::<;;=::<k" \ - "km\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\346" \ - "\377\377\377\1\375\377\376\202\377\377\375\34\377\377\377\376\376\376" \ - "\373\373\363\243\322b\211\307B\212\307<\215\305>\214\306>\212\307>\214" \ - "\305@\217\304>\212\307<\214\306<\214\306>\215\307\77\213\307A\214\306" \ - ">\215\305@\215\307\77\212\307>\244\317c\370\373\362\377\377\373\376\377" \ - "\377\377\376\377\375\376\377\377\377\375\377\376\377\377\377\377\377" \ - "\242\377\377\377\2\222\222\222::<\202;;=\7""99;::<;;=::<99;;;=lln\202" \ - "\377\377\377\1\376\376\376\377\377\377\377\225\377\377\377\3\376\376" \ - "\376\377\377\377jjl\204;;=\2""99;;;=\202::<\2;;=\221\221\223\202\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \ - "\343\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \ - "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \ - "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \ - ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \ - "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \ - "\377\242\377\377\377\2\264\264\264;;=\206::<\6;;=::<FFH\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\377\227\377\377\377\1GGI\204::<\6;;" \ - "=::<;;=::<;;=\302\302\304\206\377\377\377\1\376\376\376\377\377\377\377" \ - "\342\377\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373" \ - "\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306" \ - ">\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212" \ - "\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376" \ - "\377\377\375\376\377\377\377\377\377\202\377\376\377\377\377\377\377" \ - "\243\377\377\377\2\346\346\346;;=\211::<\1\346\346\350\377\377\377\377" \ - "\230\377\377\377\3\346\346\350::<;;=\202::<\1;;=\205::<\1\346\346\346" \ - "\302\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376" \ - "\376\376\377\377\377\377\233\377\377\377\10\376\376\377\377\377\375\377" \ - "\377\377\377\377\375\377\377\377\377\376\377\377\377\375\376\377\377" \ - "\202\377\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214" \ - "\306<\202\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306" \ - ">\6\212\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\345\377" \ - "\377\377\1\376\376\376\305\377\377\377\3FFF::<;;=\202::<\3;;=::<;;=\202" \ - "::<\1\301\301\303\377\377\377\377\230\377\377\377\4\301\301\30399;::" \ - "<;;=\204::<\3;;=::<GGI\215\377\377\377\1\376\376\376\266\377\377\377" \ - "\1\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\231\377" \ - "\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377\375" \ - "\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241\321a\217" \ - "\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306>" \ - "\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77\214" \ - "\306>\242\322b\370\373\362\376\376\377\377\375\376\341\377\377\377\5" \ - "\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\265\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377\377\3\376" \ - "\376\376\377\377\377lll\206::<\202;;=\2::<\234\234\236\377\377\377\377" \ - "\224\377\377\377\1\376\376\376\203\377\377\377\2\233\233\235;;=\203:" \ - ":<\2""99;;;=\202::<\2;;=xxz\213\377\377\377\1\376\376\376\265\377\377" \ - "\377\1\376\376\376\377\377\377\377\240\377\377\377\7\377\377\375\375" \ - "\376\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377\376" \ - "\202\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>" \ - "\202\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307" \ - "\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \ - "\377\377\373\377\376\377\377\377\375\377\377\377\377\233\377\377\377" \ - "\3\376\376\376\377\377\377\376\376\376\213\377\377\377\6\376\376\376" \ - "\377\377\377\233\233\233;;=::<;;=\206::<\1lln\377\377\377\377\226\377" \ - "\377\377\3\376\376\376\377\377\377kkm\210::<\2;;=\234\234\236\214\377" \ - "\377\377\1\315\315\315\202\234\234\234\262\234\234\236\2\234\234\234" \ - "\265\265\265\377\377\377\377\240\377\377\377\37\376\377\377\376\377\375" \ - "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \ - "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \ - ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \ - "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \ - "\376\376\376\376\377\377\344\377\377\377\4\376\376\376\347\347\347\234" \ - "\234\234\235\235\235\260\234\234\236\204\234\234\234\216\377\377\377" \ - "\1\301\301\301\202::<\1;;=\203::<\202;;=\2::<EEG\377\377\377\377\230" \ - "\377\377\377\1FFH\204::<\202;;=\4::<;;=99;\302\302\304\212\377\377\377" \ - "\5\376\376\376\377\377\377\234\234\234::<;;=\263::<\1jjj\205\377\377" \ - "\377\1\376\376\376\377\377\377\377\231\377\377\377\202\377\377\375\3" \ - "\377\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243" \ - "\322b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B" \ - "\214\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214" \ - "\306>\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377" \ - "\377\375\346\377\377\377\2\316\316\316:::\263::<\4;;=:::\377\377\377" \ - "\376\376\376\214\377\377\377\3\346\346\346::<;;=\205::<\4;;=::<;;=\346" \ - "\346\346\377\377\377\377\226\377\377\377\2\362\362\362;;=\204::<\3""9" \ - "9;::<;;=\202::<\1\346\346\350\214\377\377\377\2\234\234\234;;=\264::" \ - "<\1kkm\377\377\377\377\240\377\377\377\1\375\377\376\202\377\377\375" \ - "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \ - "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \ - "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \ - "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \ - "\377\376\377\345\377\377\377\2\316\316\31699;\265::<\216\377\377\377" \ - "\2\376\376\376FFH\203::<\1;;=\203::<\3;;=99;\316\316\316\377\377\377" \ - "\377\226\377\377\377\1\317\317\317\206::<\202;;=\4""99;FFH\377\377\377" \ - "\376\376\376\213\377\377\377\1\234\234\236\202::<\1;;=\261::<\2;;=kk" \ - "m\205\377\377\377\1\376\376\376\377\377\377\377\231\377\377\377\3\377" \ - "\376\377\377\377\377\375\377\376\202\377\377\377\11\373\373\363\241\321" \ - "d\214\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202" \ - "\215\307=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307\77" \ - "\215\307=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376\202" \ - "\377\377\375\2\374\377\377\377\376\377\345\377\377\377\1\316\316\316" \ - "\264::<\202;;=\215\377\377\377\4\376\376\376\377\377\377lln99;\210::" \ - "<\2\234\234\234\376\376\376\377\377\377\377\225\377\377\377\5\234\234" \ - "\234::<;;=99;::<\202;;=\5::<;;=::<kkm\376\376\377\214\377\377\377\1\234" \ - "\234\236\203::<\1:9>\261::<\1kkm\377\377\377\377\237\377\377\377\1\377" \ - "\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306" \ - ">\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215" \ - "\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<" \ - "\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377" \ - "\377\377\377\202\377\376\377\346\377\377\377\1\316\316\316\266::<\217" \ - "\377\377\377\2\234\234\236;;=\206::<\3""99;;;=www\377\377\377\377\226" \ - "\377\377\377\3\204\204\206::<;;=\207::<\3\222\222\222\377\377\377\376" \ - "\376\376\213\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\210" \ - "\377\377\377\7\376\376\376\377\377\377\377\377\375\376\377\375\376\377" \ - "\377\377\377\377\377\376\377\203\377\377\377\1\376\376\376\203\377\377" \ - "\377\1\376\377\377\203\377\377\377\16\377\377\375\377\377\377\377\376" \ - "\377\377\377\377\377\377\373\376\377\377\377\377\377\377\377\373\371" \ - "\372\364\242\322d\214\306<\215\307\77\214\305@\214\306<\202\215\305@" \ - "\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214" \ - "\306>\215\307\77\214\305@\244\317c\367\375\361\356\377\377\377\1\316" \ - "\316\316\266::<\214\377\377\377\1\376\376\376\202\377\377\377\1\266\266" \ - "\266\202::<\1;;=\203::<\1;;=\202::<\3__a\377\377\377\376\376\376\377" \ - "\377\377\377\224\377\377\377\2kkm;;=\202::<\202;;=\202::<\3;;=::<\265" \ - "\265\265\215\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\214" \ - "\377\377\377\2\376\377\377\376\377\375\202\377\377\375\203\377\377\377" \ - "\204\377\377\375\205\377\377\377\1\376\376\377\202\377\377\377\6\377" \ - "\377\375\377\377\377\371\372\362\242\320c\214\305@\215\305@\202\214\306" \ - ">\20\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305" \ - ">\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362" \ - "\376\376\377\377\375\376\355\377\377\377\1\316\316\316\266::<\215\377" \ - "\377\377\4\376\376\376\377\377\377\315\315\315;;=\203::<\1;;=\203::<" \ - "\2;;=99;\377\377\377\377\226\377\377\377\203::<\1;;=\202::<\1;;=\203" \ - "::<\2\317\317\317\376\376\376\214\377\377\377\1\234\234\236\265::<\1" \ - "kkm\377\377\377\377\211\377\377\377\3\376\376\376\377\376\377\377\377" \ - "\377\203\377\376\377\204\377\377\377\1\376\376\376\202\377\377\377\1" \ - "\377\376\377\203\377\377\377\1\376\376\376\203\377\377\377\31\376\376" \ - "\377\377\376\377\371\372\365\241\322e\212\307<\216\306\77\212\311<\216" \ - "\303\77\212\307>\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307" \ - "\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \ - "\377\377\373\377\376\377\377\377\375\355\377\377\377\1\316\316\316\266" \ - "::<\220\377\377\377\202::<\4;;=::<;;=::<\202;;=\3""99;;;=\346\346\346" \ - "\377\377\377\377\224\377\377\377\2\362\362\362;;=\202::<\7""99;::<;;" \ - "=88:;;=::<;;=\216\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377" \ - "\212\377\377\377\202\376\377\377\202\377\377\377\1\377\376\377\206\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\376\376\376\202\377\377\377\6\370\373\364\242\322b\214\306>\214\305" \ - "@\215\305>\214\305@\202\215\306A\20\214\306<\214\306>\216\306\77\215" \ - "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \ - "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\355\377" \ - "\377\377\1\316\316\316\266::<\216\377\377\377\6\376\376\376\377\377\377" \ - "SSU;;=99;;;=\206::<\1\316\316\316\377\377\377\377\224\377\377\377\2\316" \ - "\316\31699;\205::<\1;;=\202::<\1FFH\216\377\377\377\1\234\234\236\265" \ - "::<\1kkm\377\377\377\377\207\377\377\377\202\377\376\377\2\377\377\377" \ - "\377\377\375\203\377\377\377\1\376\377\375\202\377\377\375\203\377\377" \ - "\377\202\377\377\375\2\377\377\377\377\377\375\205\377\377\377\26\377" \ - "\377\375\371\372\362\243\322b\211\305A\215\305>\215\307\77\214\305@\214" \ - "\306>\215\305@\212\307>\214\305@\214\305B\214\306>\212\307>\212\310\77" \ - "\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377\377" \ - "\202\377\376\377\1\377\377\375\356\377\377\377\1\316\316\316\266::<\220" \ - "\377\377\377\3kkm::<;;=\202::<\6;;=::<;;=::<;;=\233\233\233\377\377\377" \ - "\377\223\377\377\377\2\376\376\376\265\265\265\205::<\1;;=\202::<\2""9" \ - "9;lln\216\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377" \ - "\377\377\3\376\377\375\375\377\376\377\377\377\202\377\376\377\3\377" \ - "\376\374\377\377\377\376\377\377\202\377\377\377\1\377\377\375\204\377" \ - "\377\377\2\375\377\376\377\377\375\202\377\377\377\1\377\377\375\202" \ - "\377\377\377\32\376\376\374\365\367\354\223\312K\215\305>\214\306<\211" \ - "\305\77\214\306>\212\307>\215\307\77\214\306>\214\306<\214\306>\215\307" \ - "\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \ - "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \ - "\377\355\377\377\377\1\316\316\316\266::<\217\377\377\377\5\376\376\376" \ - "\234\234\236;;=::<;;=\202::<\2""99;::<\202;;=\1\221\221\221\377\377\377" \ - "\377\224\377\377\377\1\235\235\235\211::<\2\221\221\223\376\376\376\215" \ - "\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377\377\377" \ - "\1\377\376\377\202\377\377\375\202\377\377\377\202\377\377\375\1\377" \ - "\377\377\202\376\377\377\1\377\377\377\202\377\377\375\5\376\376\377" \ - "\377\377\377\377\377\373\377\377\377\376\376\376\203\377\377\377\27\376" \ - "\376\376\377\377\375\376\377\372\347\365\333\225\311K\217\304>\214\305" \ - "B\215\307\77\212\306B\214\306>\215\306A\214\306>\215\305>\214\306>\215" \ - "\305>\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377" \ - "\376\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\355\377" \ - "\377\377\1\316\316\316\266::<\214\377\377\377\1\376\376\376\203\377\377" \ - "\377\3\250\250\252::<;;=\203::<\202;;=\202::<\1kkk\377\377\377\377\224" \ - "\377\377\377\4www;;=::<;;=\202::<\202;;=\202::<\1\234\234\236\216\377" \ - "\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377\377\377\15" \ - "\367\374\365\343\361\316\316\346\254\305\342\240\304\343\240\303\342" \ - "\236\305\342\237\312\346\251\345\356\317\365\373\357\376\377\377\376" \ - "\376\377\377\377\375\214\377\377\377\24\350\365\333\223\312K\216\306" \ - "\77\212\307>\215\304B\214\306>\215\307=\214\306>\215\306A\212\306@\212" \ - "\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376" \ - "\377\377\375\376\377\377\377\377\377\202\377\376\377\356\377\377\377" \ - "\1\316\316\316\266::<\217\377\377\377\2\376\376\376\316\316\320\207:" \ - ":<\3;;=::<SSS\377\377\377\377\223\377\377\377\2\376\376\376kkm\202::" \ - "<\1;;=\206::<\1\316\316\316\377\377\377\377\276\377\377\377\4\377\377" \ - "\375\376\377\377\377\377\377\377\376\377\202\377\377\377\10\377\377\375" \ - "\377\376\377\376\377\375\376\376\376\377\377\377\350\365\333\277\337" \ - "\224\232\315V\210\214\306>\10\212\306@\212\307>\232\315W\277\337\224" \ - "\352\364\333\377\377\377\377\376\377\377\377\375\202\376\377\377\202" \ - "\377\377\377\2\377\376\377\377\377\375\202\377\377\377\17\377\377\375" \ - "\377\376\377\347\365\333\226\312L\215\306A\213\310=\212\306@\217\304" \ - ">\216\307<\214\305@\215\305<\214\305@\215\307=\244\317c\366\373\364\377" \ - "\377\377\377\276\377\377\377\6\346\346\346;;=99;;;=::<;;=\205::<\377" \ - "\377\377\377\224\377\377\377\1::<\202;;=\2::<;;=\203::<\4;;=::<\316\316" \ - "\316\376\376\376\377\377\377\377\274\377\377\377\14\377\375\377\377\377" \ - "\377\376\376\374\377\377\375\377\376\377\377\377\375\376\377\377\377" \ - "\377\377\376\377\377\377\376\377\324\353\265\231\316Z\202\214\306<\1" \ - "\215\305>\210\214\306>\202\215\305>\16\214\306>\213\307A\211\306;\233" \ - "\314V\324\353\265\377\377\377\377\376\377\377\377\375\375\377\376\376" \ - "\377\377\377\377\377\377\376\377\376\377\377\377\377\373\202\377\377" \ - "\377\6\376\376\377\350\365\333\222\312K\215\306A\217\304>\212\306@\202" \ - "\214\305@\6\213\310\77\212\307>\242\322d\370\373\364\377\377\377\377" \ - "\377\375\377\377\377\377\276\377\377\377\203::<\3;;=::<99;\202;;=\202" \ - "::<\1\346\346\350\377\377\377\377\222\377\377\377\2\376\376\376;;=\202" \ - "::<\202;;=\205::<\377\377\377\377\275\377\377\377\4\377\377\375\377\377" \ - "\377\377\377\373\377\376\374\202\376\377\377\12\377\377\375\377\377\377" \ - "\376\377\375\342\360\317\232\315V\214\306<\220\306=\215\306A\215\306" \ - "C\215\306A\210\214\306>\202\215\307\77\7\215\306A\214\306>\214\305@\213" \ - "\307A\214\305@\230\315W\341\361\315\203\377\377\377\2\376\376\374\374" \ - "\377\375\202\377\377\377\2\377\377\375\377\376\377\202\377\377\377\13" \ - "\352\364\331\221\311J\215\306A\213\310=\216\306\77\214\305@\214\306<" \ - "\242\322e\370\373\364\376\376\377\377\377\375\377\377\377\377\277\377" \ - "\377\377\1``b\202::<\2;;=99;\202;;=\4::<;;=::<\316\316\320\377\377\377" \ - "\377\222\377\377\377\4\316\316\316;;=::<99;\202::<\2;;=::<\202;;=\3:" \ - ":<\376\376\376\377\377\377\202\376\376\376\377\377\377\377\271\377\377" \ - "\377\17\376\377\377\376\376\374\377\376\374\376\377\377\377\377\377\377" \ - "\377\375\376\377\377\370\373\364\277\336\222\215\305<\214\305@\215\307" \ - "\77\212\307>\215\307\77\213\307A\211\214\306>\16\216\306A\214\305B\213" \ - "\307A\214\306>\215\305<\213\305=\215\306A\214\306<\215\305>\300\337\223" \ - "\370\373\362\376\376\377\377\377\375\376\377\377\204\377\377\377\16\377" \ - "\376\377\376\376\377\376\377\377\352\364\331\222\312K\215\306A\214\306" \ - "<\214\305@\243\321d\371\373\360\376\376\377\376\377\377\377\377\377\376" \ - "\377\377\377\377\377\377\273\377\377\377\4\376\376\376\377\377\377\376" \ - "\376\376lln\203::<\1;;=\20299;\1;;=\202::<\1\266\266\270\377\377\377" \ - "\377\222\377\377\377\5\316\316\316::<;;=::<;;=\205::<\3kkm\377\377\377" \ - "\376\376\376\377\377\377\377\274\377\377\377\14\377\377\375\376\377\377" \ - "\377\377\377\377\377\375\376\376\376\367\374\365\244\317c\214\305@\215" \ - "\307=\211\306=\213\307A\215\306A\202\212\306@\1\213\310<\210\214\306" \ - ">\202\212\307>\3\212\307<\214\306>\216\306\77\202\214\306>\12\215\305" \ - "<\215\307\77\212\306@\242\322b\371\374\365\377\377\375\376\376\374\376" \ - "\377\377\377\376\377\376\377\377\202\377\377\377\13\376\377\375\376\376" \ - "\377\377\377\377\350\365\333\225\311K\214\305B\242\320c\371\374\361\377" \ - "\377\377\376\377\377\377\376\377\377\377\377\377\300\377\377\377\7\221" \ - "\221\223::<99;::<;;=::<;;=\203::<\1\234\234\236\377\377\377\377\222\377" \ - "\377\377\2\250\250\25099;\206::<\3;;=::<jjl\377\377\377\377\275\377\377" \ - "\377\202\377\376\377\16\376\377\377\377\377\375\376\376\376\352\364\333" \ - "\223\312K\220\306=\215\306A\214\305B\213\310=\215\306C\215\305>\216\306" \ - "\77\215\305>\215\305@\210\214\306>\37\215\305@\215\307\77\212\306@\215" \ - "\307\77\214\304\77\215\306A\212\307;\212\306@\214\306>\216\307B\214\306" \ - ">\222\312K\354\364\334\377\376\377\377\377\377\377\377\373\376\377\377" \ - "\377\375\376\376\377\375\377\377\377\377\376\377\377\377\377\376\376" \ - "\377\347\365\333\260\327z\371\374\363\375\377\376\376\377\377\377\376" \ - "\377\377\377\377\377\377\375\377\377\377\377\276\377\377\377\3\376\376" \ - "\376\234\234\23699;\203;;=\205::<\1\221\221\223\377\377\377\377\222\377" \ - "\377\377\2\234\234\234;;=\204::<\202;;=\3::<;;=\235\235\237\377\377\377" \ - "\377\276\377\377\377\202\377\377\375\15\376\377\377\367\374\365\223\312" \ - "K\214\306>\213\310\77\215\305@\214\306<\215\307=\214\305@\213\307A\211" \ - "\305\77\215\307\77\215\305>\210\214\306>\20\215\306A\213\305=\215\307" \ - "=\214\305@\215\306A\214\306>\213\304A\220\305\77\216\306\77\212\306@" \ - "\215\305@\213\307A\221\311L\367\375\363\376\377\377\377\377\377\202\377" \ - "\377\373\1\377\375\376\202\377\377\377\4\377\376\377\376\377\377\377" \ - "\376\377\376\377\377\203\377\377\377\3\377\376\377\376\376\377\374\377" \ - "\375\377\377\377\377\277\377\377\377\2\265\265\267<<>\20299;\7::<;;=" \ - "::<99;;;=::<lln\377\377\377\377\222\377\377\377\3\221\221\221::<;;=\205" \ - "::<\3;;=::<\234\234\236\377\377\377\377\276\377\377\377\17\376\377\377" \ - "\377\377\377\366\373\364\244\317c\220\306=\213\310\77\212\306@\211\307" \ - "@\216\306\77\215\305@\215\307\77\213\310\77\215\307\77\215\305>\214\305" \ - "@\210\214\306>\22\216\306A\215\307\77\213\305=\216\306\77\214\306>\212" \ - "\307>\213\310\77\214\305@\215\306C\214\306<\215\307=\215\305>\213\310" \ - "=\242\320d\372\372\362\376\377\375\377\375\377\377\377\375\202\376\377" \ - "\377\5\377\377\377\377\377\375\377\377\377\377\377\375\377\377\377\202" \ - "\377\376\377\5\376\377\375\376\377\377\377\377\377\377\375\376\377\377" \ - "\375\377\377\377\377\274\377\377\377\5\376\376\376\377\377\377\316\316" \ - "\320::<;;=\202::<\1;;=\202::<\3""99;::<kkm\377\377\377\377\222\377\377" \ - "\377\2kkm::<\203;;=\205::<\1\264\264\264\377\377\377\377\275\377\377" \ - "\377\10\377\376\377\376\377\377\377\377\377\300\336\224\212\307>\214" \ - "\306<\214\306>\211\307>\231\214\306>\1\216\306\77\203\214\306>\2\214" \ - "\305@\266\334\207\202\377\377\377\7\377\376\377\377\377\377\377\376\377" \ - "\377\377\375\377\377\377\377\377\375\376\377\377\377\377\377\377\303" \ - "\377\377\377\1\376\376\376\202\377\377\377\1\316\316\316\206::<\6;;=" \ - "::<;;=FFH\377\377\377\376\376\376\205\377\377\377\1\376\376\376\377\377" \ - "\377\377\212\377\377\377\1lln\202::<\3;;=99;;;=\204::<\3\317\317\317" \ - "\377\377\377\376\376\376\377\377\377\377\273\377\377\377\10\377\375\377" \ - "\374\377\375\343\361\320\214\306>\215\306A\214\304=\212\307>\215\305" \ - ">\230\214\306>\20\214\306<\213\304\77\212\307>\212\306B\214\306<\212" \ - "\307>\220\304>\337\363\316\377\376\377\377\377\377\376\377\377\377\377" \ - "\377\376\376\377\377\377\377\376\376\376\376\377\377\377\377\377\377" \ - "\302\377\377\377\1\376\376\376\202\377\377\377\2\376\376\376\377\377" \ - "\377\204::<\1;;=\202::<\3;;=99;;;=\203\377\377\377\1\376\376\376\202" \ - "\377\377\377\1\376\376\376\377\377\377\377\213\377\377\377\2SSU;;=\202" \ - "::<\2;;=99;\204::<\1\315\315\315\203\377\377\377\1\376\376\376\377\377" \ - "\377\377\271\377\377\377\10\376\376\376\377\377\377\233\316W\214\305" \ - "@\212\306@\216\306=\214\305@\215\305@\230\214\306>\17\214\306<\215\306" \ - "C\211\306=\213\307A\214\304\77\212\306@\214\305B\234\313W\376\377\375" \ - "\377\377\377\376\377\375\377\377\375\376\377\377\376\376\377\376\377" \ - "\375\377\377\377\377\302\377\377\377\1\376\376\376\202\377\377\377\4" \ - "\376\376\376\377\377\377\376\376\376;;=\206::<\202;;=\3::<\377\377\377" \ - "\376\376\376\203\377\377\377\3\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\377\212\377\377\377\3::<99;;;=\202::<\10;;=::<;;=99;;;=\363" \ - "\363\363\377\377\377\376\376\376\377\377\377\377\274\377\377\377\7\323" \ - "\354\265\214\305@\215\307\77\215\306A\216\305C\213\304\77\212\307<\230" \ - "\214\306>\20\215\307\77\215\304B\214\305@\214\306>\215\305>\215\307=" \ - "\212\307<\215\307\77\323\351\270\377\376\377\377\377\377\376\376\376" \ - "\376\377\375\376\376\376\376\377\377\377\376\374\377\377\377\377\302" \ - "\377\377\377\202\376\376\376\202\377\377\377\2\376\376\376FFH\210::<" \ - "\2;;=\316\316\316\202\377\377\377\1\376\376\376\377\377\377\377\215\377" \ - "\377\377\1\376\376\376\202;;=\4""99;;;=::<;;=\202::<\2;;=::<\377\377" \ - "\377\377\277\377\377\377\7\231\316X\220\304>\214\305@\215\307\77\214" \ - "\306<\214\311>\214\305@\231\214\306>\11\215\304B\214\306>\215\306A\214" \ - "\306<\215\306A\214\305B\215\307\77\234\315X\375\377\374\204\377\377\377" \ - "\2\376\377\377\377\376\377\377\377\377\377\304\377\377\377\202\376\376" \ - "\376\4\377\377\377jjl::<99;\202;;=\205::<\7\316\316\316\377\377\377\376" \ - "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\377\212\377\377\377\6\363\363\363::<99;;;=::<;;=\202::<\1;;=\202::<" \ - "\377\377\377\377\276\377\377\377\2\342\361\320\214\306<\202\215\305>" \ - "\4\212\307>\215\307=\211\306=\215\305>\230\214\306>\2\213\310=\214\306" \ - "<\202\214\305@\7\215\306A\214\306>\215\307=\214\304\77\211\310<\343\362" \ - "\321\377\377\375\202\377\376\377\2\377\377\375\376\376\376\377\377\377" \ - "\377\310\377\377\377\4kkm::<;;=::<\202;;=\202::<\3;;=::<\316\316\316" \ - "\202\377\377\377\1\376\376\376\377\377\377\377\215\377\377\377\3\316" \ - "\316\316::<;;=\202::<\1;;=\204::<\1__a\202\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\377\271\377\377\377\4\270\333\207" \ - "\214\306>\214\305@\214\306>\203\214\305@\1\215\305>\230\214\306>\17\215" \ - "\306A\213\310=\212\307<\214\306>\214\306<\215\306A\214\306>\214\305@" \ - "\213\306E\267\332\206\377\377\375\376\377\377\377\377\375\377\377\377" \ - "\377\377\375\377\377\377\377\303\377\377\377\1\376\376\376\204\377\377" \ - "\377\6lln;;=::<99;::<;;=\204::<\1\250\250\250\204\377\377\377\1\376\376" \ - "\376\377\377\377\377\213\377\377\377\1\316\316\316\203::<\1;;=\205::" \ - "<\1lln\203\377\377\377\1\376\376\376\377\377\377\377\272\377\377\377" \ - "\10\232\315V\215\305@\212\306@\215\305>\214\306<\215\304D\215\305<\212" \ - "\306@\230\214\306>\3\217\304@\214\306<\215\306A\202\215\305@\7\214\306" \ - ">\214\305@\212\307>\215\305<\233\316W\376\376\377\376\377\375\203\377" \ - "\377\377\1\376\377\377\377\377\377\377\305\377\377\377\3\376\376\376" \ - "\377\377\377\234\234\236\203::<\2;;=99;\204::<\1\234\234\234\202\377" \ - "\377\377\1\376\376\376\377\377\377\377\215\377\377\377\5\316\316\320" \ - "::<;;=::<;;=\202::<\1;;=\202::<\1kkm\377\377\377\377\266\377\377\377" \ - "\10\375\377\374\376\377\377\376\376\376\377\377\375\377\377\377\376\377" \ - "\377\377\377\375\360\371\350\250\214\306>\4\214\305@\212\307>\360\371" \ - "\346\376\377\375\202\377\377\377\1\377\377\375\377\377\377\377\304\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\234\234\234\211::<\1\234\234" \ - "\234\205\377\377\377\1\376\376\376\377\377\377\377\212\377\377\377\4" \ - "\316\316\320llnkkmlln\203kkm\1jjl\202kkm\1\221\221\223\377\377\377\377" \ - "\270\377\377\377\1\377\376\377\202\377\377\377\3\375\376\377\377\377" \ - "\375\341\361\315\251\214\306>\2\215\307\77\342\360\314\377\377\377\377" \ - "\310\377\377\377\202\376\376\376\202\377\377\377\2\266\266\266kkk\210" \ - "kkm\1\265\265\265\206\377\377\377\1\376\376\376\377\377\377\377\211\377" \ - "\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \ - "\377\377\377\377\264\377\377\377\1\377\376\377\205\377\377\377\2\375" \ - "\377\374\310\340\246\252\214\306>\1\310\340\246\377\377\377\377\307\377" \ - "\377\377\1\376\376\376\202\377\377\377\3\375\375\375\377\377\377\376" \ - "\376\376\211\377\377\377\7\376\376\376\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\377\377\377\376\376\376\377\377\377\377\213\377\377" \ - "\377\1\376\376\376\204\377\377\377\1\376\376\376\206\377\377\377\1\376" \ - "\376\376\377\377\377\377\263\377\377\377\1\377\376\377\204\377\377\377" \ - "\3\376\376\377\376\377\375\304\342\234\251\214\306>\7\215\305@\305\343" \ - "\235\376\376\377\377\377\377\376\376\377\377\376\377\377\377\375\377" \ - "\377\377\377\306\377\377\377\1\376\376\376\217\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\377\377\377\377\214\377\377\377\5\376\376" \ - "\376\377\377\377\376\376\376\377\377\377\376\376\376\203\377\377\377" \ - "\1\376\376\376\377\377\377\377\267\377\377\377\1\377\377\375\202\377" \ - "\377\377\3\377\376\377\376\377\375\305\342\237\251\214\306>\3\215\305" \ - "@\303\344\235\376\376\376\202\377\377\377\1\377\376\377\377\377\377\377" \ - "\305\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377" \ - "\377\377\1\376\376\376\377\377\377\377\216\377\377\377\1\376\376\376" \ - "\203\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\377\377" \ - "\377\377\266\377\377\377\5\376\377\377\376\376\377\377\376\377\377\377" \ - "\377\305\342\242\251\214\306>\4\215\306A\302\341\236\377\377\375\376" \ - "\376\376\377\377\377\377\305\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\376\376\376\214\377\377\377\1\376\376\376\377\377\377\377\231\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\264\377" \ - "\377\377\2\376\376\376\377\376\377\202\376\377\377\202\377\377\377\1" \ - "\305\342\240\251\214\306>\7\214\305@\306\343\240\377\376\374\377\377" \ - "\377\376\377\377\377\377\377\376\376\376\377\377\377\377\325\377\377" \ - "\377\1\376\376\376\377\377\377\377\222\377\377\377\1\376\376\376\205" \ - "\377\377\377\1\376\376\376\377\377\377\377\265\377\377\377\4\377\377" \ - "\375\377\376\377\375\377\376\376\377\375\202\377\377\377\1\305\343\235" \ - "\251\214\306>\4\213\310\77\306\341\234\377\376\377\377\377\377\202\376" \ - "\377\375\377\377\377\377\311\377\377\377\1\377\377\375\215\377\377\377" \ - "\1\376\376\376\377\377\377\377\377\377\377\377\314\377\377\377\3\377" \ - "\377\375\377\377\377\376\377\375\203\377\377\377\11\376\377\377\345\360" \ - "\320\214\305@\214\306>\214\305@\214\304\77\214\306<\215\305>\212\307" \ - ">\231\214\306>\1\214\305@\202\215\307\77\205\214\306>\5\212\307>\214" \ - "\306>\342\360\315\377\377\377\376\376\376\202\377\377\377\1\377\377\375" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\244" \ - "\377\377\377\3\377\376\377\377\377\377\376\377\375\203\377\377\377\11" \ - "\376\377\377\362\371\347\214\306>\214\305B\215\310<\215\306A\214\305" \ - "@\215\307\77\214\305@\231\214\306>\4\215\307\77\213\305=\214\306>\215" \ - "\307\77\202\214\306>\5\215\307\77\214\306>\216\306\77\215\306A\360\367" \ - "\345\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\251\377\377\377\2\377\376\377\377\377\375\203\377\377\377\13\377\377" \ - "\375\377\377\377\375\377\374\233\316W\214\305@\213\304\77\212\306@\215" \ - "\307\77\214\305@\215\306A\214\305@\230\214\306>\3\215\307\77\214\306" \ - ">\215\306A\203\214\305@\7\215\306A\214\305@\215\304B\232\315T\377\377" \ - "\375\376\377\377\377\377\375\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\250\377\377\377\1\377\377\375\205\377\377\377" \ - "\11\377\376\377\267\333\204\213\307A\213\307C\215\307\77\213\304\77\215" \ - "\307\77\215\305<\212\306@\231\214\306>\1\215\307\77\203\214\305@\202" \ - "\214\306>\7\215\307\77\212\306@\267\333\204\377\376\377\376\377\377\377" \ - "\377\375\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\247\377\377\377\17\377\377\375\377\377\377\377\377\375" \ - "\376\376\376\377\377\377\377\377\375\376\376\377\334\354\305\211\306" \ - "=\213\307A\213\305;\215\306A\214\306<\215\305>\213\307A\232\214\306>" \ - "\202\214\305@\11\214\306>\214\306<\214\306>\215\307\77\212\311=\333\355" \ - "\305\377\376\377\377\377\377\376\376\376\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\252\377\377\377\3\377\377\375\377" \ - "\377\377\377\376\377\203\377\377\375\7\233\314V\215\307\77\215\305>\214" \ - "\306>\215\307\77\214\305@\212\307>\232\214\306>\14\214\305@\214\306>" \ - "\214\306<\215\307=\215\307\77\214\305@\232\315V\374\377\373\376\376\377" \ - "\377\377\375\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\255\377\377\377\10\377\377\375\377\376" \ - "\377\324\353\267\214\304\77\215\305>\214\305@\212\307<\214\305@\232\214" \ - "\306>\2\215\307\77\215\306A\202\214\306>\4\215\307\77\213\304\77\215" \ - "\306E\316\346\254\202\377\377\377\3\377\377\375\376\376\377\376\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\247" \ - "\377\377\377\1\376\376\376\206\377\377\377\10\377\377\373\375\376\377" \ - "\232\315W\214\306>\215\307=\211\307>\215\306A\215\305>\232\214\306>\1" \ - "\214\305@\202\215\307\77\13\214\305@\215\306E\227\317P\377\377\377\377" \ - "\377\375\376\377\377\377\377\377\377\377\375\375\377\376\377\377\377" \ - "\377\377\375\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\254\377\377\377\20\376\377\377\377\375\377\331\356\303\215\305" \ - "@\213\310\77\215\305>\216\306\77\213\307A\215\306A\214\306<\214\306>" \ - "\216\306\77\213\304\77\212\307<\214\306>\215\305@\210\214\306>\1\214" \ - "\305@\202\215\307\77\205\214\306>\10\214\305@\212\307>\215\305>\214\305" \ - "@\215\305>\214\305@\215\305>\331\356\305\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\264\377\377\377\20\376\376\374\377" \ - "\377\375\376\376\374\261\330{\214\306>\216\306A\214\306>\213\307A\215" \ - "\305>\215\306A\215\307\77\213\304A\215\307\77\214\305@\214\306<\216\306" \ - "A\210\214\306>\4\215\307\77\213\305=\214\306>\215\307\77\202\214\306" \ - ">\12\215\307\77\214\306>\212\307>\220\305\77\212\307>\214\306>\213\310" \ - "=\214\306<\262\327z\376\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\265\377\377\377\17\374\377\377\377\377\377\370" \ - "\373\362\241\321d\211\310<\215\305>\215\305@\216\306=\214\305@\214\306" \ - ">\215\307\77\214\306>\212\307<\212\306@\212\307<\210\214\306>\3\215\307" \ - "\77\214\306>\215\306A\203\214\305@\12\215\306A\214\305@\215\305>\212" \ - "\307>\213\307A\216\305C\215\307=\242\322e\371\372\364\375\377\376\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\264\377" \ - "\377\377\1\375\377\374\203\377\377\377\4\352\364\333\223\311O\212\306" \ - "@\215\305@\202\213\310\77\202\214\306>\4\216\307F\213\305=\215\307\77" \ - "\215\305@\211\214\306>\1\215\307\77\203\214\305@\202\214\306>\1\215\307" \ - "\77\202\214\305@\6\216\305C\215\307\77\225\311K\351\363\332\377\377\377" \ - "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\265\377\377\377\17\377\375\376\377\376\377\377\377\377\377\377" \ - "\375\352\365\327\223\313L\212\307<\215\305>\214\305@\215\307=\214\305" \ - "@\214\306<\213\310\77\213\304\77\220\305A\212\214\306>\202\214\305@\12" \ - "\214\306>\214\306<\214\306>\215\307\77\214\306>\213\310=\215\307=\225" \ - "\311K\347\365\334\377\377\375\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\267\377\377\377\1\377\377\375\202\377\377\377" \ - "\13\377\376\377\376\377\377\353\363\334\245\320d\214\305B\214\305@\215" \ - "\306A\213\305=\214\306>\213\307A\213\310=\213\214\306>\5\214\305@\214" \ - "\306>\214\306<\215\307=\215\307\77\202\214\305@\5\214\306<\242\322e\351" \ - "\363\332\377\377\375\376\376\376\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\267\377\377\377\1\376\376\374\202\377\377" \ - "\375\6\376\377\377\377\376\377\377\377\375\371\372\364\255\330|\217\304" \ - ">\202\212\306@\2\215\306A\214\303A\202\214\305@\211\214\306>\2\215\307" \ - "\77\215\306A\202\214\306>\6\215\307\77\213\304\77\215\306E\215\305>\262" \ - "\327z\371\372\364\203\377\377\377\2\376\377\377\377\377\375\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\264\377\377\377" \ - "\1\376\376\376\202\377\377\377\2\377\377\375\377\376\377\203\377\377" \ - "\377\6\377\377\375\331\356\303\233\314W\215\310<\214\305@\215\307\77" \ - "\214\214\306>\1\214\305@\202\215\307\77\7\214\305@\215\306E\227\317P" \ - "\331\356\305\376\377\377\375\377\376\376\377\377\202\377\377\377\2\377" \ - "\377\375\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\274\377\377\377\10\377\377\375\377\376\377\365\375\362" \ - "\307\342\237\234\315Z\212\306@\212\307>\214\305@\202\215\307\77\16\214" \ - "\306>\215\307\77\214\306>\215\306A\214\306>\213\310\77\214\306>\215\305" \ - "<\216\306A\213\310\77\212\307>\232\315T\307\341\242\370\373\362\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\377" \ - "\377\1\377\377\375\202\377\377\377\10\377\376\377\376\376\374\335\354" \ - "\303\270\333\207\222\311J\214\305@\215\306A\213\305=\202\214\306>\13" \ - "\215\307\77\216\306\77\215\305>\212\306@\212\307>\226\312K\270\333\211" \ - "\334\354\307\376\377\377\376\376\376\377\377\375\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\306\377\377\377\2\376\377" \ - "\375\376\377\377\204\377\377\377\16\350\366\334\332\354\302\311\341\245" \ - "\306\341\234\305\342\237\304\341\237\305\342\240\305\342\237\334\355" \ - "\303\352\364\333\377\377\375\377\375\376\377\376\377\377\377\375\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\307\377" \ - "\377\377\15\376\376\376\377\376\377\377\377\375\377\377\373\376\377\377" \ - "\376\377\375\376\377\377\377\377\375\377\377\377\376\376\376\376\377" \ - "\377\376\377\375\377\377\377\202\377\376\377\204\377\377\377\1\376\376" \ - "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\307\377\377\377\3\376\377\377\377\377\377\376\376\376\202\377\377\377" \ - "\1\376\376\376\210\377\377\377\3\375\377\376\376\377\377\377\377\377" \ - "\203\377\376\377\4\376\377\375\376\377\377\377\377\377\377\376\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377" \ - "\377\377\10\377\377\375\377\376\377\377\377\373\377\377\377\375\377\376" \ - "\376\377\377\376\376\376\377\376\377\202\376\377\377\1\377\377\377\202" \ - "\376\376\376\202\377\377\377\202\376\377\377\5\376\377\375\377\377\377" \ - "\376\376\374\377\377\377\377\377\375\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\307\377\377\377\1\376\376\377\202\377" \ - "\377\377\2\377\377\375\376\376\377\202\377\377\377\2\376\377\375\377" \ - "\377\375\204\377\377\377\202\377\377\375\1\376\377\375\202\376\377\377" \ - "\202\377\377\375\202\377\377\377\1\377\376\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\310\377\377\377\5\377\377\375" \ - "\377\376\377\377\377\375\376\376\377\377\376\377\207\377\377\377\202" \ - "\377\376\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\377\261\377\377\377" \ - "\1\376\376\376\210\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\331\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\257\377" \ - "\377\377\1\376\376\376\212\377\377\377\1\376\376\376\211\377\377\377" \ - "\1\376\376\376\221\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\205\377\377\377\1\376\376\376\312\377\377\377\1\376\376\376\214" \ - "\377\377\377\1\376\376\376\202\377\377\377\6\377\376\375\377\377\377" \ - "\376\377\377\377\377\377\377\376\377\376\377\377\270\377\377\377\7\376" \ - "\377\377\377\376\377\376\377\377\377\377\375\377\377\377\377\375\377" \ - "\377\376\377\273\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\302\377\377\377\1\376\376\376\305\377\377\377\1\376\376\376\241" \ - "\377\377\377\1\376\376\376\214\377\377\377\1\376\376\376\235\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\252\377\377\377\1\376\376\376" \ - "\212\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \ - "\1\376\376\376\251\377\377\377\202\376\376\376\215\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \ - "\224\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\232\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376" \ - "\376\243\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\202" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\2" \ - "\376\376\376\377\377\377\202\377\377\375\3\377\377\377\376\377\377\377" \ - "\377\375\202\377\376\377\1\377\377\377\270\377\376\377\14\377\377\377" \ - "\377\376\377\377\376\374\377\377\375\375\376\377\376\377\377\377\377" \ - "\375\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\203" \ - "\377\377\377\1\376\376\376\266\377\377\377\1\376\376\376\203\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\214\377\377\377\202" \ - "\376\376\376\207\377\377\377\1\376\376\376\272\377\377\377\1\376\376" \ - "\376\252\377\377\377\202\376\376\376\247\377\377\377\5\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376" \ - "\376\203\377\377\377\1\376\376\376\311\377\377\377\1\376\376\376\221" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\302\377\377" \ - "\377\1\376\376\376\207\377\377\377\1\346\346\346\204\316\316\316\10\317" \ - "\317\317\315\315\315\316\316\316\363\363\365\377\377\377\376\376\376" \ - "\377\377\377\376\376\376\204\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\234\377\377\377\1\376\376\376\262\377\377\377\1\376\376" \ - "\376\213\377\377\377\1\377\377\375\202\376\377\377\1\376\376\377\202" \ - "\377\377\377\2\377\376\377\377\377\375\270\276\317\331\1\377\376\377" \ - "\205\377\377\377\3\376\377\375\377\377\375\376\376\376\257\377\377\377" \ - "\1\376\376\376\210\377\377\377\202\376\376\376\210\377\377\377\1\376" \ - "\376\376\220\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \ - "\243\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\207\377\377\377\1\376\376\376\331\377\377\377\12\376" \ - "\376\376\377\377\377\235\235\235kkmllnkkmllnjjlkkm\346\346\346\202\377" \ - "\377\377\1\376\376\376\237\377\377\377\2\346\346\346\317\317\317\204" \ - "\316\316\316\2\317\317\317\346\346\346\234\377\377\377\1\376\376\376" \ - "\203\377\377\377\1\376\376\376\202\377\377\377\1\332\332\332\203\316" \ - "\316\316\1\317\317\317\202\316\316\316\213\377\377\377\5\346\346\346" \ - "\317\317\317\315\315\315\316\316\316\315\315\315\252\316\316\316\1\363" \ - "\363\363\205\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376" \ - "\211\377\377\377\4\346\346\346\250\250\250\204\204\206``b\202::<\1;;" \ - "=\202::<\3;;=99;;;=\203::<\4lln\220\220\222\266\266\266\363\363\363\202" \ - "\376\376\376\240\377\377\377\1\346\346\346\202\316\316\316\10\317\317" \ - "\317\315\315\315\317\317\317\316\316\316\332\332\332\376\376\376\377" \ - "\377\377\376\376\376\203\377\377\377\1\376\376\376\241\377\377\377\6" \ - "\376\376\376\377\377\377\346\346\346\316\316\320\317\317\321\316\316" \ - "\320\203\316\316\316\2\347\347\347\376\376\376\205\377\377\377\1\376" \ - "\376\376\202\377\377\375\5\376\377\377\377\377\375\377\377\377\317\334" \ - "\344\37V\177\270\0>i\12\37U{\317\334\344\377\376\374\377\377\375\376" \ - "\377\377\377\376\374\376\377\377\376\376\376\377\377\377\363\363\363" \ - "\202\316\316\316\1\315\315\315\202\317\317\317\251\316\316\316\1\332" \ - "\332\332\202\377\377\377\1\376\376\376\203\377\377\377\202\376\376\376" \ - "\204\377\377\377\3\346\346\346\316\316\316\316\316\320\204\316\316\316" \ - "\2\346\346\346\376\376\376\212\377\377\377\1\347\347\347\206\316\316" \ - "\316\2\317\317\317\363\363\363\250\377\377\377\2\376\376\376\331\331" \ - "\331\206\316\316\316\1\332\332\332\202\377\377\377\1\376\376\376\204" \ - "\377\377\377\1\376\376\376\203\377\377\377\3\332\332\332\316\316\316" \ - "\316\316\320\250\316\316\316\1\363\363\363\205\377\377\377\1\376\376" \ - "\376\242\377\377\377\4\346\346\346::<;;=99;\204::<\1\204\204\206\237" \ - "\377\377\377\1\376\376\376\202\377\377\377\3\235\235\235::<;;=\202::" \ - "<\3;;=::<\235\235\235\202\377\377\377\1\376\376\376\232\377\377\377\1" \ - "\376\376\376\205\377\377\377\4kkm;;;99;;;=\202::<\1;;;\213\377\377\377" \ - "\4\234\234\234:::::<;;=\202::<\1;;;\250::<\1\316\316\316\202\377\377" \ - "\377\1\376\376\376\203\377\377\377\1\376\376\376\212\377\377\377\203" \ - "\376\376\376\203\377\377\377\3\346\346\346\250\250\250```\204::<\202" \ - ";;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\5;;=::<```\265\265\265\362\362" \ - "\362\203\377\377\377\1\376\376\376\233\377\377\377\1\234\234\236\204" \ - "::<\5""99;;;=::<\333\333\335\376\376\376\203\377\377\377\1\376\376\376" \ - "\241\377\377\377\4\376\376\376\377\377\377\363\363\363FFH\202::<\1;;" \ - "=\203::<\1\234\234\234\210\377\377\377\6\376\377\377\377\377\375\375" \ - "\376\377\356\363\366\40Vz\0\77h\270\0=i\20\0>i\22Ip\356\363\367\376\377" \ - "\377\377\377\375\377\377\377\376\376\377\377\376\377\377\377\377\315" \ - "\315\315:::::<;;=::<99;;;;\250::<\1kkm\205\377\377\377\1\376\376\376" \ - "\203\377\377\377\4\376\376\376\377\377\377\376\376\376\234\234\234\203" \ - "::<\6;;=::<:::\234\234\234\377\377\377\376\376\376\211\377\377\377\3" \ - "\332\332\332:::;;=\202::<\202;;=\2::<\204\204\206\250\377\377\377\2\364" \ - "\364\364FFF\204::<\202:::\1\234\234\234\206\377\377\377\1\376\376\376" \ - "\204\377\377\377\2kkk;;=\251::<\1\316\316\316\202\377\377\377\1\376\376" \ - "\376\203\377\377\377\1\376\376\376\240\377\377\377\6\376\376\376\234" \ - "\234\236::<;;=::<;;=\203::<\2FFH\362\362\362\235\377\377\377\1\376\376" \ - "\376\203\377\377\377\3\234\234\236::<;;=\202::<\3;;=::<\234\234\236\203" \ - "\377\377\377\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377" \ - "\377\7kkm::<;;=::<;;=::<;;=\213\377\377\377\4\235\235\235::<;;=99;\202" \ - ";;=\251::<\1\315\315\315\203\377\377\377\202\376\376\376\213\377\377" \ - "\377\1\376\376\376\202\377\377\377\6\376\376\376\377\377\377\315\315" \ - "\315\205\205\205::<;;=\213::<\4;;=::<;;=::<\203;;=\204::<\4FFF\204\204" \ - "\204\346\346\346\376\376\376\234\377\377\377\3\234\234\236::<;;=\202" \ - "::<\4;;=99;::<``b\244\377\377\377\1\376\376\376\203\377\377\377\1xxz" \ - "\202::<\10;;=99;;;=::<;;=\233\233\235\377\377\377\376\376\376\202\377" \ - "\377\377\1\376\376\376\203\377\377\377\4\375\377\376\377\376\373\377" \ - "\377\375\235\267\310\202\0>i\271\0=i\4\0\77j\237\266\306\377\376\377" \ - "\377\375\374\202\376\377\377\4\377\377\377\376\376\376\316\316\31699" \ - ";\202;;=\2::<;;=\251::<\1kkm\203\377\377\377\1\376\376\376\210\377\377" \ - "\377\4\235\235\235::<99;;;=\203::<\1\235\235\235\214\377\377\377\2ll" \ - "n99;\202;;=\1::<\203;;=\2\362\362\364\376\376\376\245\377\377\377\2\376" \ - "\376\376\250\250\250\204::<\4;;=::<:::\346\346\346\203\377\377\377\1" \ - "\376\376\376\205\377\377\377\3\376\376\376\377\377\377jjl\252::<\1\315" \ - "\315\315\203\377\377\377\202\376\376\376\242\377\377\377\3\362\362\364" \ - "GGI::<\202;;=\2""99;;;=\202::<\2""99;\235\235\235\237\377\377\377\3\376" \ - "\376\376\377\377\377\235\235\237\202::<\202;;=\202::<\3\235\235\237\377" \ - "\377\377\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\4" \ - "\376\376\376\377\377\377kkm;;=\202::<\5""99;;;=99;\377\377\377\376\376" \ - "\376\211\377\377\377\1\233\233\233\202::<\3;;=::<99;\251::<\1\317\317" \ - "\317\205\377\377\377\1\376\376\376\214\377\377\377\3\376\376\376\347" \ - "\347\347xxz\203::<\1;;=\202::<\1;;=\204::<\1;;=\203::<\1;;=\205::<\1" \ - ";;=\203::<\1;;=\203::<\2\234\234\236\362\362\362\233\377\377\377\2\233" \ - "\233\235;;=\204::<\1;;=\202::<\1\234\234\236\245\377\377\377\4\376\376" \ - "\376\302\302\304::<;;=\206::<\1\235\235\237\202\377\377\377\1\376\376" \ - "\376\203\377\377\377\7\375\376\377\377\377\377\377\377\375\376\377\377" \ - "\377\377\377\177\235\265\0\77k\271\0\77j\7\0\77k\0\77j~\236\265\377\376" \ - "\377\376\377\377\375\377\374\377\377\375\202\377\377\377\5\315\315\315" \ - ";;=::<99;;;=\252::<\3kkm\377\377\377\376\376\376\203\377\377\377\1\376" \ - "\376\376\203\377\377\377\1\376\376\376\202\377\377\377\3\233\233\233" \ - "::<;;=\202::<\3;;=::<\234\234\234\202\377\377\377\1\376\376\376\211\377" \ - "\377\377\4\264\264\264;;=::<;;=\204::<\3\247\247\251\377\377\377\376" \ - "\376\376\245\377\377\377\1SSS\203::<\1;;=\202::<\1\204\204\204\213\377" \ - "\377\377\4\376\376\376lln::<:9>\250::<\1\317\317\317\205\377\377\377" \ - "\1\376\376\376\241\377\377\377\1\265\265\267\204::<\1;;=\204::<\1FFF" \ - "\241\377\377\377\2\234\234\236;;=\204::<\2;;=\234\234\236\234\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\204\377\377\377\1kkm\203:" \ - ":<\4;;=::<;;=\376\376\376\212\377\377\377\1\234\234\234\204::<\1;;=\251" \ - "::<\1\316\316\316\203\377\377\377\202\376\376\376\215\377\377\377\4\234" \ - "\234\234;;=::<;;=\202::<\1""99;\204::<\1;;=\203::<\1;;=\211::<\1""99" \ - ";\207::<\2FFF\301\301\301\232\377\377\377\2\234\234\23699;\210::<\1\333" \ - "\333\333\241\377\377\377\6\376\376\376\377\377\377\376\376\376\363\363" \ - "\363FFH;;=\205::<\3;;=::<\234\234\236\206\377\377\377\7\377\376\377\377" \ - "\377\377\377\377\375\375\376\377\377\376\377\201\235\263\0>g\272\0>i" \ - "\13\0>e\177\236\263\377\375\374\377\377\377\377\377\375\376\376\376\377" \ - "\376\377\377\377\377\316\316\316::<;;=\202::<\2""99;;;=\250::<\1kkm\204" \ - "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\202\377\377\377\2\376\376\376\234\234\234\206::<\1\234\234\234\215" \ - "\377\377\377\2RRT;;=\205::<\1SSU\246\377\377\377\2\316\316\316999\206" \ - "::<\1\316\316\316\202\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\207\377\377\377\3jjl::<:9>\250::<\1\316\316\316\203\377\377\377\202" \ - "\376\376\376\242\377\377\377\2SSU99;\202;;=\204::<\4;;=99;::<\264\264" \ - "\266\240\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377" \ - "\1kkm\206::<\213\377\377\377\2\234\234\236;;=\216::<\4""99;;;=::<;;=" \ - "\206::<\3;;=::<;;=\222::<\1\316\316\316\205\377\377\377\1\376\376\376" \ - "\207\377\377\377\1\376\376\376\202\377\377\377\2\346\346\350__a\202:" \ - ":<\3;;=::<;;=\204::<\1;;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\2""99" \ - ";;;=\202::<\1;;=\204::<\7;;=::<;;=::<;;=\204\204\206\363\363\363\203" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\222\377\377\377\4" \ - "\234\234\236::<;;=99;\204::<\3;;=::<__a\244\377\377\377\1xxx\205::<\1" \ - ";;=\203::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\211\0" \ - "=i\2\0>j\0=i\202\1>j\2\0\77k\0>j\232\0>i\2\0>j\0\77k\202\1>j\2\0=i\0" \ - ">j\211\0=i\3\0>i\0=i\177\236\263\206\377\377\377\6\316\316\316:::::<" \ - ";;=::<;;=\217::<\1;;=\203::<\1;;=\202::<\1;;=\222::<\1kkk\205\377\377" \ - "\377\1\376\376\376\206\377\377\377\1\234\234\236\206::<\1\234\234\236" \ - "\215\377\377\377\3\234\234\234;;=::<\202;;=\203::<\3\316\316\320\377" \ - "\377\377\376\376\376\240\377\377\377\1\376\376\376\202\377\377\377\3" \ - "xxz::<;;=\202::<\3;;=::<__a\215\377\377\377\1kkm\204::<\1;;=\202::<\1" \ - ";;=\242::<\1\316\316\316\205\377\377\377\1\376\376\376\240\377\377\377" \ - "\1\265\265\265\202::<\5;;=::<;;=::<;;=\204::<\2TTV\376\376\376\237\377" \ - "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \ - "::<\213\377\377\377\3\234\234\23499;;;=\214::<\1""99;\207::<\1;;=\227" \ - "::<\1\316\316\316\204\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\203\377\377\377\1\376\376\376\204\377\377\377\2\333\333\335FFH\214:" \ - ":<\16``b\221\221\223\251\251\251\315\315\315\316\316\316\363\363\363" \ - "\377\377\377\332\332\332\316\316\316\301\301\301\235\235\237jjlFFH;;" \ - "=\207::<\1;;=\202::<\3;;=__a\363\363\363\227\377\377\377\4\234\234\236" \ - "99;::<;;=\205::<\3;;=::<\233\233\233\240\377\377\377\12\376\376\376\377" \ - "\377\377\301\301\301;;=::<;;=::<;;=::<99;\203::<\1\234\234\236\213\377" \ - "\377\377\3\177\236\263\0=i\0>i\211\0=i\7\1>j\0=i\1>j\0=i\0>g\3>h\2=g" \ - "\230\0=i\7\2=g\3>h\0>g\0=i\1>j\0=i\1>j\211\0=i\3\0>i\0=i\177\236\263" \ - "\206\377\377\377\2\317\317\317:::\221::<\202;;=\202::<\3;;=::<99;\203" \ - "::<\2;;=99;\220::<\1kkk\214\377\377\377\1\234\234\236\206::<\1\234\234" \ - "\236\213\377\377\377\3\376\376\376\377\377\377\363\363\363\204::<\4;" \ - ";=::<;;=xxz\202\377\377\377\1\376\376\376\236\377\377\377\1\376\376\376" \ - "\202\377\377\377\3\346\346\346::<;;=\202::<\4;;=99;;;=\266\266\270\215" \ - "\377\377\377\1kkm\203::<\1;;=\202::<\1;;=\243::<\1\316\316\316\204\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1\376" \ - "\376\376\204\377\377\377\1kkm\202;;=\202::<\202;;=\2::<;;=\204::<\3\317" \ - "\317\317\377\377\377\376\376\376\235\377\377\377\1\234\234\234\206::" \ - "<\1\234\234\234\243\377\377\377\1kkm\206::<\212\377\377\377\1\376\376" \ - "\376\224\377\377\377\1lln\203::<\1;;=\202::<\1\234\234\236\234\377\377" \ - "\377\1\376\376\376\204\377\377\377\4\376\376\376\265\265\267::<;;=\202" \ - "::<\1;;=\202::<\1;;=\203::<\5__a\266\266\270\363\363\363\377\377\377" \ - "\376\376\376\204\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\202\377\377\377\4\301\301\303\204\204\206;;=::<\203;;=\202::<\2" \ - ";;=::<\202;;=\3GGI\332\332\334\376\376\376\203\377\377\377\1\376\376" \ - "\376\221\377\377\377\2\235\235\237::<\202;;=\202::<\1;;=\202::<\4""9" \ - "9;::<;;=\331\331\331\240\377\377\377\2\363\363\363GGI\203::<\2;;=::<" \ - "\203;;=\202::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\210" \ - "\0=i\10\0\77k\0=i\1>j\0>i\0\77j\0=i\0>i\0>j\230\0>i\10\0>j\0>i\0=i\0" \ - "\77j\0>i\1>j\0=i\0\77k\210\0=i\3\0>i\0=i\177\236\263\206\377\377\377" \ - "\1\376\376\376\217\377\377\377\1\376\376\376\203\377\377\377\1\315\315" \ - "\317\204::<\3;;=::<kkm\240\377\377\377\1\234\234\236\206::<\1\234\234" \ - "\236\214\377\377\377\3\376\376\376\377\377\377\204\204\206\202::<\1;" \ - ";=\202::<\202;;=\1\345\345\345\242\377\377\377\2\376\376\376\234\234" \ - "\234\206::<\2GGI\363\363\363\215\377\377\377\1kkm\203::<\4""99;::<;;" \ - "=\316\316\320\311\377\377\377\2\317\317\32199;\203::<\5;;=::<FFH;;=:" \ - ":<\202;;=\202::<\1kkm\237\377\377\377\1\234\234\234\206::<\1\234\234" \ - "\234\243\377\377\377\1kkm\206::<\213\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\216\377\377\377\1\376\376\376\202\377\377\377\5lln:" \ - ":<;;=::<;;=\202::<\2\234\234\234\376\376\376\227\377\377\377\1\376\376" \ - "\376\210\377\377\377\1\264\264\266\202;;=\4::<;;=::<99;\204::<\3jjl\317" \ - "\317\321\376\376\376\202\377\377\377\1\375\375\375\203\377\377\377\3" \ - "\376\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376\203" \ - "\377\377\377\3\363\363\365\234\234\236FFH\202::<\1;;=\202::<\1;;=\203" \ - "::<\2FFH\332\332\334\225\377\377\377\1\233\233\235\202;;=\211::<\1__" \ - "a\240\377\377\377\2xxz;;=\202::<\3;;=::<;;=\205::<\1\234\234\236\213" \ - "\377\377\377\3\177\236\263\0=i\0>i\211\0=i\202\0>i\5\0<h\1>j\0=i\1>j" \ - "\0>i\230\0=i\5\0>i\1>j\0=i\1>j\0<h\202\0>i\211\0=i\3\0>i\0=i\177\236" \ - "\263\212\377\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377" \ - "\377\1\376\376\376\202\377\377\377\10\316\316\320::<;;=::<;;=99;::<j" \ - "jl\225\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\207\377" \ - "\377\377\1\234\234\236\206::<\1\234\234\236\216\377\377\377\3\332\332" \ - "\332;;=99;\202::<\4;;=::<99;\234\234\236\237\377\377\377\1\376\376\376" \ - "\203\377\377\377\1SSU\202::<\1;;=\203::<\1\221\221\221\216\377\377\377" \ - "\1kkm\206::<\1\316\316\316\250\377\377\377\1\376\376\376\235\377\377" \ - "\377\1\376\376\376\202\377\377\377\5xxz::<;;=::<;;=\202::<\3\316\316" \ - "\320RRT;;=\203::<\4;;=::<\332\332\332\376\376\376\235\377\377\377\1\234" \ - "\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\214\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\213\377\377\377\1\376\376" \ - "\376\204\377\377\377\4kkm;;=::<;;=\203::<\1\235\235\235\202\377\377\377" \ - "\1\376\376\376\221\377\377\377\1\376\376\376\213\377\377\377\4\301\301" \ - "\301;;=::<;;=\203::<\202;;=\3::<RRT\316\316\316\203\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\204\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\203\377\377\377\1\376\376\376\204\377\377\377" \ - "\4\346\346\346xxz;;=99;\207::<\4GGI\362\362\362\377\377\377\376\376\376" \ - "\222\377\377\377\1\234\234\236\206::<\203;;=\202::<\2;;=\233\233\235" \ - "\236\377\377\377\10\301\301\301::<;;=:9>::<99;::<99;\202;;=\203::<\1" \ - "\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\210\0=i\7\2=g\0>i" \ - "\0>j\0\77j\0=i\0\77j\0=h\232\1>j\7\0=h\0\77j\0=i\0\77j\0>j\0>i\2=g\210" \ - "\0=i\3\0>i\0=i\177\236\263\213\377\377\377\1\376\376\376\216\377\377" \ - "\377\1\317\317\321\202::<\6;;=::<;;=::<lln\376\376\376\225\377\377\377" \ - "\1\376\376\376\203\377\377\377\1\376\376\376\205\377\377\377\1\234\234" \ - "\236\206::<\1\234\234\236\213\377\377\377\1\376\376\376\203\377\377\377" \ - "\2kkm;;=\204::<\2;;=GGI\236\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\265\265\267\202::<\6;;=::<;;=::<;;=\345\345\345\216\377\377\377\1" \ - "kkm\202::<\5;;=99;;;=99;\317\317\317\244\377\377\377\1\376\376\376\241" \ - "\377\377\377\3\376\376\376\377\377\377\347\347\351\206::<\3``b\377\377" \ - "\377\234\234\236\202::<\1;;=\202::<\4;;=\204\204\206\377\377\377\376" \ - "\376\376\234\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377" \ - "\377\1kkm\206::<\215\377\377\377\1\375\375\375\202\377\377\377\1\376" \ - "\376\376\213\377\377\377\5\376\376\376\377\377\377\376\376\376lln;;=" \ - "\203::<\3;;=::<\234\234\234\234\377\377\377\1\376\376\376\202\377\377" \ - "\377\4\331\331\331FFH::<;;=\202::<\11;;=::<99;;;=\203\203\203\363\363" \ - "\363\376\376\376\377\377\377\376\376\376\222\377\377\377\7\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\300\300\300GGI::<\202;;=\205::<" \ - "\4``b\362\362\362\377\377\377\376\376\376\221\377\377\377\1\234\234\236" \ - "\204::<\202;;=\203::<\5;;=99;::<;;=\332\332\332\234\377\377\377\4\363" \ - "\363\363GGI;;=::<\202;;=\203::<\1;;=\202::<\3;;=::<\234\234\236\213\377" \ - "\377\377\3\177\236\263\0=i\0>i\210\0=i\10\0\77j\0>j\0\77k\0=i\3>h\2=" \ - "g\1>j\0\77k\230\0=i\10\0\77k\1>j\2=g\3>h\0=i\0\77k\0>j\0\77j\210\0=i" \ - "\3\0>i\0=i\177\236\263\232\377\377\377\12\316\316\316;;=::<;;=::<;;=" \ - "::<kkm\377\377\377\376\376\376\222\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\210\377\377\377\1\234\234\236\206::<\1\234\234" \ - "\236\214\377\377\377\1\376\376\376\202\377\377\377\2\266\266\26699;\202" \ - "::<\202;;=\202::<\3\266\266\270\377\377\377\376\376\376\234\377\377\377" \ - "\203\376\376\376\1lln\202;;=\204::<\3xxx\377\377\377\376\376\376\215" \ - "\377\377\377\1kkm\205::<\2;;=\316\316\316\305\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\203\203\205\206::<\4\265\265\267\377\377\377\363\363" \ - "\363GGG\203::<\1;;=\202::<\1\346\346\346\235\377\377\377\1\234\234\234" \ - "\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\216\377\377\377\1\376" \ - "\376\376\220\377\377\377\1jjl\206::<\1\234\234\234\202\377\377\377\1" \ - "\376\376\376\232\377\377\377\3\376\376\376\364\364\364SSU\202::<\7;;" \ - "=::<;;=99;::<;;=\265\265\265\205\377\377\377\203\376\376\376\214\377" \ - "\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376" \ - "\203\377\377\377\7\332\332\332__a::<;;=::<;;=::<\202;;=\3::<\205\205" \ - "\207\376\376\377\222\377\377\377\3\234\234\236::<;;=\202::<\2;;=99;\202" \ - ";;=\1""99;\202::<\3;;=::<__a\234\377\377\377\1xxz\202;;=\205::<\1;;=" \ - "\202::<\1;;=\202::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0" \ - ">i\210\0=i\10\0>i\0=i\0>i\0\77k\0>j\2=g\1\77h\0>l\230\0>i\10\0>l\1\77" \ - "h\2=g\0>j\0\77k\0>i\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\205\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\221\377\377\377\3\316" \ - "\316\316::<;;=\204::<\1kkm\225\377\377\377\202\376\376\376\211\377\377" \ - "\377\1\234\234\236\206::<\1\234\234\236\217\377\377\377\3\376\376\376" \ - "TTV99;\202::<\4""99;;;=::<kkm\240\377\377\377\1\346\346\346\202::<\1" \ - "99;\204::<\1\316\316\316\217\377\377\377\1kkm\204::<\3;;=99;\316\316" \ - "\316\305\377\377\377\7\376\376\376\377\377\377\363\363\363::<;;=::<;" \ - ";=\202::<\1SSU\203\377\377\377\2\204\204\204;;=\203::<\4;;=99;\222\222" \ - "\222\376\376\376\234\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \ - "\377\377\377\1kkm\206::<\214\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\220\377\377\377\1kkm\206::<\1\234\234\236\236\377\377\377\1" \ - "\204\204\206\203::<\1;;=\202::<\3;;=::<\265\265\267\221\377\377\377\1" \ - "\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \ - "\376\204\377\377\377\11\376\376\376\363\363\365__a::<;;=::<;;=::<;;=" \ - "\202::<\1\301\301\303\222\377\377\377\2\234\234\236;;=\202::<\10;;=:" \ - ":<;;=FFH::<;;=::<;;=\203::<\1\235\235\237\232\377\377\377\2\301\301\303" \ - ";;=\205::<\2;;=RRT\204::<\3;;=::<\234\234\236\213\377\377\377\3\177\236" \ - "\263\0=i\0>i\210\0=i\7\0>j\2=g\0>g\0>j\40V|o\224\256\177\236\262\232" \ - "\177\236\263\7\177\236\262o\224\256\40V|\0>j\0>g\2=g\0>j\210\0=i\3\0" \ - ">i\0=i\177\236\263\232\377\377\377\3\316\316\316::<;;=\203::<\2;;=kk" \ - "m\232\377\377\377\1\376\376\376\205\377\377\377\1\234\234\236\206::<" \ - "\1\234\234\236\220\377\377\377\2\233\233\235;;=\202::<\1<<>\203::<\1" \ - "\346\346\346\237\377\377\377\1\204\204\204\206::<\2SSU\376\376\376\217" \ - "\377\377\377\1kkm\203::<\4;;=::<;;=\316\316\320\304\377\377\377\1\376" \ - "\376\376\202\377\377\377\2\234\234\236;;=\202::<\4;;=::<;;=\234\234\234" \ - "\203\377\377\377\1\346\346\346\205::<\3;;=FFH\363\363\365\203\377\377" \ - "\377\1\376\376\376\230\377\377\377\1\234\234\234\206::<\1\234\234\234" \ - "\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236" \ - "\235\377\377\377\2\316\316\316;;=\202::<\6;;=::<;;=::<:::\265\265\265" \ - "\237\377\377\377\7\376\376\376\363\363\363___::<;;=::<;;=\203::<\2GG" \ - "I\363\363\363\204\377\377\377\1\376\376\376\214\377\377\377\1\234\234" \ - "\234\203::<\202;;=\5::<\266\266\266GGI99;;;=\202::<\1;;=\202::<\1\332" \ - "\332\332\206\377\377\377\1\376\376\376\211\377\377\377\1\376\376\376" \ - "\207\377\377\377\2\363\363\363FFH\206::<\3FFH\301\301\30399;\202::<\202" \ - ";;=\2::<\234\234\236\206\377\377\377\7\377\377\375\377\377\377\377\377" \ - "\375\376\377\377\376\376\376\200\237\263\0\77i\211\0>i\7\0>g\1>j\0>g" \ - "_\210\236\377\377\377\376\377\377\377\376\377\231\377\377\377\10\377" \ - "\377\375\376\377\375\377\377\377\377\377\375`\210\242\3>h\0\77j\1\77" \ - "h\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<" \ - "\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377" \ - "\377\1\363\363\363\204::<\202;;=\2""99;\205\205\207\207\377\377\377\1" \ - "\376\376\376\224\377\377\377\4\376\376\376\377\377\377\363\363\363FF" \ - "H\202::<\5;;=99;;;=::<\265\265\265\220\377\377\377\1kkm\206::<\1\316" \ - "\316\316\305\377\377\377\5\376\376\376\364\364\364FFH::<;;=\202::<\4" \ - ";;=FFH\363\363\363\377\377\377\202\376\376\376\6\377\377\377xxz::<;;" \ - "=::<;;=\202::<\1\234\234\236\206\377\377\377\202\376\376\376\224\377" \ - "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \ - "::<\237\377\377\377\1kkm\206::<\1\234\234\236\225\377\377\377\1\376\376" \ - "\376\207\377\377\377\2SSS;;=\202::<\1;;=\203::<\1\234\234\234\202\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1\376" \ - "\376\376\202\377\377\377\4\332\332\332FFH::<;;=\202::<\1;;=\202::<\1" \ - "\222\222\224\205\377\377\377\1\376\376\376\213\377\377\377\3\234\234" \ - "\234::<;;=\202::<\5""99;;;=\315\315\315\250\250\252;;=\206::<\2``b\376" \ - "\376\376\202\377\377\377\1\376\376\376\216\377\377\377\1\376\376\376" \ - "\205\377\377\377\2xxx;;=\202::<\1;;=\203::<\2\300\300\300\317\317\321" \ - "\203::<\1;;=\202::<\1\234\234\236\207\377\377\377\1\377\376\377\202\377" \ - "\377\377\4\377\376\377\201\235\263\0=j\3>j\210\0=i\5\1>j\0=j\37V\177" \ - "\377\376\377\376\376\376\202\377\377\377\1\376\377\377\230\377\377\377" \ - "\10\376\377\377\377\377\375\374\377\377\377\376\374\376\377\377#W\177" \ - "\0>g\0\77i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \ - "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377" \ - "\377\377\2\376\376\376\204\204\206\205::<\3;;=FFH\362\362\362\204\377" \ - "\377\377\202\376\376\376\2\377\377\377\376\376\376\224\377\377\377\3" \ - "\376\376\376\265\265\265;;=\203::<\4;;=99;FFH\363\363\363\220\377\377" \ - "\377\1kkm\206::<\1\316\316\316\306\377\377\377\4\265\265\26599;;;=::" \ - "<\202;;=\2""99;\222\222\224\204\377\377\377\12\376\376\376\316\316\320" \ - ";;=::<;;=99;;;=99;SSU\376\376\376\202\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\226\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \ - "\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\234" \ - "\377\377\377\11\234\234\234::<;;=99;;;=99;::<;;=kkm\241\377\377\377\1" \ - "\376\376\376\202\377\377\377\1\301\301\303\203::<\6;;=99;::<;;=::<\346" \ - "\346\350\203\377\377\377\1\376\376\376\214\377\377\377\1\234\234\234" \ - "\203::<\202;;=\10""99;\316\316\316\377\377\377kkm::<;;=::<;;=\203::<" \ - "\1\235\235\237\203\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \ - "\376\205\377\377\377\3\302\302\304::<;;=\202::<\7""99;;;=99;xxz\377\377" \ - "\377\315\315\315;;=\203::<\3:9>::<\234\234\236\206\377\377\377\3\376" \ - "\377\377\377\377\375\377\377\377\202\377\377\375\3|\237\265\0\77k\0>" \ - "g\210\0=i\10\0@h\3<i~\236\263\376\377\377\377\377\377\377\376\377\377" \ - "\376\374\377\376\377\230\377\377\377\10\377\375\377\377\377\375\377\376" \ - "\374\377\377\377\376\376\374\220\251\275\2=i\0>j\210\0=i\3\0>i\0=i\177" \ - "\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1" \ - "\234\234\236\206::<\1\234\234\236\215\377\377\377\1\376\376\376\203\377" \ - "\377\377\2\332\332\334;;=\206::<\2\266\266\266\376\376\376\202\377\377" \ - "\377\1\376\376\376\202\377\377\377\1\376\376\376\222\377\377\377\1\376" \ - "\376\376\203\377\377\377\1SSS\203::<\4""99;::<;;=\221\221\223\221\377" \ - "\377\377\1kkm\206::<\1\316\316\316\306\377\377\377\4RRT;;=::<;;=\202" \ - "::<\2;;=\345\345\345\202\377\377\377\1\376\376\376\203\377\377\377\2" \ - "__a;;=\202::<\1;;=\202::<\1\264\264\264\206\377\377\377\1\376\376\376" \ - "\224\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1" \ - "kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\226\377\377\377" \ - "\1\376\376\376\204\377\377\377\2\363\363\363FFH\203::<\1;;=\202::<\2" \ - "FFH\346\346\346\204\377\377\377\1\376\376\376\233\377\377\377\1\376\376" \ - "\376\203\377\377\377\3\376\376\376xxz99;\202::<\1""99;\202::<\4;;=\204" \ - "\204\206\377\377\377\376\376\376\202\377\377\377\1\376\376\376\213\377" \ - "\377\377\1\234\234\234\202::<\10;;=99;;;=::<\317\317\317\376\376\376" \ - "\363\363\363GGI\203::<\1;;=\203::<\3\331\331\331\377\377\377\376\376" \ - "\376\202\377\377\377\1\376\376\376\217\377\377\377\5\363\363\363GGI;" \ - ";=::<;;=\202::<\7""99;FFH\363\363\363\377\377\377\316\316\316::<;;=\202" \ - "::<\3:9>::<\234\234\236\207\377\377\377\7\376\377\377\376\376\376\377" \ - "\377\377\377\377\375\377\377\377\377\375\374\376\377\377\210\377\377" \ - "\377\10\376\376\374\376\377\377\354\364\366\377\377\375\376\377\377\377" \ - "\376\374\377\377\375\376\377\377\230\377\377\377\10\377\377\375\376\377" \ - "\377\377\376\375\375\376\377\376\377\377\301\317\330\0>g\0>j\210\0=i" \ - "\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \ - "\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377\377\5\376" \ - "\376\376\377\377\377kkm::<;;=\202::<\3""99;::<^^`\204\377\377\377\1\376" \ - "\376\376\227\377\377\377\1\316\316\316\202::<\203;;=\202::<\1\347\347" \ - "\347\221\377\377\377\1kkm\206::<\1\316\316\316\303\377\377\377\12\376" \ - "\376\376\377\377\377\301\301\301;;=::<;;=::<99;::<\204\204\206\204\377" \ - "\377\377\4\376\376\376\377\377\377\376\376\376\266\266\266\202::<\5;" \ - ";=::<;;=::<``b\203\377\377\377\1\376\376\376\227\377\377\377\1\234\234" \ - "\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377" \ - "\1kkm\206::<\1\234\234\236\233\377\377\377\1\265\265\267\204::<\4""9" \ - "9;;;=::<\234\234\234\203\377\377\377\3\376\376\376\377\377\377\376\376" \ - "\376\231\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\376\376\376\202\377\377\377\5\363\363\363GGI99;::<;;=\202::<\3;;=::" \ - "<\346\346\346\204\377\377\377\1\376\376\376\212\377\377\377\3\234\234" \ - "\234::<99;\202;;=\202::<\1\315\315\315\202\377\377\377\3\301\301\303" \ - ";;=99;\202;;=\5::<;;=::<``b\376\376\376\202\377\377\377\1\376\376\376" \ - "\215\377\377\377\6\376\376\376\377\377\377\376\376\376xxz::<;;=\203:" \ - ":<\202;;=\1\300\300\302\202\377\377\377\3\316\316\316;;=99;\202::<\3" \ - ";:\77::<\234\234\236\206\377\377\377\2\377\377\375\376\377\375\202\376" \ - "\377\377\4\377\377\375\377\377\377\377\376\377\377\377\375\211\377\377" \ - "\377\1\376\376\374\202\377\377\377\3\377\376\377\377\377\377\375\376" \ - "\377\231\377\377\377\202\376\377\377\5\377\376\377\376\377\377\377\377" \ - "\375\277\320\332\0\77j\211\0=i\3\0>i\0=i\177\236\263\232\377\377\377" \ - "\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234" \ - "\234\236\213\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377" \ - "\377\377\1\265\265\265\202::<\1;;=\204::<\1\315\315\317\204\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\220\377\377\377\1\376\376" \ - "\376\202\377\377\377\3\204\204\204::<;;=\204::<\2yy{\376\376\376\221" \ - "\377\377\377\1kkm\206::<\1\316\316\316\305\377\377\377\4kkm;;=::<;;=" \ - "\203::<\1\316\316\316\210\377\377\377\1TTV\206::<\2\317\317\321\376\376" \ - "\376\231\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377" \ - "\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\233\377\377\377" \ - "\1TTV\202::<\7;;=::<;;=::<RRT\377\377\377\376\376\376\203\377\377\377" \ - "\1\376\376\376\233\377\377\377\1\376\376\376\206\377\377\377\2\233\233" \ - "\235;;=\203::<\4;;=::<;;=\234\234\234\217\377\377\377\4\234\234\234:" \ - ":<;;=99;\203::<\1\316\316\316\203\377\377\377\4xxz;;=::<99;\202::<\3" \ - ";;=::<\234\234\236\216\377\377\377\1\376\376\376\202\377\377\377\16\376" \ - "\376\376\302\302\304::<;;=::<;;=::<;;=::<\221\221\223\377\377\377\376" \ - "\376\376\377\377\377\316\316\316\202::<\202;;=\202::<\1\234\234\236\206" \ - "\377\377\377\2\377\376\377\377\377\377\202\377\376\377\4\376\376\376" \ - "\353\366\374\327\355\370\323\356\371\210\326\356\372\7\325\354\372\327" \ - "\355\372\365\372\376\376\376\376\377\377\377\376\377\377\377\377\373" \ - "\231\377\377\377\2\377\376\377\376\377\375\202\377\377\377\4\374\377" \ - "\377\300\316\327\0=i\1\77h\210\0=i\3\0>i\0=i\177\236\263\232\377\377" \ - "\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1" \ - "\234\234\236\221\377\377\377\4\376\376\376\377\377\377SSU;;=\202::<\4" \ - ";;=99;;;=\204\204\206\203\377\377\377\1\376\376\376\226\377\377\377\11" \ - "\363\363\36399;;;=::<;;=::<;;=::<\316\316\316\202\377\377\377\1\376\376" \ - "\376\217\377\377\377\1kkm\206::<\1\316\316\316\304\377\377\377\1\316" \ - "\316\316\206::<\1kkk\211\377\377\377\2\235\235\23599;\202;;=\6::<;;=" \ - "::<kkm\377\377\377\376\376\376\203\377\377\377\1\376\376\376\224\377" \ - "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \ - "::<\237\377\377\377\1kkm\206::<\1\234\234\236\232\377\377\377\1\332\332" \ - "\332\204::<\1;;=\202::<\4\266\266\270\376\376\376\377\377\377\376\376" \ - "\376\240\377\377\377\1\376\376\376\204\377\377\377\2\363\363\363FFH\202" \ - "::<\5;;=::<;;=::<SSS\217\377\377\377\2\235\235\23599;\205::<\11\316\316" \ - "\316\377\377\377\376\376\376\377\377\377\363\363\363FFH::<;;=99;\203" \ - ";;=\2::<\331\331\333\220\377\377\377\2\363\363\363FFH\202::<\6;;=::<" \ - ";;=::<TTV\364\364\364\203\377\377\377\3\316\316\316<<>99;\202::<\3;;" \ - "=::<\234\234\236\211\377\377\377\4\377\375\376\376\377\377\254\334\363" \ - "Z\266\347\211[\267\350\6\\\266\350X\267\347\326\354\367\377\376\377\376" \ - "\377\377\377\377\375\232\377\377\377\3\377\377\373\375\377\376\376\377" \ - "\377\202\377\377\375\3\276\320\336\0>g\0>i\210\0=i\3\0>i\0=i\177\236" \ - "\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234" \ - "\234\236\206::<\1\234\234\236\223\377\377\377\1\235\235\237\204::<\4" \ - "<<>::<;;=\363\363\363\206\377\377\377\1\376\376\376\222\377\377\377\2" \ - "\234\234\234;;=\205::<\1SSU\204\377\377\377\1\376\376\376\216\377\377" \ - "\377\1kkm\206::<\1\316\316\316\304\377\377\377\1\204\204\204\203::<\1" \ - "99;\202::<\1\265\265\265\211\377\377\377\2\363\363\363FFH\205::<\2;;" \ - "=\346\346\346\231\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \ - "\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\232" \ - "\377\377\377\1\222\222\222\202::<\1;;=\202::<\3;;=FFH\362\362\364\251" \ - "\377\377\377\1\235\235\235\203::<\7;;=::<;;=;;;\331\331\331\377\377\377" \ - "\376\376\376\214\377\377\377\2\234\234\234;;=\205::<\1\316\316\316\202" \ - "\377\377\377\3\376\376\376\377\377\377\301\301\301\205::<\4;;=::<__a" \ - "\376\376\376\216\377\377\377\4\376\376\376yyy::<;;=\205::<\1\316\316" \ - "\320\204\377\377\377\2\316\316\31699;\203::<\3""99;::<\234\234\236\207" \ - "\377\377\377\2\376\377\377\376\376\374\202\377\376\377\3\254\332\362" \ - "Y\267\352[\267\350\210Y\270\350\7[\267\350Y\267\352\326\356\370\376\376" \ - "\377\377\376\377\377\375\377\376\377\377\231\377\377\377\10\377\377\375" \ - "\376\377\377\377\377\377\377\376\377\377\377\375\276\317\331\1>j\0>j" \ - "\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1" \ - "kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377\377" \ - "\1\376\376\376\202\377\377\377\4\363\363\365;;=::<;;=\204::<\1\234\234" \ - "\234\231\377\377\377\1SSS\202::<\1;;=\203::<\1\265\265\267\223\377\377" \ - "\377\1kkm\206::<\1\316\316\316\300\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\346\346\350\203::<\4;;=::<;;=SSU\213\377\377\377\1\204\204" \ - "\204\203::<\1;;=\202::<\1\204\204\206\202\377\377\377\1\376\376\376\226" \ - "\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm" \ - "\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\227\377\377\377\1\376" \ - "\376\376\202\377\377\377\3TTV::<;;=\203::<\2;;=\205\205\205\252\377\377" \ - "\377\1\347\347\347\202::<\202;;=\203::<\1\235\235\237\204\377\377\377" \ - "\1\376\376\376\211\377\377\377\1\234\234\234\206::<\1\316\316\316\205" \ - "\377\377\377\1\205\205\205\202::<\6;;=::<;;=::<;;=\234\234\236\213\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\302\302\302\202;;=\203::<\3" \ - ";;=::<\221\221\221\202\377\377\377\1\376\376\376\202\377\377\377\1\316" \ - "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \ - "\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317" \ - "\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \ - "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224" \ - "\377\377\377\4\204\204\204;;=::<;;=\203::<\1TTT\204\377\377\377\1\376" \ - "\376\376\223\377\377\377\1\300\300\300\203::<\5;;=::<;;=FFF\363\363\363" \ - "\223\377\377\377\1kkm\203::<\4;;=::<;;=\316\316\320\277\377\377\377\14" \ - "\376\376\376\377\377\377\376\376\376\377\377\377\204\204\206::<;;=::" \ - "<99;<<>99;\265\265\267\213\377\377\377\3\346\346\346::<;;=\202::<\1;" \ - ";=\202::<\2\347\347\347\376\376\376\227\377\377\377\1\234\234\234\206" \ - "::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206" \ - "::<\1\234\234\236\226\377\377\377\4\376\376\376\377\377\377\376\376\376" \ - "\346\346\350\202;;=\203::<\3""99;<<>\301\301\301\253\377\377\377\1aa" \ - "c\202::<\1;;=\202::<\2;;=jjl\205\377\377\377\1\376\376\376\210\377\377" \ - "\377\1\234\234\234\206::<\1\316\316\316\202\377\377\377\1\376\376\376" \ - "\202\377\377\377\3\362\362\362SSU;;=\205::<\2;;=\332\332\332\210\377" \ - "\377\377\1\376\376\376\203\377\377\377\2\363\363\363FFH\202::<\202;;" \ - "=\5::<;;=SSS\363\363\363\376\376\376\204\377\377\377\1\316\316\316\206" \ - "::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350" \ - "\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0" \ - ">i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::" \ - "<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377" \ - "\377\1\332\332\332\207::<\1\301\301\301\227\377\377\377\1lll\204::<\3" \ - ";;=::<\221\221\221\202\377\377\377\3\376\376\376\377\377\377\376\376" \ - "\376\217\377\377\377\1kkm\204::<\3;;=99;\316\316\316\241\377\377\377" \ - "\1\376\376\376\234\377\377\377\10\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\363\363\363FFH;;=::<\202;;=\3::<FFH\364\364\364\214\377" \ - "\377\377\1xxz\204::<\3;;=::<\233\233\233\230\377\377\377\1\234\234\234" \ - "\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1k" \ - "km\206::<\1\234\234\236\224\377\377\377\1\376\376\376\204\377\377\377" \ - "\4\266\266\270;;=::<;;=\203::<\1""99;\254\377\377\377\3\234\234\234:" \ - ":<;;=\205::<\204\377\377\377\1\376\376\376\211\377\377\377\1\234\234" \ - "\234\206::<\1\316\316\316\203\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\316\316\320\204::<\4;;=99;::<__a\205\377\377\377\1\376\376\376\206" \ - "\377\377\377\4yy{;;=::<;;=\202::<\3;;=::<\316\316\316\206\377\377\377" \ - "\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \ - "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \ - "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \ - "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \ - "\225\377\377\377\1__a\204;;=\5""99;::<yy{\377\377\377\376\376\376\216" \ - "\377\377\377\1\376\376\376\205\377\377\377\1\346\346\346\202::<\203;" \ - ";=\202::<\1\346\346\346\224\377\377\377\1kkm\205::<\2;;=\316\316\316" \ - "\235\377\377\377\1\376\376\376\244\377\377\377\1\234\234\234\202;;=\204" \ - "::<\2\235\235\235\376\376\376\212\377\377\377\4\376\376\376\377\377\377" \ - "\317\317\317::<\202;;=\202::<\3;;=GGI\362\362\362\202\377\377\377\1\376" \ - "\376\376\224\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377" \ - "\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\231\377\377" \ - "\377\1\220\220\222\205::<\3;;=kkm\376\376\376\253\377\377\377\3\316\316" \ - "\316<<>99;\202::<\4;;=::<;;=\331\331\331\215\377\377\377\1\234\234\234" \ - "\206::<\1\316\316\316\207\377\377\377\1\222\222\224\202::<\3;;=99;<<" \ - ">\202::<\4\234\234\236\376\376\376\377\377\377\376\376\376\203\377\377" \ - "\377\1\376\376\376\203\377\377\377\6\302\302\304;;=99;;;=::<;;=\202:" \ - ":<\1\234\234\234\202\377\377\377\1\376\376\376\204\377\377\377\1\316" \ - "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \ - "\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317" \ - "\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \ - "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\225" \ - "\377\377\377\2\265\265\265;;=\202::<\2""99;;;=\202::<\2\347\347\347\376" \ - "\376\376\215\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377" \ - "\377\377\3\221\221\223;;=99;\204::<\3xxz\377\377\377\376\376\376\202" \ - "\377\377\377\202\376\376\376\217\377\377\377\1kkm\202::<\5;;=99;;;=9" \ - "9;\317\317\317\233\377\377\377\1\376\376\376\237\377\377\377\1\376\376" \ - "\376\204\377\377\377\3\376\376\376\377\377\377GGI\202::<\5;;=::<;;=:" \ - ":<\346\346\346\213\377\377\377\1\376\376\376\202\377\377\377\2``b99;" \ - "\202;;=\203::<\3\247\247\247\377\377\377\376\376\376\225\377\377\377" \ - "\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377" \ - "\377\377\1kkm\206::<\1\234\234\236\231\377\377\377\10kkm::<;;=::<;;=" \ - "99;::<\235\235\237\255\377\377\377\202::<\1;;=\204::<\1\301\301\301\215" \ - "\377\377\377\1\234\234\234\206::<\1\316\316\316\206\377\377\377\5\376" \ - "\376\376\364\364\364TTV::<99;\202;;=\203::<\4\332\332\334\376\376\376" \ - "\377\377\377\376\376\376\203\377\377\377\6\376\376\376\377\377\377\363" \ - "\363\363FFH::<;;=\204::<\1__a\210\377\377\377\1\316\316\316\206::<\1" \ - "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270" \ - "\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0" \ - "=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \ - "\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377\377\5\376" \ - "\376\376\377\377\377GGI::<;;=\203::<\4;;=\220\220\222\377\377\377\376" \ - "\376\376\214\377\377\377\1\376\376\376\203\377\377\377\10\376\376\376" \ - "\377\377\377\363\363\363FFH::<;;=99;;;=\202::<\1\316\316\320\202\377" \ - "\377\377\1\376\376\376\204\377\377\377\1\376\376\376\215\377\377\377" \ - "\1kkm\206::<\1\316\316\316\277\377\377\377\3\376\376\376\377\377\377" \ - "\265\265\267\204::<\3;;=::<\205\205\205\213\377\377\377\1\376\376\376" \ - "\202\377\377\377\2\376\376\376\265\265\265\202::<\5""99;<<>::<;;=SSU" \ - "\202\377\377\377\1\376\376\376\224\377\377\377\1\234\234\234\206::<\1" \ - "\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<" \ - "\1\234\234\236\230\377\377\377\2\376\376\376SSU\204::<\3;;=::<\266\266" \ - "\266\253\377\377\377\3\376\376\376\377\377\377^^`\206::<\1\234\234\234" \ - "\202\377\377\377\1\376\376\376\212\377\377\377\1\234\234\234\206::<\1" \ - "\316\316\316\205\377\377\377\6\376\376\376\377\377\377\376\376\376\315" \ - "\315\317::<;;=\202::<\4;;=99;::<``b\210\377\377\377\4xxz99;<<>::<\202" \ - ";;=\202::<\1\332\332\332\203\377\377\377\1\376\376\376\204\377\377\377" \ - "\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \ - "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \ - "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \ - "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \ - "\226\377\377\377\1\234\234\234\206::<\2FFH\376\376\376\214\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\3\265\265" \ - "\265;;=99;\202;;=\202::<\1SSU\202\377\377\377\1\376\376\376\223\377\377" \ - "\377\1kkm\203::<\4""99;::<;;=\316\316\320\275\377\377\377\202\376\376" \ - "\376\4\377\377\377\376\376\376SSU;;=\202::<\4;;=::<;;=\332\332\332\215" \ - "\377\377\377\5\376\376\376\377\377\377\376\376\376SSU;;=\204::<\2;;=" \ - "\264\264\264\226\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377" \ - "\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\231\377" \ - "\377\377\207::<\1\316\316\316\254\377\377\377\2\376\376\376lln\202::" \ - "<\1;;=\202::<\4;;=\233\233\233\377\377\377\376\376\376\202\377\377\377" \ - "\1\376\376\376\210\377\377\377\1\234\234\234\206::<\1\316\316\316\203" \ - "\377\377\377\202\376\376\376\204\377\377\377\1\234\234\234\207::<\1\234" \ - "\234\236\205\377\377\377\4\376\376\376\300\300\302::<;;=\205::<\2\234" \ - "\234\234\376\376\376\202\377\377\377\1\376\376\376\205\377\377\377\1" \ - "\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \ - "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \ - "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \ - "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \ - "\226\377\377\377\1\347\347\347\204::<\5;;=99;;;=\265\265\265\376\376" \ - "\376\222\377\377\377\2___99;\202::<\4;;=::<;;=\265\265\265\207\377\377" \ - "\377\1\376\376\376\216\377\377\377\1kkm\203::<\1;;=\202::<\1;;=\233:" \ - ":<\5""99;;;=::<:::\234\234\234\240\377\377\377\2\316\316\316;;=\204:" \ - ":<\2;;=kkm\221\377\377\377\1\234\234\236\203::<\1;;=\202::<\3kkk\377" \ - "\377\377\376\376\376\224\377\377\377\1\234\234\234\206::<\1\234\234\234" \ - "\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236" \ - "\231\377\377\377\207::<\1\316\316\316\255\377\377\377\2\221\221\221;" \ - ";=\205::<\1\204\204\204\203\377\377\377\1\376\376\376\211\377\377\377" \ - "\1\234\234\234\206::<\1\316\316\316\210\377\377\377\3\376\376\376\377" \ - "\377\377``b\202::<\7;;=::<;;=::<;;=\332\332\332\376\376\376\202\377\377" \ - "\377\3\376\376\376\363\363\363GGI\203::<\4;;=::<;;=__a\206\377\377\377" \ - "\1\376\376\376\203\377\377\377\1\316\316\316\206::<\1\234\234\236\213" \ - "\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350" \ - "\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i" \ - "\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \ - "\1\234\234\236\206::<\1\234\234\236\227\377\377\377\1\204\204\206\204" \ - "::<\3;;=::<kkk\217\377\377\377\5\376\376\376\377\377\377\376\376\376" \ - "\333\333\333:::\202::<\1;;=\202::<\2FFH\363\363\363\226\377\377\377\1" \ - "kkm\204::<\1;;=\202::<\1;;=\234::<\4;;=::<\234\234\234\376\376\376\237" \ - "\377\377\377\1kkm\206::<\1\316\316\316\221\377\377\377\2\363\363\363" \ - "GGG\204::<\3;;=::<\315\315\315\225\377\377\377\1\234\234\234\206::<\1" \ - "\234\234\234\237\377\377\377\1\376\376\376\203\377\377\377\1kkm\206:" \ - ":<\237\377\377\377\1kkm\206::<\1\234\234\236\230\377\377\377\2\376\376" \ - "\376;;=\203::<\1;;=\202::<\1\363\363\363\252\377\377\377\6\376\376\376" \ - "\377\377\377\376\376\376\234\234\23699;;;=\204::<\1kkm\215\377\377\377" \ - "\1\234\234\234\206::<\1\316\316\316\210\377\377\377\7\377\377\375\377" \ - "\377\377\332\332\332::<;;=::<;;=\203::<\2``b\376\376\376\202\377\377" \ - "\377\2\376\376\376xxz\206::<\2:::\332\332\332\212\377\377\377\1\316\316" \ - "\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211" \ - "[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331" \ - "\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \ - "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\227\377" \ - "\377\377\1\315\315\315\205::<\3;;=::<\332\332\334\221\377\377\377\1\204" \ - "\204\206\205::<\2;;=\205\205\205\227\377\377\377\1kkm\203::<\3;;=::<" \ - ";;=\234::<\1:9>\203::<\1\234\234\236\237\377\377\377\1\331\331\331\202" \ - ";;=\204::<\1SSU\217\377\377\377\5\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\204\204\204\204::<\3;;=99;yyy\203\377\377\377\1\376\376" \ - "\376\221\377\377\377\1\234\234\234\206::<\1\234\234\234\235\377\377\377" \ - "\1\376\376\376\205\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206:" \ - ":<\1\234\234\236\231\377\377\377\203::<\1;;=\203::<\202\377\377\377\1" \ - "\376\376\376\253\377\377\377\2\233\233\235;;=\205::<\3kkm\377\377\377" \ - "\376\376\376\202\377\377\377\1\376\376\376\210\377\377\377\1\234\234" \ - "\234\206::<\1\316\316\316\213\377\377\377\1\234\234\236\202;;=\1""99" \ - ";\203::<\5;;=\235\235\235\377\377\377\376\376\376\302\302\302\207::<" \ - "\1\251\251\251\213\377\377\377\1\316\316\316\206::<\1\234\234\236\213" \ - "\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350" \ - "\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i" \ - "\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \ - "\1\234\234\236\206::<\1\234\234\236\223\377\377\377\1\376\376\376\204" \ - "\377\377\377\1^^`\202::<\202;;=\3::<<<>\204\204\206\213\377\377\377\1" \ - "\376\376\376\204\377\377\377\1\363\363\363\205::<\3;;=::<\346\346\346" \ - "\227\377\377\377\1kkm\204::<\3;;=::<;;=\234::<\1;;=\202::<\1\234\234" \ - "\236\237\377\377\377\4\204\204\20499;::<;;=\203::<\3\266\266\270\377" \ - "\377\377\376\376\376\221\377\377\377\5\346\346\346;;=::<;;=::<\202;;" \ - "=\4::<\346\346\350\377\377\377\376\376\376\202\377\377\377\1\376\376" \ - "\376\217\377\377\377\1\234\234\234\206::<\1\234\234\234\237\377\377\377" \ - "\202\376\376\376\202\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206" \ - "::<\1\234\234\236\224\377\377\377\6\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\376\376\376;;=\206::<\1\331\331\331\255\377\377\377\1\234" \ - "\234\236\202::<\1;;=\203::<\2kkm\376\376\376\202\377\377\377\1\376\376" \ - "\376\211\377\377\377\1\234\234\234\206::<\1\316\316\316\212\377\377\377" \ - "\3\376\376\376\377\377\377___\204::<\7;;=99;::<\332\332\332\363\363\365" \ - "FFH;;=\204::<\3;;=kkm\376\376\376\213\377\377\377\1\316\316\316\206:" \ - ":<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350" \ - "\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0" \ - ">i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::" \ - "<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377" \ - "\377\1\376\376\376\203\377\377\377\4\265\265\267::<;;=::<\202;;=\3::" \ - "<FFH\363\363\363\213\377\377\377\1\376\376\376\203\377\377\377\2\251" \ - "\251\251;;=\205::<\1lln\202\377\377\377\1\376\376\376\225\377\377\377" \ - "\1kkm\202::<\2;;=99;\204::<\1;;=\234::<\2;;=\234\234\234\235\377\377" \ - "\377\5\376\376\376\345\345\345;;=::<;;=\202::<\2;;=FFH\215\377\377\377" \ - "\3\376\376\376\377\377\377\376\376\376\205\377\377\377\10xxz;;=::<;;" \ - "=99;;;=::<\204\204\206\202\377\377\377\1\376\376\376\221\377\377\377" \ - "\1\234\234\234\206::<\1\234\234\234\234\377\377\377\1\376\376\376\204" \ - "\377\377\377\3\376\376\376\377\377\377kkm\206::<\237\377\377\377\1kk" \ - "m\206::<\1\234\234\236\231\377\377\377\202::<\1;;=\204::<\1\316\316\316" \ - "\253\377\377\377\3\376\376\376\377\377\377\220\220\222\202;;=\2::<;;" \ - "=\202::<\1\222\222\224\215\377\377\377\1\234\234\234\206::<\1\316\316" \ - "\316\213\377\377\377\3\376\376\376\332\332\332GGI\204::<\10;;=::<__a" \ - "xxz::<;;=::<;;=\202::<\2FFH\346\346\346\214\377\377\377\1\316\316\316" \ - "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \ - "\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0" \ - "=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206" \ - "::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\231\377\377" \ - "\377\10FFH::<;;=99;;;=::<;;=\265\265\265\216\377\377\377\4\376\376\376" \ - "TTV99;;;=\202::<\202;;=\1\301\301\301\230\377\377\377\1kkm\202::<\1;" \ - ";=\204::<\3;;=::<;;=\232::<\5;;=::<\234\234\234\377\377\377\376\376\376" \ - "\232\377\377\377\3\376\376\376\377\377\377\221\221\221\202::<\1""99;" \ - "\203::<\5\234\234\236\377\377\377\376\376\376\377\377\377\376\376\376" \ - "\216\377\377\377\1\376\376\376\202\377\377\377\2\316\316\320::<\202;" \ - ";=\204::<\2\363\363\363\376\376\376\202\377\377\377\1\376\376\376\217" \ - "\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm" \ - "\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\224\377\377\377\1\376" \ - "\376\376\204\377\377\377\1""99;\202::<\1;;=\203::<\1\316\316\316\252" \ - "\377\377\377\10\376\376\376\377\377\377\376\376\376kkm;;=::<;;=99;\202" \ - "::<\1\234\234\236\215\377\377\377\1\234\234\234\206::<\1\316\316\316" \ - "\215\377\377\377\5\247\247\247;;=99;::<;;=\210::<\5""99;::<\250\250\252" \ - "\377\377\377\376\376\376\213\377\377\377\1\316\316\316\206::<\1\234\234" \ - "\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[" \ - "\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3" \ - "\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \ - "\377\377\1\234\234\236\206::<\1\234\234\236\223\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\203\377\377\377\1\234\234\236\202::<\1;" \ - ";=\202::<\2""99;SSU\214\377\377\377\5\376\376\376\377\377\377\301\301" \ - "\301;;=<<>\202::<\3;;=::<SSU\202\377\377\377\1\376\376\376\226\377\377" \ - "\377\1kkm\203::<\1;;=\202::<\1\204\204\206\202\234\234\234\1\235\235" \ - "\235\232\234\234\236\202\234\234\234\1\315\315\315\233\377\377\377\6" \ - "\376\376\376\377\377\377\362\362\362HHJ99;;;=\204::<\2\364\364\364\376" \ - "\376\376\220\377\377\377\1\376\376\376\204\377\377\377\1kkm\206::<\1" \ - "\234\234\234\223\377\377\377\1\234\234\234\206::<\1\234\234\234\242\377" \ - "\377\377\2\376\376\376lln\206::<\237\377\377\377\1kkm\206::<\1\234\234" \ - "\236\231\377\377\377\2TTV99;\202::<\5;;=::<;;=\250\250\250\376\376\376" \ - "\254\377\377\377\1``b\203::<\202;;=\3::<\235\235\237\376\376\376\202" \ - "\377\377\377\1\376\376\376\211\377\377\377\1\234\234\234\206::<\1\316" \ - "\316\316\216\377\377\377\2kkm;;=\203::<\5;;=::<;;=99;;;=\202::<\2;;=" \ - "jjl\216\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \ - "\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350\326\354\371" \ - "\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263" \ - "\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234" \ - "\236\206::<\1\234\234\236\224\377\377\377\1\376\376\376\204\377\377\377" \ - "\2\346\346\34699;\202::<\2;;=::<\202;;=\1\315\315\315\212\377\377\377" \ - "\1\376\376\376\202\377\377\377\1yy{\203::<\4;;=99;;;=\250\250\250\202" \ - "\377\377\377\1\376\376\376\226\377\377\377\1kkm\206::<\1\317\317\317" \ - "\240\377\377\377\1\376\376\376\234\377\377\377\1\234\234\234\202::<\2" \ - "99;;;=\202::<\1\204\204\206\203\377\377\377\1\376\376\376\220\377\377" \ - "\377\1\376\376\376\202\377\377\377\2\264\264\264::<\202;;=\203::<\3G" \ - "GI\364\364\364\376\376\376\202\377\377\377\1\376\376\376\216\377\377" \ - "\377\1\234\234\234\206::<\1\234\234\234\241\377\377\377\3\376\376\376" \ - "\377\377\377kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\225" \ - "\377\377\377\202\376\376\376\202\377\377\377\12kkm::<;;=99;::<;;=::<" \ - "\204\204\204\377\377\377\376\376\376\251\377\377\377\4\376\376\376\377" \ - "\377\377::<99;\202;;=\203::<\1\316\316\320\215\377\377\377\1\234\234" \ - "\234\206::<\1\316\316\316\216\377\377\377\5\346\346\350GGI;;=::<;;=\202" \ - "::<\2""99;;;=\202::<\3;;=GGI\346\346\350\216\377\377\377\1\316\316\316" \ - "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \ - "\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0" \ - "=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206" \ - "::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\231\377\377" \ - "\377\2\376\376\376\205\205\205\202::<\5""99;;;=::<;;=\205\205\207\213" \ - "\377\377\377\12\376\376\376\346\346\346::<;;=99;::<99;;;=FFH\363\363" \ - "\363\231\377\377\377\1kkm\202::<\2;;=::<\202;;=\3\316\316\316\377\377" \ - "\377\376\376\376\234\377\377\377\1\376\376\376\236\377\377\377\1SSS\204" \ - "::<\3;;=99;\347\347\351\204\377\377\377\1\376\376\376\215\377\377\377" \ - "\1\376\376\376\205\377\377\377\1SSU\203::<\4;;=99;::<\265\265\265\202" \ - "\377\377\377\1\376\376\376\217\377\377\377\1\234\234\234\206::<\1\234" \ - "\234\234\242\377\377\377\2\376\376\376SSU\206::<\237\377\377\377\1kk" \ - "m\206::<\1\234\234\236\231\377\377\377\4\221\221\223;;=::<;;=\202::<" \ - "\3;;=___\376\376\376\253\377\377\377\1\332\332\332\204::<\1;;=\202::" \ - "<\1\346\346\350\203\377\377\377\1\376\376\376\211\377\377\377\1\234\234" \ - "\234\206::<\1\316\316\316\217\377\377\377\1\250\250\252\204::<\202;;" \ - "=\2::<;;=\202::<\1\265\265\267\217\377\377\377\1\316\316\316\206::<\1" \ - "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270" \ - "\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0" \ - "=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \ - "\377\377\377\1\234\234\236\206::<\1\234\234\236\232\377\377\377\1\316" \ - "\316\316\203::<\2""99;<<>\202::<\1\346\346\350\213\377\377\377\4\221" \ - "\221\223;;=::<;;=\203::<\1\204\204\206\232\377\377\377\1kkm\203::<\1" \ - ";;=\202::<\1\316\316\316\274\377\377\377\2\265\265\267;;=\205::<\1xx" \ - "x\231\377\377\377\1\250\250\250\206::<\1TTV\222\377\377\377\1\234\234" \ - "\234\204::<\3;;=::<\235\235\235\203\377\377\377\1\376\376\376\237\377" \ - "\377\377\202;;=\203::<\3;;=::<\376\376\376\236\377\377\377\1kkm\206:" \ - ":<\1\234\234\236\225\377\377\377\1\376\376\376\203\377\377\377\1\265" \ - "\265\267\204::<\1;;=\202::<\1\363\363\363\253\377\377\377\1\250\250\250" \ - "\204::<\3;;=::<GGI\216\377\377\377\1\234\234\234\206::<\1\316\316\316" \ - "\220\377\377\377\4kkm;;=::<;;=\204::<\3;;=xxx\376\376\376\217\377\377" \ - "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \ - "Y\270\350\212[\267\350\2X\266\351\326\356\370\202\377\377\377\3\377\377" \ - "\375\377\377\377\376\377\375\234\377\377\377\4\377\377\375\276\317\327" \ - "\0\77j\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \ - "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\233\377" \ - "\377\377\1``b\205::<\2;;=\235\235\237\210\377\377\377\1\376\376\376\202" \ - "\377\377\377\2FFH;;=\205::<\1\346\346\346\202\377\377\377\1\376\376\376" \ - "\227\377\377\377\1kkm\206::<\1\316\316\316\266\377\377\377\1\376\376" \ - "\376\205\377\377\377\5__a::<;;=::<;;=\202::<\1SSU\202kkm\1lln\203kkm" \ - "\1lln\222kkm\4__a;;=99;;;=\204::<\3\301\301\301\377\377\377\376\376\376" \ - "\215\377\377\377\202\376\376\376\1\235\235\235\204::<\3""99;;;=\221\221" \ - "\221\243\377\377\377\203::<\1;;=\202::<\1""99;\237\377\377\377\1kkm\206" \ - "::<\1\234\234\236\231\377\377\377\1\332\332\332\202::<\3;;=::<99;\202" \ - ";;=\1\264\264\264\210\377\377\377\1\376\376\376\232\377\377\377\1\376" \ - "\376\376\206\377\377\377\2\376\376\376xxx\202::<\1;;=\203::<\1xxz\216" \ - "\377\377\377\1\234\234\234\206::<\1\316\316\316\220\377\377\377\3\363" \ - "\363\365FFH;;=\202::<\1;;=\202::<\2FFH\363\363\363\220\377\377\377\1" \ - "\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \ - "\350\211[\267\350\10X\267\347Y\267\352\326\354\371\377\377\377\376\376" \ - "\376\377\376\377\377\377\377\377\376\377\234\377\377\377\2\376\376\374" \ - "\277\320\330\212\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \ - "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\233" \ - "\377\377\377\1\265\265\267\203::<\4""99;;;=::<SSU\207\377\377\377\6\376" \ - "\376\376\377\377\377\376\376\376\265\265\265;;=99;\202;;=\4""99;;;=k" \ - "km\377\377\377\202\376\376\376\230\377\377\377\1kkm\206::<\1\316\316" \ - "\316\267\377\377\377\1\376\376\376\203\377\377\377\7\316\316\320<<>9" \ - "9;::<;;=::<99;\203::<\2;;=99;\202::<\1;;=\224::<\1;;=\202::<\1;;=\203" \ - "::<\1kkm\203\377\377\377\1\376\376\376\215\377\377\377\1\300\300\300" \ - "\202::<\11;;=::<99;;;=jjl\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\236\377\377\377\1\346\346\350\206::<\1__a\237\377\377\377\1kkm\206" \ - "::<\1\234\234\236\231\377\377\377\2\376\376\376SSU\206::<\2yy{\376\376" \ - "\376\206\377\377\377\1\376\376\376\234\377\377\377\1\376\376\376\205" \ - "\377\377\377\4\363\363\363::<<<>99;\202::<\3;;=::<\265\265\267\203\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\210\377\377\377\1\234" \ - "\234\234\206::<\1\316\316\316\221\377\377\377\4\301\301\30199;::<;;=" \ - "\202::<\6;;=\301\301\301\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\215\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \ - "\2\255\333\363Y\270\350\211[\267\350\6Y\270\350Y\267\352\325\353\370" \ - "\377\377\377\376\377\375\377\375\377\234\377\377\377\5\376\376\376\377" \ - "\377\377\377\377\375\276\317\327\2\77k\211\0=i\3\0>i\0=i\177\236\263" \ - "\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234" \ - "\236\206::<\1\234\234\236\234\377\377\377\1GGI\203::<\1;;=\202::<\2\301" \ - "\301\301\376\376\376\204\377\377\377\1\376\376\376\203\377\377\377\3" \ - "lln::<;;=\202::<\202;;=\4\301\301\303\376\376\376\377\377\377\376\376" \ - "\376\230\377\377\377\1kkm\206::<\1\316\316\316\265\377\377\377\1\376" \ - "\376\376\205\377\377\377\3kkm::<;;=\202::<\2""99;<<>\202::<\3;;=::<;" \ - ";=\202::<\1;;=\222::<\4""99;;;=::<;;=\203::<\1;;=\202::<\3\316\316\316" \ - "\377\377\377\376\376\376\215\377\377\377\3\376\376\376\316\316\316;;" \ - "=\203::<\3;;=::<FFH\234\377\377\377\202\376\376\376\202\377\377\377\3" \ - "\376\376\376\377\377\377\316\316\320\203::<\4;;=::<;;=kkm\237\377\377" \ - "\377\1kkm\206::<\1\234\234\236\226\377\377\377\7\376\376\376\377\377" \ - "\377\376\376\376\377\377\377\204\204\204::<;;=\204::<\2;;=\346\346\346" \ - "\241\377\377\377\1\376\376\376\202\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\202\377\377\377\1\250\250\250\202::<\1<<>\204::<\3\346" \ - "\346\346\377\377\377\376\376\376\202\377\377\377\1\376\376\376\211\377" \ - "\377\377\1\234\234\234\206::<\1\316\316\316\220\377\377\377\14\376\376" \ - "\376\377\377\377yy{::<99;;;=::<xxz\377\377\377\376\376\376\377\377\377" \ - "\376\376\376\203\377\377\377\1\376\376\376\212\377\377\377\1\316\316" \ - "\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211" \ - "[\267\350\10X\267\347Z\266\351\326\356\370\376\377\377\377\377\375\377" \ - "\377\377\377\376\377\376\377\377\234\377\377\377\4\376\376\374\277\320" \ - "\330\0=i\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \ - "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\234" \ - "\377\377\377\1\234\234\234\206::<\3jjj\377\377\377\376\376\376\204\377" \ - "\377\377\4\376\376\376\377\377\377\332\332\33299;\203::<\3;;=::<SSU\202" \ - "\377\377\377\1\376\376\376\231\377\377\377\1kkm\206::<\1\316\316\316" \ - "\267\377\377\377\5\376\376\376\377\377\377\376\376\376\346\346\350;;" \ - "=\203::<\1;;=\202::<\202;;=\202::<\3""99;::<;;=\222::<\202;;=\3""99;" \ - "::<;;=\202::<\1;;=\203::<\2\204\204\206\376\376\376\217\377\377\377\1" \ - "\363\363\363\203::<\6;;=::<;;=::<\347\347\347\376\376\376\234\377\377" \ - "\377\202\376\376\376\5\377\377\377\376\376\376\234\234\236::<;;=\202" \ - "::<\3;;=::<\234\234\236\237\377\377\377\1kkm\206::<\1\234\234\236\231" \ - "\377\377\377\5\376\376\376\316\316\316;;=99;;;=\204::<\1\222\222\224" \ - "\204\377\377\377\1\376\376\376\235\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\203\377\377\377\5SSU;;=::<99;;;=\202::<\3kkk\377" \ - "\377\377\376\376\376\203\377\377\377\1\376\376\376\211\377\377\377\1" \ - "\234\234\234\206::<\1\316\316\316\222\377\377\377\6\363\363\363GGI::" \ - "<;;=FFH\363\363\363\205\377\377\377\1\376\376\376\214\377\377\377\1\316" \ - "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \ - "\212[\267\350\3Y\267\352\330\354\363\376\377\377\203\377\377\377\1\377" \ - "\377\375\235\377\377\377\3\276\317\331\0=i\1>j\210\0=i\3\0>i\0=i\177" \ - "\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1" \ - "\234\234\236\206::<\1\234\234\236\233\377\377\377\2\376\376\376\347\347" \ - "\347\202::<\2;;=::<\203;;=\1\346\346\346\207\377\377\377\5\204\204\204" \ - "<<>99;::<;;=\202::<\2\251\251\251\376\376\376\205\377\377\377\1\376\376" \ - "\376\225\377\377\377\1kkm\206::<\1\316\316\316\264\377\377\377\1\376" \ - "\376\376\205\377\377\377\3\204\204\206::<;;=\203::<\1;;=\205::<\1;;=" \ - "\225::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\202::<\1\347\347\347\220\377" \ - "\377\377\2SSU;;=\203::<\3;;=::<\265\265\265\237\377\377\377\7\376\376" \ - "\376\377\377\377lln99;::<;;=99;\202::<\1\265\265\267\237\377\377\377" \ - "\1kkm\206::<\1\234\234\236\225\377\377\377\1\376\376\376\204\377\377" \ - "\377\3\376\376\376SSU;;=\204::<\3;;=FFH\346\346\346\202\377\377\377\1" \ - "\376\376\376\237\377\377\377\1\376\376\376\204\377\377\377\2\265\265" \ - "\267;;=\202::<\1;;=\203::<\1\265\265\265\217\377\377\377\1\234\234\234" \ - "\206::<\1\316\316\316\223\377\377\377\4\301\301\301::<:::\302\302\302" \ - "\223\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2" \ - "\255\333\363Y\270\350\212[\267\350\2Y\270\350\332\354\370\202\377\377" \ - "\377\3\376\376\376\376\377\377\377\376\373\235\377\377\377\1\276\317" \ - "\331\202\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \ - "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\235" \ - "\377\377\377\1\204\204\204\206::<\1\221\221\223\206\377\377\377\2\363" \ - "\363\363GGI\202::<\5""99;;;=::<GGI\363\363\363\204\377\377\377\202\376" \ - "\376\376\226\377\377\377\1kkm\206::<\1\316\316\316\266\377\377\377\1" \ - "\376\376\376\202\377\377\377\3\346\346\350::<;;=\204::<\5""99;;;=:::" \ - "99;;;=\203::<\3;;=99;;;=\220::<\5;;=::<;;=::<;;=\202::<\6;;=::<99;;;" \ - "=::<\204\204\206\220\377\377\377\5yy{99;::<99;;;=\202::<\1xxz\236\377" \ - "\377\377\10\376\376\376\377\377\377\363\363\36399;::<;;=99;;;=\202::" \ - "<\2\346\346\350\376\376\376\236\377\377\377\1kkm\206::<\1\234\234\236" \ - "\231\377\377\377\3\376\376\376\377\377\377\233\233\235\202::<\7;;=::" \ - "<;;=99;;;=\204\204\204\376\376\376\245\377\377\377\2\363\363\363SSU\205" \ - "::<\2;;=FFH\205\377\377\377\3\376\376\376\377\377\377\376\376\376\210" \ - "\377\377\377\1\234\234\234\206::<\1\316\316\316\224\377\377\377\3\205" \ - "\205\205\221\221\221\376\376\376\204\377\377\377\202\376\376\376\215" \ - "\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255" \ - "\333\363Y\270\350\212[\267\350\7Y\270\350\321\356\376\377\376\377\377" \ - "\377\377\377\377\375\376\377\375\377\376\377\232\377\377\377\1\377\377" \ - "\375\202\377\377\377\3\275\317\333\0\77k\0>i\210\0=i\3\0>i\0=i\177\236" \ - "\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234" \ - "\234\236\206::<\1\234\234\236\235\377\377\377\1\316\316\316\206::<\1" \ - "FFH\203\377\377\377\1\376\376\376\202\377\377\377\1\250\250\250\203:" \ - ":<\1;;=\202::<\1\204\204\206\203\377\377\377\1\376\376\376\231\377\377" \ - "\377\1kkm\206::<\1\316\316\316\271\377\377\377\1\234\234\236\204::<\4" \ - ";;=::<kkm\234\234\236\202\234\234\234\1\233\233\233\202\234\234\234\3" \ - "\235\235\235\234\234\234\235\235\235\224\234\234\234\202\234\234\236" \ - "\1\204\204\206\206::<\2FFH\363\363\363\217\377\377\377\2\250\250\252" \ - ";;=\206::<\1\364\364\364\237\377\377\377\2\265\265\265;;=\205::<\1TT" \ - "V\240\377\377\377\1kkm\206::<\1\234\234\236\224\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\204\377\377\377\3\364\364\366FFH;;=\203" \ - "::<\4;;=::<:::\316\316\316\245\377\377\377\1\221\221\221\202::<\2;;=" \ - "::<\202;;=\2::<\234\234\236\220\377\377\377\1\234\234\234\206::<\1\316" \ - "\316\316\224\377\377\377\1\376\376\376\225\377\377\377\1\316\316\316" \ - "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\212[\267" \ - "\350\4[\267\346\265\340\361\377\376\377\376\376\377\202\377\377\375\1" \ - "\374\377\377\230\377\377\377\3\376\376\376\377\377\377\377\377\375\202" \ - "\377\377\377\3\243\265\301\0>j\0>i\210\0=i\3\0>i\0=i\177\236\263\232" \ - "\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236" \ - "\206::<\1\234\234\236\236\377\377\377\2__a;;=\204::<\5;;=\265\265\265" \ - "\376\376\376\377\377\377\376\376\376\202\377\377\377\1SSU\204::<\3;;" \ - "=::<\346\346\350\235\377\377\377\1kkm\206::<\1\316\316\316\270\377\377" \ - "\377\2\363\363\365GGI\205::<\3;;=\333\333\333\376\376\376\237\377\377" \ - "\377\10FFH::<;;=::<;;=99;;;=\233\233\235\217\377\377\377\5\346\346\346" \ - "::<;;=::<;;=\203::<\1\234\234\234\210\377\377\377\1\376\376\376\217\377" \ - "\377\377\1\376\376\376\206\377\377\377\1TTT\205::<\3;;=\221\221\221\376" \ - "\376\376\237\377\377\377\1kkm\206::<\1\234\234\236\234\377\377\377\12" \ - "\233\233\233::<;;=::<;;=::<;;=::<SSU\363\363\363\212\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\221\377\377\377\1\376\376\376\204\377" \ - "\377\377\1\315\315\317\203::<\1;;=\203::<\2FFH\363\363\365\220\377\377" \ - "\377\1\234\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316" \ - "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \ - "\350\6Y\270\350[\267\346\227\324\363\377\375\376\377\377\377\376\377" \ - "\375\213\377\377\377\6\376\376\376\377\377\377\373\377\376\377\377\377" \ - "\377\376\377\376\377\377\211\377\377\377\10\377\376\377\374\377\377\377" \ - "\377\375\377\377\377\377\376\377_\207\240\0>l\0\77j\210\0=i\3\0>i\0=" \ - "i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \ - "\1\234\234\236\206::<\1\234\234\236\236\377\377\377\1\265\265\265\204" \ - "::<\3;;=::<__a\204\377\377\377\1\317\317\321\206::<\1kkk\236\377\377" \ - "\377\1kkm\206::<\1\316\316\316\267\377\377\377\3\376\376\376\250\250" \ - "\25299;\202;;=\203::<\1kkm\233\377\377\377\1\376\376\376\205\377\377" \ - "\377\10\234\234\236;;=::<;;=::<;;=99;GGI\204\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\210\377\377\377\5\376\376\376__a::<;;=99;\203" \ - ";;=\2FFH\363\363\363\204\377\377\377\3\376\376\376\377\377\377\376\376" \ - "\376\224\377\377\377\5\376\376\376\377\377\377\301\301\301:::;;=\202" \ - "::<\202;;=\4::<\332\332\332\377\377\377\376\376\376\236\377\377\377\1" \ - "kkm\206::<\1\234\234\236\233\377\377\377\3\376\376\376\364\364\364FF" \ - "H\205::<\4;;=99;xxx\376\376\376\203\377\377\377\1\376\376\376\203\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\224\377\377\377" \ - "\4\376\376\376\377\377\377\362\362\362GGI\202::<\6;;=::<;;=::<99;\250" \ - "\250\252\221\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377" \ - "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \ - "Y\270\350\211[\267\350\7Y\267\352X\267\347[\266\353\301\344\367\377\377" \ - "\377\376\376\376\376\377\377\211\377\377\377\6\377\376\377\377\377\377" \ - "\377\375\376\377\377\377\377\377\375\377\376\377\202\377\377\377\210" \ - "\377\376\377\10\377\377\375\376\377\377\377\377\377\376\377\375\237\266" \ - "\306\0=i\2=g\0>e\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \ - "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \ - "\237\377\377\377\1EEG\202::<\202;;=\11""99;;;=\332\332\332\377\377\377" \ - "\376\376\376\377\377\377xxz::<;;=\204::<\1\302\302\302\236\377\377\377" \ - "\1kkm\206::<\1\316\316\316\266\377\377\377\4\376\376\376\377\377\377" \ - "SSU;;=\202::<\1;;=\202::<\1\316\316\320\235\377\377\377\15\376\376\376" \ - "\377\377\377\376\376\376\377\377\377\363\363\365::<;;=99;;;=::<;;=::" \ - "<\265\265\265\215\377\377\377\3\376\376\376\377\377\377\266\266\270\202" \ - "::<\1;;=\203::<\2;;=\204\204\206\205\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\213\377\377\377\1\376\376\376\205\377\377\377\1\376" \ - "\376\376\202\377\377\377\2\363\363\363SSU\203::<\4;;=99;;;=SSU\241\377" \ - "\377\377\1kkm\206::<\1\234\234\236\235\377\377\377\3\265\265\265;;=9" \ - "9;\202::<\1;;=\203::<\1\204\204\206\206\377\377\377\1\376\376\376\216" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377\377\377\6" \ - "\376\376\376\377\377\377\362\362\364``b::<;;=\202::<\1;;=\202::<\2aa" \ - "c\376\376\376\221\377\377\377\1\234\234\234\206::<\1\316\316\316\252" \ - "\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255" \ - "\333\363Y\270\350\211[\267\350\10X\267\347[\267\346[\265\347[\267\346" \ - "\230\320\361\327\360\367\325\356\365\331\355\370\210\326\354\371\10\325" \ - "\355\367\323\355\372\366\373\377\377\376\374\376\377\375\276\320\332" \ - "\277\320\330\301\317\330\210\276\317\331\10\276\317\327\276\320\334\301" \ - "\316\327_\207\241\0>i\0=l\0\77k\0>i\210\0=i\3\0>i\0=i\177\236\263\232" \ - "\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236" \ - "\206::<\1\234\234\236\237\377\377\377\3\222\222\224::<;;=\202::<\3;;" \ - "=99;\205\205\207\202\377\377\377\2\346\346\346;;=\202::<\1;;=\202::<" \ - "\1SSU\237\377\377\377\1kkm\206::<\1\316\316\316\267\377\377\377\5\265" \ - "\265\26799;;;=::<;;=\202::<\1TTV\243\377\377\377\1\204\204\206\205::" \ - "<\2;;=SSU\206\377\377\377\1\376\376\376\210\377\377\377\3\376\376\376" \ - "GGI;;=\202::<\5;;=::<;;=::<\301\301\303\203\377\377\377\1\376\376\376" \ - "\214\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\204\377\377\377\3\204\204\206;;=::<\202;;=\203" \ - "::<\1\265\265\265\241\377\377\377\1kkm\206::<\1\234\234\236\236\377\377" \ - "\377\12kkk::<99;;;=::<99;;;=::<;;=\204\204\206\210\377\377\377\202\376" \ - "\376\376\213\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\376\376\376\202\377\377\377\2\364\364\366__a\206:" \ - ":<\3;;=::<\332\332\332\222\377\377\377\1\234\234\234\206::<\1\316\316" \ - "\316\252\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \ - "\2\255\333\363Y\270\350\211[\267\350\3\\\266\350X\270\352\\\266\352\202" \ - "[\267\350\3X\267\347Y\270\350Z\266\347\210Y\270\350\10[\267\350[\265" \ - "\351\327\355\372\376\377\377\377\377\375\0>j\0>i\1\77h\210\0>i\10\0\77" \ - "k\0>g\2=g\0=i\0\77j\0<h\0\77h\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377" \ - "\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206" \ - "::<\1\234\234\236\236\377\377\377\2\376\376\376\346\346\346\202::<\10" \ - ";;=::<99;;;=::<\363\363\363\377\377\377\234\234\236\202::<\6;;=::<;;" \ - "=::<\250\250\250\376\376\376\236\377\377\377\1kkm\206::<\1\316\316\316" \ - "\267\377\377\377\10kkm;;=::<;;=99;::<;;=\264\264\266\236\377\377\377" \ - "\1\376\376\376\204\377\377\377\2\346\346\346;;=\202::<\202;;=\202::<" \ - "\2\316\316\320\376\376\376\203\377\377\377\1\376\376\376\205\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3\234\234" \ - "\234::<;;=\202::<\6;;=::<;;=GGI\332\332\332\376\376\376\224\377\377\377" \ - "\1\376\376\376\203\377\377\377\2\266\266\266;;=\202::<\6;;=::<;;=::<" \ - "SSU\376\376\376\241\377\377\377\1kkm\206::<\1\234\234\236\236\377\377" \ - "\377\2\363\363\363GGI\203::<\1;;=\203::<\3""99;\204\204\204\363\363\363" \ - "\225\377\377\377\1\376\376\376\204\377\377\377\4\376\376\376\346\346" \ - "\346``b::<\202;;=\3::<99;<<>\202::<\1\250\250\250\223\377\377\377\1\234" \ - "\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316\206::<\1" \ - "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\10Y" \ - "\270\350X\270\353Y\267\352X\266\351X\271\346[\267\350\\\266\353[\267" \ - "\350\210Y\270\350\7X\267\345]\267\351\323\355\372\377\376\377\376\377" \ - "\377\4=h\0>g\211\0=i\10\2=i\0@j\0>i\1>j\0>i\1\77h\0>g\0>j\210\0=i\3\0" \ - ">i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \ - "\377\377\1\234\234\236\206::<\1\234\234\236\237\377\377\377\6\376\376" \ - "\376yy{::<;;=::<;;=\202::<\4\251\251\251\376\376\376SSU;;=\203::<\3;" \ - ";=FFH\363\363\363\237\377\377\377\1kkm\206::<\1\316\316\316\264\377\377" \ - "\377\5\376\376\376\377\377\377\315\315\317::<;;=\204::<\2FFH\376\376" \ - "\376\237\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376kkm;" \ - ";=\204::<\6""99;lln\377\377\377\376\376\376\377\377\377\376\376\376\202" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377\10" \ - "\376\376\376\377\377\377SSU::<99;;;=99;;;=\202::<\2FFF\332\332\332\203" \ - "\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376\210\377\377" \ - "\377\1\265\265\265\206::<\3""99;::<\265\265\265\203\377\377\377\1\376" \ - "\376\376\236\377\377\377\1kkm\206::<\1\234\234\236\233\377\377\377\1" \ - "\376\376\376\203\377\377\377\1\331\331\331\204::<\3""99;;;=99;\202;;" \ - "=\2^^^\332\332\332\202\377\377\377\1\376\376\376\216\377\377\377\1\376" \ - "\376\376\206\377\377\377\5\376\376\376\316\316\316FFH::<;;=\204::<\7" \ - "99;::<\204\204\204\377\377\377\376\376\376\377\377\377\376\376\376\220" \ - "\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377\377\1\316" \ - "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \ - "\213[\267\350\6Y\270\350[\266\353[\267\350]\267\351X\266\351X\270\350" \ - "\210[\267\350\10X\266\351Z\266\351\326\354\367\377\376\377\376\377\372" \ - "\0>j\0>i\1>j\210\0=i\10\1\77h\0=h\0>i\1\77h\0>j\0=i\0>i\1>j\210\0=i\3" \ - "\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \ - "\377\377\1\234\234\236\206::<\1\234\234\236\237\377\377\377\2\376\376" \ - "\376\316\316\316\203::<\1;;=\202::<\4SSU\265\265\267;;=99;\202::<\5;" \ - ";=99;\204\204\204\377\377\377\376\376\376\236\377\377\377\1kkm\206::" \ - "<\1\316\316\316\263\377\377\377\1\376\376\376\202\377\377\377\1xxz\202" \ - "::<\1;;=\202::<\3""99;\234\234\236\376\376\376\236\377\377\377\1\375" \ - "\375\375\202\377\377\377\1\376\376\376\202\377\377\377\5\317\317\317" \ - "99;::<;;=::<\202;;=\2::<\332\332\332\210\377\377\377\3\376\376\376\377" \ - "\377\377\376\376\376\204\377\377\377\2\316\316\316;;=\206::<\3;;=::<" \ - "\250\250\252\217\377\377\377\1\376\376\376\204\377\377\377\2\363\363" \ - "\363\222\222\224\202::<\2;;=::<\202;;=\3""99;;;=kkm\205\377\377\377\1" \ - "\376\376\376\235\377\377\377\1kkm\206::<\1\234\234\236\235\377\377\377" \ - "\1\376\376\376\202\377\377\377\2\266\266\26699;\202::<\3;;=::<;;=\202" \ - "::<\3;;=FFH\234\234\234\202\377\377\377\1\376\376\376\223\377\377\377" \ - "\2\364\364\364\204\204\206\202::<\1;;=\202::<\1;;=\202::<\3""99;``b\376" \ - "\376\376\224\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377" \ - "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \ - "Y\270\350\211[\267\350\10Y\271\353Z\266\347\\\267\344[\267\346X\267\347" \ - "[\267\350X\270\353Z\266\347\210Y\270\350\10Y\267\352\\\267\346\325\355" \ - "\371\377\377\377\376\377\377\0>g\0\77k\0>i\210\0\77j\10\0>i\3>h\0=i\0" \ - "\77i\0=j\0>g\0=j\0=f\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1" \ - "\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234" \ - "\236\234\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \ - "\377\2SSU;;=\202::<\202;;=\3::<SSU::<\202;;=\203::<\1\332\332\332\240" \ - "\377\377\377\1kkm\206::<\1\316\316\316\265\377\377\377\1\346\346\346" \ - "\203::<\1;;=\202::<\2;;=\363\363\365\235\377\377\377\1\376\376\376\210" \ - "\377\377\377\1SSU\202;;=\204::<\1\204\204\204\202\377\377\377\202\376" \ - "\376\376\214\377\377\377\1\221\221\221\205::<\202;;=\4::<;;=kkm\316\316" \ - "\316\221\377\377\377\2\301\301\301SSS\210::<\2FFH\363\363\365\243\377" \ - "\377\377\1kkm\206::<\1\234\234\236\241\377\377\377\1\266\266\270\203" \ - "::<\1;;=\205::<\3:::RRR\265\265\265\222\377\377\377\3\363\363\363\234" \ - "\234\234FFF\202::<\1;;=\206::<\2``b\363\363\363\225\377\377\377\1\234" \ - "\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316\206::<\1" \ - "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\10Z" \ - "\266\347[\267\346Z\265\352X\266\351\\\270\351[\267\346X\267\347[\265" \ - "\347\210[\267\350\10Y\267\352[\266\345\325\355\367\376\375\377\377\377" \ - "\375\3>j\0=i\1>j\210\0>i\10\0\77j\1\77h\0>j\0>g\3>j\0\77i\0=j\0>i\210" \ - "\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm" \ - "\240\377\377\377\1\234\234\236\206::<\1\234\234\236\241\377\377\377\6" \ - "\266\266\270::<;;=::<99;::<\202;;=\205::<\2kkm\376\376\376\240\377\377" \ - "\377\1kkm\206::<\1\316\316\316\265\377\377\377\4\205\205\205;;=::<;;" \ - "=\203::<\3\204\204\206\377\377\377\376\376\376\245\377\377\377\1\265" \ - "\265\267\207::<\2\346\346\346\376\376\376\216\377\377\377\4\376\376\376" \ - "lll::<;;=\202::<\13;;=::<;;=::<;;=::<kkm\264\264\266\363\363\365\377" \ - "\377\377\376\376\376\202\377\377\377\1\376\376\376\206\377\377\377\3" \ - "\346\346\350\250\250\252TTV\204::<\3;;=::<;;=\202::<\2;;=\333\333\333" \ - "\202\377\377\377\1\376\376\376\237\377\377\377\3\376\376\376\377\377" \ - "\377kkm\203::<\1;;=\202::<\1\235\235\237\242\377\377\377\1\265\265\265" \ - "\203::<\1;;=\207::<\4GGI\220\220\222\332\332\334\376\376\376\206\377" \ - "\377\377\1\376\376\376\204\377\377\377\5\376\376\376\302\302\302\204" \ - "\204\206::<;;=\202::<\11""99;;;=::<;;=::<;;=::<```\363\363\363\226\377" \ - "\377\377\1\234\234\234\202::<\1;;=\202::<\2;;=\316\316\316\252\377\377" \ - "\377\4\316\316\316::<;;=99;\203::<\3\234\234\234\377\377\377\376\376" \ - "\376\204\377\377\377\7\373\377\376\377\376\377\377\377\377\376\377\377" \ - "\377\376\377\253\333\362[\265\351\203[\267\352\6Y\267\352[\267\350X\267" \ - "\345Y\270\346Y\270\350Y\267\352\220[\267\350\5X\267\347Y\270\350\325" \ - "\355\371\377\376\377\377\377\377\202\0>g\1\1>k\220\0=i\15\0>g\1>j\0>" \ - "i\0\77j\1>j\0=i\0\77j\0>j\0=i\1<h}\237\270\376\377\377\377\376\374\226" \ - "\377\377\377\3\376\376\376\377\377\377\316\316\316\204::<\3""99;;;=l" \ - "ln\240\377\377\377\5\234\234\234::<;;=::<;;=\202::<\1\235\235\237\241" \ - "\377\377\377\10\363\363\363FFF::<;;=::<;;=::<;;=\203::<\3;;=::<\265\265" \ - "\265\237\377\377\377\3\376\376\376\377\377\377kkm\202::<\1;;=\202::<" \ - "\4;;=\316\316\316\377\377\377\376\376\376\250\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377" \ - "\377\377\6\364\364\364::<99;;;=::<;;=\202::<\1\347\347\351\203\377\377" \ - "\377\1\376\376\376\244\377\377\377\4FFH;;=::<99;\203::<\1\220\220\222" \ - "\220\377\377\377\2\363\363\363``b\202::<\1;;=\203::<\1;;=\205::<\5__" \ - "_\222\222\222\234\234\234\316\316\316\317\317\317\202\316\316\316\7\301" \ - "\301\301\234\234\236\204\204\206__a;;=99;;;=\203::<\2;;=99;\203;;=\2" \ - "::<\265\265\265\204\377\377\377\1\376\376\376\235\377\377\377\5\376\376" \ - "\376\377\377\377\376\376\376kkm::<\202;;=\6::<;;=::<\234\234\236\377" \ - "\377\377\376\376\376\236\377\377\377\1\376\376\376\202\377\377\377\5" \ - "\301\301\303GGI;;=::<;;=\206::<\7;;=::<99;GGIwwy\235\235\235\300\300" \ - "\300\202\316\316\316\10\315\315\315\317\317\317\315\315\315\265\265\265" \ - "\234\234\234jjj<<>99;\203::<\1;;=\202::<\2""99;;;=\203::<\1\204\204\206" \ - "\206\377\377\377\1\376\376\376\221\377\377\377\10\234\234\234;;=::<9" \ - "9;;;=::<99;\316\316\316\252\377\377\377\4\317\317\317;;=88:;;=\202::" \ - "<\3;;=\234\234\234\376\376\376\205\377\377\377\1\377\375\377\202\377" \ - "\377\375\6\377\376\377\377\377\375\253\333\362Y\270\350X\267\347Z\266" \ - "\347\202Y\270\350\1[\267\350\202Z\266\347\2[\267\350Z\266\347\220[\267" \ - "\350\5[\267\352Z\266\351\327\355\372\377\375\376\377\376\377\202\1>j" \ - "\1\1>k\220\0>i\202\0=i\14\0\77k\0>i\0=i\1>j\0=i\0=j\0\77k\0=i\177\236" \ - "\263\377\377\377\376\377\377\375\376\377\224\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\316\316\316\203::<\202;;=\3""99;kkm\376\376\376\234" \ - "\377\377\377\1\376\376\376\202\377\377\377\1\233\233\233\202::<\7;;=" \ - "::<;;=::<\234\234\236\377\377\377\376\376\376\233\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\202\377\377\377\4\221\221\221;;=99;;;=\202" \ - "::<\202;;=\203::<\1SSU\203\377\377\377\1\376\376\376\233\377\377\377" \ - "\10\376\376\376\377\377\377\376\376\376kkm::<;;=::<;;=\202::<\1;;=\202" \ - "::<\1;;=\240::<\1kkk\207\377\377\377\1\376\376\376\203\377\377\377\3" \ - "\375\375\375\377\377\377\376\376\376\202\377\377\377\2\233\233\235::" \ - "<\202;;=\203::<\1xxz\251\377\377\377\1\235\235\237\202::<\1;;=\203::" \ - "<\3GGI\363\363\363\376\376\376\217\377\377\377\2\363\363\363yyy\204:" \ - ":<\1;;=\203::<\1;;=\206::<\1""99;\203::<\1;;=\203::<\6;;=99;;;=::<;;" \ - "=99;\202;;=\3""99;GGI\301\301\301\206\377\377\377\1\376\376\376\232\377" \ - "\377\377\1\376\376\376\204\377\377\377\1lln\202::<\1;;=\202::<\2;;=\234" \ - "\234\236\241\377\377\377\1\376\376\376\202\377\377\377\2\332\332\334" \ - "__a\211::<\1;;=\205::<\1;;=\202::<\1;;=\202::<\4;;=::<99;;;=\202::<\1" \ - ";;=\202::<\1;;=\203::<\2FFH\265\265\267\206\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\220\377\377\377\3\234\234\236::<;;=\203::<\2" \ - ";;=\316\316\316\252\377\377\377\2\315\315\31599;\203::<\5;;=::<\234\234" \ - "\234\377\377\377\376\376\376\205\377\377\377\7\377\377\375\375\377\376" \ - "\377\377\377\375\376\377\255\333\365Z\266\345[\267\350\202Y\270\350\1" \ - "X\267\347\202Y\267\352\3Z\266\351Z\266\347Y\270\350\221[\267\350\2[\267" \ - "\352\323\355\372\202\376\377\377\1\0=j\222\0=i\204\0>i\14\1\77h\0>g\0" \ - "=f\1>j\0\77i\0>i\177\237\266\377\377\375\377\376\375\377\377\377\376" \ - "\377\377\377\376\377\225\377\377\377\2\316\316\316::<\202;;=\202::<\4" \ - ";;=kkm\377\377\377\376\376\376\235\377\377\377\2\376\376\376\235\235" \ - "\235\202::<\1;;=\202::<\2;;=\234\234\236\242\377\377\377\3\346\346\346" \ - "::<;;=\210::<\2\235\235\237\376\376\376\234\377\377\377\1\376\376\376" \ - "\204\377\377\377\1lln\202::<\3;;=::<;;=\203::<\2;;=99;\240::<\1kkk\210" \ - "\377\377\377\11\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\377\377\377\376\376\376\364\364\366GGI\205::<\6;;=\316\316\316\377" \ - "\377\377\376\376\376\377\377\377\376\376\376\245\377\377\377\11\345\345" \ - "\345;;=::<;;=::<;;=::<;;=\234\234\236\222\377\377\377\7\234\234\234;" \ - ";=::<;;=99;;;=99;\203::<\1;;=\202::<\203;;=\2::<;;=\202::<\1;;=\202:" \ - ":<\1;;=\202::<\12;;=::<;;=99;::<``b\332\332\332\376\376\376\377\377\377" \ - "\376\376\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\376\376\376\232\377\377\377\5\376\376\376\377\377\377\376\376" \ - "\376kkm;;=\202::<\1;;=\202::<\1\234\234\236\236\377\377\377\1\376\376" \ - "\376\207\377\377\377\2\234\234\236;;=\202::<\1;;=\204::<\1;;=\211::<" \ - "\1;;=\202::<\1;;=\202::<\1;;=\202::<\1;;=\203::<\3;;=kkm\346\346\346" \ - "\203\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\221\377" \ - "\377\377\2\234\234\236;;=\202::<\1;;=\202::<\1\316\316\316\252\377\377" \ - "\377\4\316\316\316;;=99;;;=\203::<\1\234\234\234\210\377\377\377\7\376" \ - "\377\377\377\375\376\377\377\375\256\332\363Y\270\350Y\267\352[\267\352" \ - "\202[\267\350\5X\270\350X\270\352Y\267\352Y\270\350X\267\347\220[\267" \ - "\350\5X\267\347[\267\350\325\355\367\377\377\373\377\377\375\202\0\77" \ - "j\1\0>g\220\0>i\1\0\77j\203\0>i\202\0=i\6\1>j\0>i\0\77h\0>g\177\236\263" \ - "\377\377\375\203\377\377\377\1\377\376\377\222\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\316\316\316\203::<\1;;=\202::<\2kkm\376\376\376" \ - "\233\377\377\377\1\376\376\376\203\377\377\377\5\234\234\234::<;;=::" \ - "<;;=\202::<\1\234\234\236\235\377\377\377\202\376\376\376\202\377\377" \ - "\377\5\376\376\376\377\377\377xxz99;;;=\204::<\4;;=::<;;=\362\362\362" \ - "\237\377\377\377\5\376\376\376\377\377\377\376\376\376kkm;;=\207::<\2" \ - "99;;;=\240::<\1lll\205\377\377\377\1\376\376\376\203\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\4\265\265\267" \ - ";;=::<;;=\202::<\2;;=__a\205\377\377\377\1\376\376\376\245\377\377\377" \ - "\3\204\204\206::<;;=\204::<\2SSU\376\376\376\215\377\377\377\1\376\376" \ - "\376\204\377\377\377\2\316\316\316__a\206::<\1;;=\214::<\5;;=::<;;=:" \ - ":<;;=\203::<\2\234\234\234\363\363\363\204\377\377\377\1\376\376\376" \ - "\243\377\377\377\1lln\206::<\2\233\233\235\376\376\376\233\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\207\377\377\377\3\345\345" \ - "\345lln;;=\204::<\5;;=99;::<99;;;=\205::<\1;;=\203::<\3""99;;;=99;\206" \ - "::<\2TTV\265\265\265\234\377\377\377\10\234\234\234;;=::<;;=::<;;=::" \ - "<\316\316\316\252\377\377\377\1\315\315\315\206::<\4\235\235\235\376" \ - "\376\376\377\377\377\376\376\376\205\377\377\377\12\377\377\373\377\377" \ - "\377\377\377\375\267\340\366[\270\344Z\266\351[\267\352Z\266\351[\265" \ - "\347[\267\350\202Y\270\350\2\\\270\351Z\266\347\220[\267\350\10X\267" \ - "\347X\266\351\325\355\371\377\376\377\377\377\377\0\77k\0=h\3>j\220\0" \ - "\77j\16\1>j\0=i\1>j\0=i\0\77j\0>i\0=h\0\77j\0\77h\1<f\177\236\263\377" \ - "\377\375\376\376\377\376\377\377\225\377\377\377\202\376\376\376\2\317" \ - "\317\317::<\202;;=\1::<\202;;=\1kkm\235\377\377\377\1\376\376\376\202" \ - "\377\377\377\2\234\234\234;;=\205::<\2\233\233\235\376\376\376\232\377" \ - "\377\377\1\376\376\376\204\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\316\316\316\203::<\1;;=\204::<\3\204\204\206\377\377\377\376\376\376" \ - "\241\377\377\377\1lln\203::<\202;;=\203::<\1;;=\241::<\1kkk\206\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\206\377\377\377\1TTV\203:" \ - ":<\4""99;;;=99;\265\265\267\253\377\377\377\3\331\331\331;;=99;\204:" \ - ":<\2;;=\264\264\264\217\377\377\377\1\376\376\376\204\377\377\377\2\264" \ - "\264\266SSU\202::<\2""99;;;=\203::<\3;;=::<;;=\206::<\5;;=99;;;=::<;" \ - ";=\20299;\6\204\204\206\346\346\346\377\377\377\376\376\376\377\377\377" \ - "\376\376\376\203\377\377\377\202\376\376\376\202\377\377\377\1\376\376" \ - "\376\231\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \ - "\377\12lll::<;;=::<99;::<;;=\234\234\236\377\377\377\376\376\376\233" \ - "\377\377\377\1\375\375\375\213\377\377\377\4\316\316\316xxx;;=99;\204" \ - "::<\1;;=\202::<\1;;=\204::<\4;;=::<;;=99;\203::<\1;;=\202::<\2SSS\265" \ - "\265\265\210\377\377\377\3\376\376\376\377\377\377\376\376\376\223\377" \ - "\377\377\1\234\234\234\206::<\1\316\316\316\250\377\377\377\3\376\376" \ - "\376\377\377\377\315\315\315\202::<\7;;=::<;;=::<\234\234\234\377\377" \ - "\377\376\376\376\202\377\377\377\21\376\376\376\377\377\377\376\377\373" \ - "\377\377\377\376\377\377\376\377\375\377\376\377\353\366\374X\266\351" \ - "X\270\350W\267\347X\270\350X\267\347Z\266\347\\\270\347X\267\345Y\270" \ - "\350\221[\267\350\7Z\266\347[\267\350\327\355\372\377\375\377\377\377" \ - "\377\0>g\0\77h\221\0=i\1\0>g\202\1\77h\1\0=i\202\0>i\11\0\77j\0>g\0>" \ - "j\0\77m\336\347\354\376\377\377\377\376\377\376\377\377\377\377\375\222" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\316\316\316\202::<\1;;=" \ - "\203::<\2kkm\376\376\376\233\377\377\377\1\376\376\376\202\377\377\377" \ - "\3\376\376\376\234\234\234;;=\202::<\6""99;::<;;=\234\234\236\377\377" \ - "\377\376\376\376\237\377\377\377\1\376\376\376\202\377\377\377\1SSS\202" \ - ";;=\1""99;\204;;=\3\331\331\331\377\377\377\376\376\376\234\377\377\377" \ - "\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3lll::<;;=\202" \ - "::<\202;;=\203::<\1;;=\240::<\1kkk\204\377\377\377\1\376\376\376\211" \ - "\377\377\377\3\302\302\302;;;999\202::<\3;;=::<TTT\210\377\377\377\1" \ - "\376\376\376\244\377\377\377\2kkk;;=\202::<\203:::\1TTT\226\377\377\377" \ - "\3\301\301\301xxz;;=\202::<\1;;=\202::<\1;;=\202::<\5;;=::<;;=::<;;=" \ - "\202::<\5;;=99;SSU\235\235\237\347\347\351\204\377\377\377\1\376\376" \ - "\376\207\377\377\377\3\376\376\376\377\377\377\376\376\376\235\377\377" \ - "\377\10kkk:::::<999;;;:::;;;\233\233\233\236\377\377\377\1\376\376\376" \ - "\211\377\377\377\1\376\376\376\202\377\377\377\3\346\346\350\251\251" \ - "\253``b\202::<\3;;=::<;;=\202::<\1;;=\205::<\1;;=\203::<\5;;=FFH\204" \ - "\204\204\316\316\316\376\376\376\204\377\377\377\1\376\376\376\232\377" \ - "\377\377\1\234\234\234\202::<\5""99;;;=99;;;;\315\315\315\252\377\377" \ - "\377\3\316\316\316:::;;;\202:::\3;;;::<\234\234\234\206\377\377\377\1" \ - "\377\377\375\203\377\376\377\11\377\377\377\377\377\375\303\344\367W" \ - "\270\345^\266\344X\267\347Y\271\353Z\266\351\\\266\350\202Y\270\350\221" \ - "[\267\352\3[\267\350[\265\347\325\355\371\202\376\377\377\3\2=e\0>g\0" \ - "\77m\220\0=i\6\0\77j\0>i\0=h\0\77j\0=i\0\77j\202\0>g\2\1\77h\240\266" \ - "\304\204\377\377\377\2\376\376\376\377\377\375\223\377\377\377\14\376" \ - "\376\376\377\377\377\315\315\315;;=::<:::;;;:::;;;kkk\377\377\377\376" \ - "\376\376\233\377\377\377\1\376\376\376\202\377\377\377\10\235\235\235" \ - "99;::<999;;;:::;;;\233\233\233\234\377\377\377\1\376\376\376\207\377" \ - "\377\377\1\265\265\265\202::<\1;;=\203::<\1kkk\203\377\377\377\1\376" \ - "\376\376\240\377\377\377\2kkk:::\202::<\3;;=99;;;=\244::<\1kkk\205\377" \ - "\377\377\1\376\376\376\210\377\377\377\1\346\346\346\206\316\316\316" \ - "\3\332\332\332\377\377\377\377\377\375\253\377\377\377\2\346\346\346" \ - "\316\316\316\202\316\316\320\203\316\316\316\1\315\315\315\225\377\377" \ - "\377\202\376\376\376\202\377\377\377\4\316\316\320\234\234\236kkmSSU" \ - "\205::<\1;;=\203::<\5kkm\204\204\206\264\264\266\346\346\350\376\376" \ - "\376\214\377\377\377\1\376\376\376\202\377\377\377\202\376\376\376\231" \ - "\377\377\377\1\376\376\376\203\377\377\377\2\331\331\331\317\317\317" \ - "\205\316\316\316\1\347\347\347\243\377\377\377\1\376\376\376\211\377" \ - "\377\377\5\376\376\377\347\347\351\265\265\267\204\204\206lln\212::<" \ - "\4``bxxz\234\234\236\332\332\332\207\377\377\377\1\376\376\376\210\377" \ - "\377\377\1\376\376\376\222\377\377\377\1\346\346\346\203\316\316\320" \ - "\4\316\316\316\316\316\320\315\315\315\364\364\364\251\377\377\377\2" \ - "\376\376\376\364\364\364\205\316\316\316\2\316\316\320\346\346\346\210" \ - "\377\377\377\16\377\376\377\377\377\375\376\377\377\377\377\377\377\375" \ - "\377\326\354\371\241\326\366\206\310\352\200\312\357\202\312\362\204" \ - "\310\357\204\312\356\203\311\355\205\311\360\220\204\312\356\10\203\311" \ - "\355\201\311\361\342\360\371\376\377\377\377\377\375>n\222Bm\215@n\220" \ - "\220@n\217\3@l\217An\217Bo\220\202An\217\5@m\214Dm\213l\223\260\277\320" \ - "\332\376\377\377\202\377\377\377\1\377\377\375\202\377\377\377\1\376" \ - "\377\377\225\377\377\377\3\363\363\363\317\317\321\316\316\320\204\316" \ - "\316\316\1\332\332\332\240\377\377\377\1\346\346\346\202\316\316\320" \ - "\204\316\316\316\1\347\347\347\243\377\377\377\3\376\376\376\363\363" \ - "\363lln\202kkm\1lln\202kkm\1\301\301\301\240\377\377\377\1\376\376\376" \ - "\203\377\377\377\2\331\331\331\317\317\317\202\316\316\316\202\317\317" \ - "\317\245\316\316\316\2\332\332\332\376\376\376\351\377\377\377\5\332" \ - "\332\332\315\315\315\316\316\316\315\315\315\363\363\363\361\377\377" \ - "\377\202\316\316\316\1\317\317\317\202\316\316\316\2\315\315\315\363" \ - "\363\363\377\377\377\377\377\377\377\377\377\377\377\377\334\377\377" \ - "\377\1\376\376\376\375\377\377\377\1\376\376\376\377\377\377\377\377" \ - "\377\377\377\377\377\377\377\340\377\377\377\1\376\376\376\370\377\377" \ - "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\342" \ - "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \ - "\377\377\377\377\377\334\377\377\377\1\376\376\376\362\377\377\377\1" \ - "\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\346\377" \ - "\377\377\1\376\376\376\363\377\377\377\1\376\376\376\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\342\377\377\377\1\376\376\376\373\377" \ - "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \ - "\340\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377" \ - "\377\377\377\377\377\377\377\377\377\377\377\377\243\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\203\377\377\377\1\376\376\376\233\377" \ - "\377\377\1\376\376\376\205\377\377\377\1\376\376\376\214\377\377\377" \ - "\1\376\376\376\205\377\377\377\1\376\376\376\260\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\300\377\377\377\1\376\376\376\306\377\377" \ - "\377\1\376\376\376\233\377\377\377\4\376\377\377\376\376\376\377\376" \ - "\377\377\377\377\203\376\377\375\203\377\377\377\3\377\377\375\376\377" \ - "\375\376\377\377\265\377\377\377\4\377\377\375\377\376\377\376\377\377" \ - "\377\377\375\202\377\376\377\210\377\377\377\7\377\377\375\376\377\377" \ - "\377\377\377\375\377\376\376\377\377\377\376\377\376\377\377\211\377" \ - "\377\377\4\376\377\375\377\377\377\376\376\376\377\377\375\202\377\377" \ - "\377\2\377\377\375\376\376\376\220\377\377\377\1\376\377\375\202\377" \ - "\377\375\5\377\376\377\377\377\373\377\377\377\375\377\376\377\377\375" \ - "\210\377\377\377\1\377\376\377\202\377\377\375\202\377\377\377\3\376" \ - "\377\377\377\377\375\377\376\377\213\377\377\377\3\376\377\377\376\377" \ - "\375\377\377\375\203\377\377\377\203\376\377\375\4\377\377\377\377\376" \ - "\377\376\376\376\376\377\377\233\377\377\377\3\376\377\377\376\377\375" \ - "\377\377\375\203\377\377\377\203\376\377\375\4\377\377\377\377\376\377" \ - "\376\376\376\376\377\377\210\377\377\377\1\377\376\377\203\377\377\377" \ - "\4\376\377\377\377\377\375\377\376\377\376\377\373\211\377\377\377\4" \ - "\376\377\377\376\376\374\377\376\377\377\375\376\226\377\377\377\5\376" \ - "\377\377\375\377\374\377\377\375\376\375\377\377\377\375\210\377\377" \ - "\377\1\377\377\375\202\376\377\377\1\377\377\373\242\377\377\377\1\376" \ - "\376\376\212\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \ - "\237\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377" \ - "\377\377\1\376\376\376\204\377\377\377\202\376\376\376\257\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\246\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376\250" \ - "\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\236\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\230\377\377\377\4\377\377" \ - "\373\376\377\377\376\376\376\377\376\377\203\377\377\377\1\377\377\375" \ - "\202\377\377\377\1\377\376\377\202\377\377\375\3\377\377\377\377\377" \ - "\375\376\376\374\260\377\377\377\2\377\377\375\376\376\376\203\377\376" \ - "\377\214\377\377\377\7\376\377\377\377\376\377\377\377\375\377\377\377" \ - "\377\376\377\375\377\376\377\377\375\210\377\377\377\7\377\376\374\377" \ - "\377\375\377\376\377\377\377\375\376\376\376\377\377\377\376\376\376" \ - "\221\377\377\377\1\377\376\377\203\377\377\377\202\377\377\375\212\377" \ - "\377\377\2\377\377\375\377\377\377\202\377\377\375\214\377\377\377\3" \ - "\376\376\374\377\377\375\377\377\377\202\377\377\375\1\377\376\377\202" \ - "\377\377\377\1\377\377\375\203\377\377\377\4\377\376\377\376\376\376" \ - "\376\377\377\377\377\373\230\377\377\377\3\376\376\374\377\377\375\377" \ - "\377\377\202\377\377\375\1\377\376\377\202\377\377\377\1\377\377\375" \ - "\203\377\377\377\4\377\376\377\376\376\376\376\377\377\377\377\373\213" \ - "\377\377\377\1\377\376\374\214\377\377\377\2\377\377\375\377\376\377" \ - "\202\377\377\375\3\376\377\377\377\377\377\377\377\373\221\377\377\377" \ - "\3\376\377\375\376\377\377\377\376\377\204\377\377\377\1\377\377\375" \ - "\212\377\377\377\5\377\376\377\377\377\375\377\377\377\376\377\375\376" \ - "\377\373\243\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \ - "\204\377\377\377\1\376\376\376\242\377\377\377\1\376\376\376\205\377" \ - "\377\377\1\376\376\376\213\377\377\377\1\376\376\376\206\377\377\377" \ - "\1\376\376\376\263\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\270\377\377\377\1\376\376\376\312\377\377\377\1\376\376\376\234\377" \ - "\377\377\1\377\377\375\202\376\377\377\7\377\376\377\377\377\377\376" \ - "\377\377\377\376\377\377\377\375\377\377\377\376\377\377\202\377\376" \ - "\377\2\376\377\375\376\377\377\262\377\377\377\10\377\377\375\376\377" \ - "\377\377\376\377\377\377\373\377\377\377\377\376\377\376\377\375\377" \ - "\377\375\211\377\377\377\3\376\377\377\377\376\377\377\377\375\202\377" \ - "\377\377\2\376\377\377\376\376\376\210\377\377\377\202\377\376\377\4" \ - "\374\377\377\376\377\377\377\376\377\377\377\375\222\377\377\377\4\377" \ - "\376\375\376\377\377\377\377\377\376\377\377\202\377\376\377\202\377" \ - "\377\375\210\377\377\377\4\377\377\375\377\377\377\377\377\375\377\377" \ - "\377\202\377\376\377\2\377\377\377\376\377\377\212\377\377\377\2\376" \ - "\377\377\376\377\375\202\377\376\377\7\376\377\377\377\377\377\377\377" \ - "\375\377\376\377\376\377\377\377\377\377\377\376\377\202\376\377\377" \ - "\1\377\377\375\232\377\377\377\2\376\377\377\376\377\375\202\377\376" \ - "\377\7\376\377\377\377\377\377\377\377\375\377\376\377\376\377\377\377" \ - "\377\377\377\376\377\202\376\377\377\1\377\377\375\210\377\377\377\1" \ - "\377\377\375\202\377\377\377\4\377\377\375\377\376\377\377\377\377\376" \ - "\377\377\211\377\377\377\7\375\376\377\377\377\375\377\376\377\376\376" \ - "\377\376\377\375\375\377\376\377\377\375\222\377\377\377\6\376\377\377" \ - "\377\376\377\377\377\377\377\377\375\377\376\377\376\377\377\213\377" \ - "\377\377\202\377\376\377\3\377\377\375\376\377\377\376\377\375\236\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\203\377\377\377\2\376\376\376\377\377\377\202\376\376" \ - "\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\204" \ - "\377\377\377\1\376\376\376\235\377\377\377\1\376\376\376\217\377\377" \ - "\377\1\376\376\376\206\377\377\377\1\376\376\376\260\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\241\377\377\377\202\376\376\376\204" \ - "\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376\205\377\377" \ - "\377\1\376\376\376\246\377\377\377\1\376\376\376\233\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\234\377\377\377\15\376\376\376\377\377" \ - "\377\377\376\377\377\377\375\375\377\376\377\377\377\376\377\375\377" \ - "\377\377\375\376\377\377\377\377\377\377\375\376\377\377\377\377\377" \ - "\202\377\376\377\260\377\377\377\7\377\376\377\376\377\377\377\377\377" \ - "\376\377\377\377\377\377\377\377\375\376\377\377\212\377\377\377\1\376" \ - "\376\374\203\377\377\377\3\376\376\377\377\377\375\376\377\377\210\377" \ - "\377\377\10\376\377\377\377\376\377\374\377\373\376\377\373\377\376\377" \ - "\376\376\376\377\377\377\376\377\375\220\377\377\377\2\377\376\377\377" \ - "\377\377\202\377\377\375\202\377\377\377\2\376\376\374\376\377\377\210" \ - "\377\377\377\1\376\377\377\202\377\377\377\5\376\377\377\377\377\377" \ - "\376\376\376\377\377\377\376\377\375\210\377\377\377\202\377\376\377" \ - "\15\377\377\377\376\377\377\377\377\375\377\377\377\375\376\377\377\377" \ - "\377\376\377\375\377\377\377\375\377\376\377\377\375\377\376\377\377" \ - "\377\377\376\376\376\231\377\377\377\202\377\376\377\15\377\377\377\376" \ - "\377\377\377\377\375\377\377\377\375\376\377\377\377\377\376\377\375" \ - "\377\377\377\375\377\376\377\377\375\377\376\377\377\377\377\376\376" \ - "\376\211\377\377\377\4\377\376\377\377\377\377\376\377\375\376\377\377" \ - "\202\377\377\377\2\376\377\377\376\377\375\210\377\377\377\1\376\377" \ - "\375\202\376\376\376\202\377\377\377\2\377\377\375\375\376\377\221\377" \ - "\377\377\10\377\377\375\377\377\377\376\376\374\376\377\373\376\376\376" \ - "\377\376\377\376\377\377\377\377\375\210\377\377\377\6\376\376\376\377" \ - "\377\377\377\377\375\377\377\377\374\375\377\377\377\375\242\377\377" \ - "\377\1\376\376\376\214\377\377\377\1\376\376\376\204\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\235\377\377\377\1\376\376\376\203\377" \ - "\377\377\202\376\376\376\212\377\377\377\1\376\376\376\202\377\377\377" \ - "\202\376\376\376\264\377\377\377\5\376\376\376\377\377\377\376\376\376" \ - "\377\377\377\376\376\376\242\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\202\377\377\377\1\376\376\376\223\377\377\377\1\376\376\376" \ - "\244\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\233\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\234\377\377\377" \ - "\1\375\377\372\202\377\377\377\3\376\376\376\377\377\375\377\377\377" \ - "\202\376\377\377\204\377\377\377\4\376\377\377\377\377\377\377\376\377" \ - "\375\377\372\260\377\377\377\202\377\377\375\2\377\377\377\376\375\377" \ - "\202\377\377\377\1\375\377\376\212\377\377\377\6\377\377\375\377\377" \ - "\377\376\377\375\377\377\375\377\376\377\377\376\375\212\377\377\377" \ - "\1\377\376\377\202\377\377\377\4\377\375\376\377\377\377\377\377\373" \ - "\376\375\377\221\377\377\377\203\376\376\376\4\377\377\375\376\376\374" \ - "\377\376\377\376\376\374\210\377\377\377\5\377\376\377\377\377\375\377" \ - "\376\377\376\376\376\376\377\375\202\377\377\377\1\376\376\376\210\377" \ - "\377\377\4\375\377\372\377\376\377\377\377\377\376\377\377\204\377\377" \ - "\377\202\376\377\377\3\377\377\377\377\377\375\376\376\376\202\377\377" \ - "\377\1\375\377\372\230\377\377\377\4\375\377\372\377\376\377\377\377" \ - "\377\376\377\377\204\377\377\377\202\376\377\377\3\377\377\377\377\377" \ - "\375\376\376\376\202\377\377\377\1\375\377\372\210\377\377\377\3\376" \ - "\377\377\377\377\377\376\376\376\202\376\377\377\202\377\377\377\1\376" \ - "\377\375\210\377\377\377\7\376\376\377\377\377\375\376\377\375\376\376" \ - "\376\377\376\377\377\377\377\376\377\377\221\377\377\377\5\376\376\376" \ - "\376\377\377\377\377\377\375\375\375\377\376\377\202\377\377\377\1\377" \ - "\377\375\211\377\377\377\7\377\376\377\376\376\374\376\377\377\377\377" \ - "\377\377\376\377\377\377\375\377\377\373\233\377\377\377\1\376\376\376" \ - "\205\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\203\377" \ - "\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\204\377\377\377\1\376\376\376\237\377\377\377\1\376\376\376" \ - "\212\377\377\377\1\376\376\376\213\377\377\377\1\376\376\376\255\377" \ - "\377\377\1\376\376\376\247\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\224\377\377\377\1\376\376\376\247\377\377\377\1\376\376" \ - "\376\236\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\232" \ - "\377\377\377\10\377\376\377\377\377\375\377\377\377\376\377\377\376\376" \ - "\376\377\376\377\377\377\375\377\376\377\202\377\377\375\1\377\376\377" \ - "\202\377\377\377\3\377\376\377\377\375\376\377\376\377\260\377\377\377" \ - "\2\377\376\377\377\377\377\202\377\376\377\4\377\377\375\376\376\374" \ - "\377\375\377\377\376\377\210\377\377\377\3\376\376\374\377\376\377\376" \ - "\376\376\204\377\377\377\1\376\377\375\210\377\377\377\4\375\377\374" \ - "\377\377\377\377\375\376\377\376\377\203\377\377\377\1\377\377\375\220" \ - "\377\377\377\3\376\377\377\377\377\375\376\377\377\202\377\377\377\3" \ - "\377\376\377\373\377\377\376\377\377\211\377\377\377\202\376\377\375" \ - "\1\377\377\375\203\377\377\377\1\377\376\377\210\377\377\377\3\377\376" \ - "\377\377\375\376\377\376\377\202\377\377\377\1\377\376\377\202\377\377" \ - "\375\10\377\376\377\377\377\375\377\376\377\376\376\376\376\377\377\377" \ - "\377\377\377\377\375\377\376\377\230\377\377\377\3\377\376\377\377\375" \ - "\376\377\376\377\202\377\377\377\1\377\376\377\202\377\377\375\10\377" \ - "\376\377\377\377\375\377\376\377\376\376\376\376\377\377\377\377\377" \ - "\377\377\375\377\376\377\210\377\377\377\2\377\377\375\375\376\371\202" \ - "\377\376\377\3\377\377\377\377\377\375\377\376\377\212\377\377\377\1" \ - "\377\375\376\202\377\377\377\4\377\377\375\376\376\376\376\377\377\377" \ - "\376\377\220\377\377\377\2\376\377\377\376\376\377\202\377\377\377\2" \ - "\376\377\375\375\377\374\212\377\377\377\10\373\377\376\377\377\377\377" \ - "\377\375\376\376\374\377\377\375\377\376\377\377\377\377\376\377\377" \ - "\235\377\377\377\1\376\376\376\202\377\377\377\7\316\316\320\250\250" \ - "\252\221\221\223llnjjlGGI99;\204::<\7TTVkkmyy{\234\234\236\265\265\267" \ - "\332\332\332\376\376\376\237\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\222\377\377\377\1\376\376\376\205\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\255\377\377\377\1\376\376\376\246\377\377\377" \ - "\1\376\376\376\227\377\377\377\1\376\376\376\252\377\377\377\1\376\376" \ - "\376\233\377\377\377\1\376\376\376\236\377\377\377\17\305\344\240\303" \ - "\342\237\304\343\240\304\343\237\307\342\237\303\342\236\305\342\240" \ - "\303\342\236\305\342\237\304\343\240\304\343\237\304\341\237\304\343" \ - "\237\323\352\266\376\377\375\250\377\377\377\210\305\342\240\10\305\342" \ - "\237\303\342\234\304\343\237\306\341\236\304\343\240\322\352\270\376" \ - "\377\377\375\377\376\211\377\377\377\5\377\376\377\376\376\376\377\376" \ - "\377\360\371\350\305\342\237\202\304\341\236\210\305\342\240\5\304\341" \ - "\236\327\356\302\376\377\377\377\377\373\376\377\375\202\377\377\375" \ - "\1\377\376\377\220\377\377\377\202\377\377\375\2\376\377\377\377\377" \ - "\377\202\377\377\375\2\304\343\237\306\341\236\210\305\342\240\5\307" \ - "\342\237\303\342\236\304\341\236\341\357\314\377\377\375\213\377\377" \ - "\377\17\376\377\375\323\352\266\304\343\237\304\341\237\304\343\237\304" \ - "\343\240\305\342\237\303\342\236\305\342\240\303\342\236\307\342\237" \ - "\304\343\237\304\343\240\303\342\237\305\344\240\231\377\377\377\17\376" \ - "\377\375\323\352\266\304\343\237\304\341\237\304\343\237\304\343\240" \ - "\305\342\237\303\342\236\305\342\240\303\342\236\307\342\237\304\343" \ - "\237\304\343\240\303\342\237\305\344\240\211\377\377\377\10\360\367\347" \ - "\306\343\241\303\342\237\307\342\237\303\342\237\304\343\235\307\341" \ - "\240\304\343\240\210\305\342\240\7\315\347\252\376\377\375\377\375\376" \ - "\376\377\375\377\377\377\377\377\373\376\377\377\221\377\377\377\10\377" \ - "\377\375\376\377\375\323\352\266\307\341\240\307\342\237\305\342\240" \ - "\307\340\236\306\341\236\210\305\342\240\4\304\343\237\311\335\236\377" \ - "\377\377\377\376\377\203\377\377\377\1\376\377\377\230\377\377\377\1" \ - "\376\376\376\203\377\377\377\3\346\346\346\251\251\251jjl\202;;=\210" \ - "::<\1;;=\202::<\2;;=99;\203::<\5FFHxxx\265\265\265\363\363\363\376\376" \ - "\376\234\377\377\377\2\376\376\376\346\346\346\214\234\234\234\1\235" \ - "\235\235\203\234\234\234\3\235\235\235\234\234\234\250\250\250\203\316" \ - "\316\316\1\346\346\346\263\377\377\377\202\250\250\250\245\377\377\377" \ - "\1\316\316\316\222\234\234\234\1\302\302\302\203\316\316\316\1\363\363" \ - "\363\247\377\377\377\3\316\316\316\234\234\234\235\235\235\240\234\234" \ - "\234\1\316\316\316\231\377\377\377\6\215\305>\216\306A\215\305@\213\310" \ - "=\215\305>\212\307>\202\214\305@\6\214\306>\212\306@\214\306<\215\304" \ - "B\214\306>\252\323m\251\377\377\377\210\214\306>\10\215\305@\215\307" \ - "\77\212\307>\217\304@\214\305@\251\323m\377\377\377\377\377\375\213\377" \ - "\377\377\5\377\375\377\341\363\315\215\305>\212\307>\215\305@\210\214" \ - "\306>\6\215\306A\220\305\77\350\365\333\377\377\377\376\377\377\377\376" \ - "\377\202\376\377\377\225\377\377\377\3\377\376\377\214\306>\215\306A" \ - "\210\214\306>\6\215\305>\212\310\77\215\305@\307\341\240\376\377\377" \ - "\377\376\377\213\377\377\377\6\252\323m\214\306>\215\304B\214\306<\212" \ - "\306@\214\306>\202\214\305@\6\212\307>\215\305>\213\310=\215\305@\216" \ - "\306A\215\305>\232\377\377\377\6\252\323m\214\306>\215\304B\214\306<" \ - "\212\306@\214\306>\202\214\305@\6\212\307>\215\305>\213\310=\215\305" \ - "@\216\306A\215\305>\211\377\377\377\4\376\377\377\242\321a\213\307A\215" \ - "\305>\202\214\306>\2\215\305@\215\307\77\210\214\306>\7\215\305<\332" \ - "\354\304\377\377\377\376\377\375\376\376\376\377\376\377\376\376\376" \ - "\221\377\377\377\10\377\376\377\342\362\316\215\305>\213\310\77\212\305" \ - "D\212\307<\216\306\77\211\307>\211\214\306>\4\304\343\240\373\377\376" \ - "\377\377\377\375\377\376\202\377\377\377\1\377\377\375\225\377\377\377" \ - "\1\376\376\376\204\377\377\377\6\265\265\267__a99;;;=::<;;=\202::<\1" \ - ";;=\202::<\1;;=\202::<\1;;=\203::<\1;;=\203::<\3;;=::<99;\202::<\2xx" \ - "z\301\301\301\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\206\377\377\377\1\376\376\376\217\377\377\377\1\316\316\316\205" \ - "::<\202;;=\221::<\4TTVwwy\250\250\252\346\346\350\255\377\377\377\1\316" \ - "\316\320\202::<\1\316\316\316\244\377\377\377\1\234\234\236\204::<\1" \ - ";;=\205::<\3;;=::<;;=\206::<\1;;=\204::<\6SSUkkm\204\204\206\250\250" \ - "\250\316\316\316\376\376\376\206\377\377\377\1\376\376\376\231\377\377" \ - "\377\1\234\234\234\206::<\3;;=::<;;=\222::<\1;;=\204::<\3;;=::<\234\234" \ - "\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \ - "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>" \ - "\15\212\306@\215\307\77\233\316W\365\374\364\377\376\375\376\377\377" \ - "\377\376\377\377\377\375\377\377\377\377\377\375\376\376\376\377\377" \ - "\377\376\376\374\202\377\377\377\1\376\376\376\216\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\212\377\377\377\7\350\364\334\215\305>\212\307" \ - "<\214\305@\215\304B\215\305@\213\310\77\210\214\306>\10\214\305@\225" \ - "\311J\370\373\362\377\376\377\376\377\377\377\377\375\377\377\377\376" \ - "\377\377\210\377\377\377\40\376\377\377\376\377\375\377\376\377\377\377" \ - "\377\375\376\377\377\377\375\377\376\377\376\377\377\370\373\364\233" \ - "\314W\215\307\77\214\304=\212\306@\215\307\77\213\305=\215\307\77\214" \ - "\306>\217\304@\215\306A\212\307>\214\306<\215\306A\214\306>\211\307@" \ - "\242\321a\377\377\377\377\376\377\376\377\377\377\376\377\377\377\377" \ - "\376\377\377\377\376\377\223\377\377\377\7\376\376\376\377\377\377\376" \ - "\376\376\377\377\377\363\363\365\234\234\236FFH\202::<\10;;=99;;;=::" \ - "<;;=::<99;;;=\203::<\1;;=\203::<\2;;=99;\204::<\11""99;;;=::<;;=::<;" \ - ";=TTV\265\265\265\363\363\363\203\377\377\377\1\376\376\376\207\377\377" \ - "\377\1\376\376\376\215\377\377\377\1\316\316\316\205::<\3;;=::<;;=\202" \ - "::<\1;;=\214::<\3;;=99;;;=\202::<\4lln\316\316\316\376\376\376\377\377" \ - "\377\202\376\376\376\246\377\377\377\2\376\376\376xxz\202::<\2xxx\376" \ - "\376\376\243\377\377\377\1\234\234\236\204::<\202;;=\205::<\1;;=\204" \ - "::<\1;;=\202::<\1""99;\206::<\1;;=\202::<\6;;=kkk\250\250\250\346\346" \ - "\346\377\377\377\376\376\376\205\377\377\377\1\376\376\376\225\377\377" \ - "\377\1\234\234\234\204::<\1;;=\202::<\4;;=::<99;;;=\225::<\3;;=::<\234" \ - "\234\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4" \ - "\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250" \ - "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306" \ - ">\4\215\306A\213\304\77\215\305@\262\327x\202\377\377\377\1\376\377\375" \ - "\203\377\377\375\204\377\377\377\1\376\376\376\217\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\212\377\377\377\7\376\376\376\305\342\237\212" \ - "\307>\214\306>\212\307<\214\306>\212\307>\210\214\306>\3\214\306<\215" \ - "\306A\300\337\221\202\377\377\377\3\377\376\377\376\376\376\377\377\375" \ - "\210\377\377\377\1\377\375\377\202\377\377\377\2\376\376\377\376\377" \ - "\375\202\377\376\377\30\377\377\377\277\340\221\215\306A\213\305=\215" \ - "\305>\212\306B\214\306>\216\306\77\214\306<\212\307>\215\307=\213\305" \ - ";\215\307\77\216\305C\214\306>\214\305@\216\306\77\347\365\333\377\376" \ - "\377\377\377\375\376\377\377\377\376\374\377\377\377\377\377\375\222" \ - "\377\377\377\1\376\376\376\204\377\377\377\12\265\265\267FFH;;=::<;;" \ - "=99;::<;;=::<;;=\202::<\4<<>99;::<;;=\202::<\1;;=\203::<\1<<>\204::<" \ - "\5<<>99;;;=99;;;=\202::<\4:::SSS\266\266\266\376\376\376\203\377\377" \ - "\377\1\376\376\376\204\377\377\377\1\376\376\376\216\377\377\377\1\316" \ - "\316\316\204::<\3;;=::<;;=\204::<\1;;=\214::<\1;;=\202::<\1;;=\202::" \ - "<\2yyy\363\363\363\202\377\377\377\1\376\376\376\245\377\377\377\3\346" \ - "\346\346::<;;=\202::<\1\347\347\347\202\377\377\377\1\376\376\376\240" \ - "\377\377\377\1\234\234\236\203::<\4;;=99;::<;;=\202::<\7;;=::<;;=99;" \ - ";;=::<;;=\203::<\202;;=\210::<\1""99;\202::<\4;;=xxz\317\317\317\376" \ - "\376\376\202\377\377\377\1\376\376\376\227\377\377\377\1\234\234\234" \ - "\204::<\1""99;\203;;=\224::<\1;;=\204::<\2<<>\234\234\236\231\377\377" \ - "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \ - "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \ - "\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\10\215\305>\214\306" \ - ">\213\307A\214\306>\315\345\253\377\377\375\377\376\377\376\377\377\226" \ - "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \ - "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \ - "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \ - "\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\7\377\377" \ - "\375\377\376\377\376\376\376\241\321a\212\307>\211\305\77\215\306A\211" \ - "\214\306>\4\213\310\77\214\305@\213\305=\342\361\320\202\377\376\377" \ - "\2\377\377\375\377\376\377\210\377\377\377\1\377\376\377\202\377\377" \ - "\377\30\377\377\375\376\377\377\377\377\375\376\377\377\351\366\334\214" \ - "\305B\211\306;\215\307\77\214\306>\212\306@\215\305>\215\305@\212\307" \ - ">\214\305@\212\306B\214\306>\213\305=\213\310\77\215\305>\215\307\77" \ - "\314\345\253\377\375\377\377\376\374\376\377\377\203\377\377\377\1\377" \ - "\376\374\225\377\377\377\2\345\345\345kkm\205::<\202;;=\203::<\1;;=\203" \ - "::<\1;;=\202::<\202;;=\202::<\1;;=\210::<\2;;=99;\205::<\2```\331\331" \ - "\331\211\377\377\377\1\376\376\376\214\377\377\377\1\316\316\316\206" \ - "::<\5""99;::<;;=::<99;\212::<\1;;=\202::<\1;;=\204::<\4;;=::<FFF\316" \ - "\316\316\247\377\377\377\3\205\205\207;;=99;\202::<\1\204\204\206\203" \ - "\377\377\377\1\376\376\376\237\377\377\377\1\234\234\236\205::<\1;;=" \ - "\204::<\1""99;\202;;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\1;;=\204:" \ - ":<\1;;=\205::<\2jjl\316\316\316\203\377\377\377\1\376\376\376\225\377" \ - "\377\377\1\234\234\234\204::<\1;;=\202::<\3;;=::<;;=\222::<\7;;=::<;" \ - ";=::<;;=::<\234\234\236\231\377\377\377\3\214\305@\214\306>\214\305@" \ - "\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215" \ - "\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214" \ - "\305@\210\214\306>\10\215\305@\212\307>\214\305@\215\306A\214\305@\352" \ - "\364\334\376\376\377\377\377\373\202\377\377\377\3\376\376\376\377\377" \ - "\377\377\377\375\202\377\377\377\1\376\376\374\216\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\211\377\377\377\1\376\377\377\202\377\377\375" \ - "\5\347\364\332\215\307\77\215\306C\214\307;\216\306\77\210\214\306>\10" \ - "\214\305@\214\305D\215\307\77\233\314V\371\374\363\376\377\377\377\377" \ - "\377\377\377\375\210\377\377\377\20\375\377\374\377\376\377\376\376\377" \ - "\376\377\377\377\376\377\376\377\375\376\377\377\244\317d\212\307>\215" \ - "\306A\215\305@\214\305@\211\306=\215\307=\215\306A\214\305@\204\214\306" \ - ">\14\211\305A\212\307>\251\324k\377\376\377\377\375\376\376\377\377\377" \ - "\377\377\377\377\375\377\377\377\377\377\375\377\377\377\377\377\375" \ - "\217\377\377\377\1\376\376\376\203\377\377\377\2\265\265\267FFH\205:" \ - ":<\1;;=\203::<\202;;=\7:::TTT\203\203\203\235\235\235\316\316\316\332" \ - "\332\332\377\377\377\202\376\376\376\202\377\377\377\5\316\316\316\317" \ - "\317\317\234\234\234yyyFFF\202::<\1;;=\202::<\3""99;;;=99;\204::<\2;" \ - ";=\233\233\233\206\377\377\377\1\376\376\376\216\377\377\377\1\316\316" \ - "\316\204::<\1;;=\205::<\1;;=\212::<\3""99;::<;;=\202::<\2;;=99;\204:" \ - ":<\2;;=\265\265\265\245\377\377\377\4\346\346\346::<99;;;=\202::<\4""9" \ - "9;\347\347\347\377\377\377\376\376\376\240\377\377\377\1\234\234\236" \ - "\205::<\1;;=\203::<\202;;=\1""99;\203;;=\2::<;;=\203::<\1;;=\202::<\2" \ - ";;=::<\202;;=\7::<;;=99;::<;;=99;;;=\202::<\3;;=xxx\362\362\362\227\377" \ - "\377\377\1\234\234\234\205::<\202;;=\4::<;;=::<;;=\223::<\2;;=99;\202" \ - ";;=\1\234\234\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \ - "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \ - ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \ - "\214\306>\12\212\307>\215\306A\214\305@\215\307\77\213\306:\226\312N" \ - "\372\374\361\375\376\377\377\377\375\377\377\373\224\377\377\377\213" \ - "\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p" \ - "\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \ - "\3\214\305@\214\306>\214\305@\211\377\377\377\10\376\377\377\376\376" \ - "\377\376\377\377\377\375\376\307\342\237\214\306<\215\306A\214\305@\210" \ - "\214\306>\5\215\307\77\213\305=\216\306A\213\310\77\277\337\223\202\377" \ - "\377\375\1\377\376\377\210\377\377\377\14\376\377\375\376\376\376\377" \ - "\376\377\377\377\375\377\376\377\377\377\377\303\342\236\215\307\77\216" \ - "\306A\215\305>\214\306<\215\306A\203\214\306>\20\215\307\77\212\307>" \ - "\215\305@\216\306\77\214\305@\216\307<\223\312K\356\372\346\377\377\377" \ - "\376\377\377\375\377\376\377\377\377\377\376\377\377\377\375\377\377" \ - "\377\377\377\375\216\377\377\377\1\376\376\376\203\377\377\377\2\375" \ - "\375\375\205\205\207\202::<\202;;=\3::<;;=::<\202;;=\6::<:::SSS\250\250" \ - "\250\346\346\346\376\376\376\216\377\377\377\3\332\332\332\220\220\220" \ - "SSS\202::<\4;;=99;::<;;=\202::<\1""99;\202;;=\2__a\332\332\334\223\377" \ - "\377\377\1\316\316\316\204::<\6;;=RRT\235\235\237\235\235\235\233\233" \ - "\233\234\234\234\212\234\234\236\5xxzkkm__a99;;;=\204::<\202;;=\1""9" \ - "9;\202::<\1\316\316\316\244\377\377\377\4\204\204\206;;=::<;;=\202::" \ - "<\2;;=\220\220\222\203\377\377\377\1\376\376\376\236\377\377\377\1\234" \ - "\234\236\203::<\3;;=::<kkm\203\234\234\236\3\233\233\235\234\234\236" \ - "\235\235\237\204\234\234\236\2xxzlln\202kkm\1FFH\202;;=\2""99;;;=\202" \ - "::<\3""99;::<;;=\202::<\1;;=\205::<\3GGI\301\301\301\376\376\376\225" \ - "\377\377\377\1\234\234\234\205::<\5lln\234\234\236\233\233\233\235\235" \ - "\235\234\234\234\224\234\234\236\5\234\234\234\235\235\235\233\233\233" \ - "\234\234\234\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305" \ - "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \ - "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \ - "\214\305@\210\214\306>\7\212\306@\214\306<\217\307@\214\304\77\214\311" \ - ">\214\306>\251\323m\202\376\377\377\4\376\376\374\377\377\375\377\377" \ - "\377\376\376\376\202\377\377\377\1\376\376\376\216\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\212\377\377\377\7\377\377\375\377\376\377\376" \ - "\377\377\377\376\377\251\323o\211\307>\214\305@\210\214\306>\7\212\307" \ - ">\215\305>\214\305@\214\306>\215\307\77\347\365\334\377\376\377\211\377" \ - "\377\377\2\377\376\377\375\377\374\203\377\376\377\15\352\364\333\212" \ - "\306@\215\306A\214\306>\215\307\77\213\310\77\214\306>\216\306A\215\306" \ - "A\214\306<\212\307>\213\310=\212\307>\202\214\305@\4\214\306>\314\345" \ - "\253\377\376\377\376\377\377\202\377\377\375\6\377\376\377\375\376\377" \ - "\377\377\377\377\376\377\376\377\375\377\376\377\217\377\377\377\3\376" \ - "\376\376\362\362\362lln\20299;\1;;=\204::<\202;;=\6::<\204\204\204\317" \ - "\317\317\376\376\376\377\377\377\376\376\376\206\377\377\377\1\376\376" \ - "\376\213\377\377\377\2\301\301\301kkm\211::<\6;;=FFH\301\301\301\376" \ - "\376\376\377\377\377\376\376\376\217\377\377\377\1\316\316\316\204::" \ - "<\3;;=kkm\376\376\376\221\377\377\377\3\316\316\316\204\204\204FFF\202" \ - "::<\1;;=\202::<\202;;=\2FFH\363\363\363\242\377\377\377\5\364\364\364" \ - "::<;;=99;;;=\203::<\3GGI\363\363\363\376\376\376\240\377\377\377\1\234" \ - "\234\236\205::<\1\234\234\236\210\377\377\377\1\376\376\376\204\377\377" \ - "\377\1\376\376\376\202\377\377\377\6\362\362\362\316\316\316\265\265" \ - "\265\234\234\234kkmFFH\202::<\2;;=99;\205::<\1;;=\202::<\1\221\221\221" \ - "\225\377\377\377\1\234\234\234\205::<\1\234\234\236\202\377\377\377\1" \ - "\376\376\376\225\377\377\377\1\375\375\375\235\377\377\377\3\214\305" \ - "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \ - "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \ - "\202\214\306>\1\214\305@\210\214\306>\4\215\307\77\214\306>\214\304\77" \ - "\214\306>\202\214\305@\6\215\307\77\307\341\240\376\377\375\376\377\377" \ - "\376\376\374\377\377\373\202\377\377\377\202\377\377\375\216\377\377" \ - "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \ - "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \ - "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\212\377\377\377\7\377\376\377\376\376" \ - "\377\377\377\377\376\376\377\361\372\347\222\312K\215\305>\210\214\306" \ - ">\10\214\305@\215\306A\214\305@\214\306<\213\304A\243\322b\376\376\374" \ - "\376\377\375\211\377\377\377\24\377\377\373\377\377\377\376\377\377\377" \ - "\377\375\242\320c\215\307=\214\306>\213\310\77\213\304A\212\306@\215" \ - "\307\77\215\305@\214\306>\215\307\77\212\306@\215\305>\215\307\77\213" \ - "\310\77\213\306:\253\325q\202\377\377\377\11\377\377\375\377\376\377" \ - "\377\377\377\377\377\375\376\377\375\377\377\375\377\375\377\376\377" \ - "\377\377\377\375\214\377\377\377\7\376\376\376\377\377\377\376\376\376" \ - "\363\363\363__a::<;;=\203::<\202;;=\202::<\4xxz\347\347\351\377\377\377" \ - "\376\376\376\210\377\377\377\1\376\376\376\204\377\377\377\2\376\376" \ - "\376\377\377\377\203\376\376\376\205\377\377\377\2\316\316\320kkm\202" \ - "::<\3;;=::<;;=\202::<\202;;=\2:::\250\250\250\202\377\377\377\1\376\376" \ - "\376\216\377\377\377\1\316\316\316\205::<\1kkm\203\377\377\377\1\376" \ - "\376\376\215\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363" \ - "xxx::<\202;;=\203::<\2;;=xxz\242\377\377\377\1\234\234\234\202::<\1;" \ - ";=\202::<\1;;=\202::<\1\234\234\234\241\377\377\377\1\234\234\236\202" \ - "::<\10;;=::<;;=\234\234\236\377\377\377\376\376\376\377\377\377\376\376" \ - "\376\216\377\377\377\1\376\376\376\203\377\377\377\3\332\332\332\221" \ - "\221\223FFH\205::<\2;;=::<\202;;=\2::<\204\204\204\224\377\377\377\1" \ - "\234\234\234\205::<\3\234\234\236\377\377\377\376\376\376\264\377\377" \ - "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \ - "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \ - "\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\5\216\306\77\212" \ - "\307>\215\307=\212\306@\214\306>\202\215\305>\5\215\305@\345\356\317" \ - "\376\377\375\376\377\377\377\377\375\202\377\377\377\1\377\377\375\217" \ - "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \ - "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \ - "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \ - "\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\4\376\377" \ - "\377\377\377\377\377\377\375\376\377\377\202\377\377\377\2\315\347\252" \ - "\212\306@\210\214\306>\10\216\306A\212\306@\212\307>\215\305<\213\310" \ - "\77\215\305>\307\341\240\376\377\377\212\377\377\377\10\375\377\374\377" \ - "\377\377\305\342\237\215\305@\212\306@\216\306\77\215\307=\215\305>\202" \ - "\214\306>\24\213\307A\213\310=\215\304B\214\306>\212\306@\215\304B\212" \ - "\307>\225\311K\370\373\362\377\377\377\376\377\375\377\377\375\377\377" \ - "\377\374\377\375\376\376\376\377\377\377\377\377\375\377\376\377\376" \ - "\377\377\377\377\375\211\377\377\377\1\376\376\376\205\377\377\377\1" \ - "___\204::<\1;;=\203::<\2SSS\316\316\316\235\377\377\377\2\317\317\317" \ - "``b\207::<\3;;=::<\204\204\206\220\377\377\377\1\316\316\316\205::<\1" \ - "kkm\226\377\377\377\3\204\204\206::<;;=\205::<\1\316\316\316\232\377" \ - "\377\377\1\376\376\376\205\377\377\377\2\364\364\364FFF\202;;=\202::" \ - "<\6;;=99;;;=::<FFH\363\363\363\240\377\377\377\1\234\234\236\205::<\1" \ - "\234\234\234\226\377\377\377\1\376\376\376\202\377\377\377\3\265\265" \ - "\265RRR:::\202::<\1;;=\202::<\4;;=::<;;=\204\204\204\203\377\377\377" \ - "\1\376\376\376\217\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \ - "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \ - "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \ - "\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\2\222\313" \ - "J\366\373\364\202\377\376\377\4\377\377\373\376\376\374\376\377\377\377" \ - "\376\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \ - "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \ - "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \ - ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377" \ - "-\377\377\375\376\377\377\377\377\377\376\376\374\376\377\377\377\376" \ - "\377\376\377\377\252\324p\212\306@\215\305>\212\307<\215\305@\215\305" \ - "<\214\305B\215\305@\214\306<\212\307>\215\305>\214\306>\211\306=\215" \ - "\305>\212\307>\214\306<\350\364\334\374\377\377\377\376\377\376\376\376" \ - "\374\377\375\377\377\377\376\377\375\377\377\375\377\376\377\377\377" \ - "\375\377\377\377\377\376\377\357\367\350\223\312K\213\310\77\215\305" \ - ">\214\306>\215\305>\213\310\77\212\306@\214\306>\215\305@\202\214\306" \ - ">\10\214\305@\216\306=\212\307>\215\305>\333\355\303\376\376\374\377" \ - "\377\377\377\377\375\223\377\377\377\1\376\376\376\203\377\377\377\1" \ - "\203\203\203\206::<\4;;=::<\204\204\206\363\363\363\230\377\377\377\1" \ - "\376\376\376\207\377\377\377\1\235\235\237\202::<\1;;=\203::<\5;;=99" \ - ";;;=\204\204\204\376\376\376\216\377\377\377\1\316\316\316\205::<\1k" \ - "km\227\377\377\377\12\204\204\206::<;;=::<99;;;=::<\204\204\204\377\377" \ - "\377\376\376\376\232\377\377\377\1\376\376\376\203\377\377\377\2\234" \ - "\234\234;;=\203::<\1;;=\204::<\3<<>\250\250\250\376\376\376\237\377\377" \ - "\377\1\234\234\236\205::<\1\234\234\234\231\377\377\377\10\376\376\376" \ - "\377\377\377\265\265\265FFH::<;;=::<;;=\203::<\2;;=\204\204\204\222\377" \ - "\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305" \ - "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \ - "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \ - "\202\214\306>\1\214\305@\220\214\306>\4\216\306\77\250\322n\376\377\375" \ - "\376\377\373\222\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \ - "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \ - "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377" \ - "\377\13\376\376\377\376\377\377\377\376\377\376\376\374\374\377\377\377" \ - "\377\375\377\376\377\356\372\346\225\311K\214\306>\213\310=\203\214\306" \ - ">\2\213\310\77\214\306>\202\214\305@\7\214\306<\213\307A\214\304\77\214" \ - "\305B\212\307>\244\317d\377\376\377\202\377\377\377\1\377\375\377\202" \ - "\377\377\377\25\376\377\377\377\376\377\377\377\377\374\377\375\376\376" \ - "\374\253\324n\214\306<\215\307\77\215\305>\211\307@\216\305C\214\305" \ - "@\215\307\77\214\305@\214\306<\212\307<\211\306=\214\306>\214\305@\213" \ - "\307A\263\327}\202\376\377\377\3\377\377\377\377\375\376\377\377\375" \ - "\221\377\377\377\1\376\376\376\203\377\377\377\1\250\250\250\204::<\1" \ - ";;=\202::<\2;;=\264\264\264\202\377\377\377\1\376\376\376\232\377\377" \ - "\377\1\376\376\376\205\377\377\377\2\332\332\332SSS\202::<\1;;=\204:" \ - ":<\4xxx\364\364\364\377\377\377\376\376\376\214\377\377\377\1\316\316" \ - "\316\205::<\1kkm\227\377\377\377\2\363\363\363SSU\202::<\4;;=99;::<;" \ - ";;\202\377\377\377\1\376\376\376\226\377\377\377\1\376\376\376\204\377" \ - "\377\377\11\376\376\376\363\363\363FFH99;;;=::<;;=99;;;=\203::<\4""9" \ - "9;SSU\377\377\377\376\376\376\236\377\377\377\1\234\234\236\205::<\1" \ - "\234\234\234\225\377\377\377\1\376\376\376\204\377\377\377\10\376\376" \ - "\376\377\377\377\363\363\363yyy::<;;=99;;;=\204::<\1\266\266\266\221" \ - "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \ - "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \ - "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \ - "\320\202\214\306>\1\214\305@\220\214\306>\4\214\306<\213\307A\275\335" \ - "\222\376\377\377\203\377\377\377\1\377\377\375\216\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\211\377\377\377\4\377\376\377\376\376\377\377" \ - "\377\377\377\377\375\202\376\377\377\5\377\375\376\377\376\377\315\346" \ - "\255\212\307>\214\305@\202\215\306A\22\214\305@\212\307<\214\305B\214" \ - "\306>\213\307A\214\306>\213\305=\214\306>\215\305>\213\307A\211\310<" \ - "\313\347\254\377\377\375\377\375\377\376\377\377\376\377\373\376\377" \ - "\377\377\376\377\202\376\377\377\10\377\377\377\315\346\254\212\307>" \ - "\212\306@\215\306A\216\306A\212\307>\214\306<\202\215\306A\10\215\306" \ - "C\214\305B\215\307\77\214\306<\214\305@\213\310<\222\310L\372\373\363" \ - "\225\377\377\377\1\376\376\376\202\377\377\377\6\376\376\376\333\333" \ - "\333::<;;=::<;;=\202::<\3;;=FFH\315\315\315\205\377\377\377\1\376\376" \ - "\376\225\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\202" \ - "\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363xxx\204::<\2" \ - ";;=\203\203\203\220\377\377\377\1\316\316\316\205::<\1kkm\230\377\377" \ - "\377\3\266\266\27099;;;=\204::<\1\316\316\316\230\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\202\377\377\377\3\265\265\267::<;" \ - ";=\204::<\202;;=\202::<\202;;=\1\265\265\265\237\377\377\377\1\234\234" \ - "\236\205::<\1\234\234\234\236\377\377\377\5\234\234\234::<;;=::<;;=\202" \ - "::<\3;;=FFH\332\332\332\220\377\377\377\1\234\234\234\205::<\1\234\234" \ - "\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \ - "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>" \ - "\4\215\307\77\214\304\77\213\310\77\333\355\303\202\377\377\377\1\376" \ - "\377\375\217\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \ - "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \ - "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \ - ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\213\377\377\377" \ - "\5\377\377\373\377\376\377\377\377\377\375\377\374\376\377\377\202\376" \ - "\376\376\22\260\331{\212\307>\214\306>\215\305>\215\305@\215\307\77\215" \ - "\307=\214\305@\214\306>\215\306A\214\306>\213\307C\214\306>\214\304;" \ - "\213\307A\222\312K\357\370\345\377\377\375\202\377\377\377\15\377\375" \ - "\376\377\377\375\376\376\376\377\377\375\361\367\351\222\311J\213\310" \ - "\77\214\305B\215\310<\213\305=\216\306\77\212\307<\214\305B\202\214\306" \ - ">\6\216\306\77\215\305@\215\306A\214\305@\215\305<\333\356\301\202\377" \ - "\376\377\3\377\377\375\377\377\377\377\376\377\225\377\377\377\1``b\202" \ - "::<\6;;=::<;;=::<FFH\331\331\333\233\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\206\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\205\205\207\203::<\1\204\204\206\221\377\377\377\1\316\316\316\205" \ - "::<\1kkm\231\377\377\377\1GGI\203;;=\202::<\3\235\235\237\377\377\377" \ - "\376\376\376\233\377\377\377\2\376\376\376SSU\203::<\5;;=99;llnkkm::" \ - "<\202;;=\202::<\1SSU\237\377\377\377\1\234\234\236\205::<\1\234\234\234" \ - "\224\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\203\377" \ - "\377\377\4\376\376\376\266\266\270::<;;=\203::<\5""99;::<__a\377\377" \ - "\377\376\376\376\216\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \ - "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \ - "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \ - "\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\10\216\306" \ - "\77\215\306A\214\305@\224\310J\360\371\350\377\377\377\377\376\377\376" \ - "\377\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \ - "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \ - "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \ - ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\212\377\377\377" \ - "\1\377\377\375\202\377\377\377\2\377\376\377\377\377\377\202\376\377" \ - "\377\25\377\377\375\370\373\362\223\312K\212\307>\215\305>\216\306A\212" \ - "\307<\214\305B\215\307\77\214\305@\214\306>\214\305@\212\306@\215\307" \ - "=\216\306A\215\305>\214\306<\252\324n\376\377\377\376\376\376\377\376" \ - "\377\202\377\377\375\4\377\376\377\376\376\377\252\324n\215\306A\202" \ - "\214\306>\21\214\305@\215\307\77\215\305>\212\307>\214\306<\213\304A" \ - "\215\307=\214\304=\215\307\77\212\307>\214\306>\277\337\226\377\376\377" \ - "\376\377\375\377\377\375\377\377\377\376\376\376\225\377\377\377\3\234" \ - "\234\236::<;;=\204::<\4;;=\265\265\267\377\377\377\376\376\376\204\377" \ - "\377\377\202\376\376\376\202\377\377\377\1\376\376\376\225\377\377\377" \ - "\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\202\377\377\377\3\250\250\250::<\204\204\206\205\377\377\377\1\376" \ - "\376\376\214\377\377\377\1\316\316\316\205::<\1kkm\226\377\377\377\1" \ - "\376\376\376\202\377\377\377\2kkm99;\202::<\4;;=::<\204\204\206\376\376" \ - "\376\202\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376\203" \ - "\377\377\377\2\376\376\376\265\265\265\202::<\1;;=\202::<\3;;=\316\316" \ - "\320\316\316\316\204::<\3;;=::<\266\266\266\236\377\377\377\1\234\234" \ - "\236\205::<\1\234\234\234\226\377\377\377\202\376\376\376\2\377\377\377" \ - "\376\376\376\205\377\377\377\4\376\376\376\251\251\253;;=99;\202::<\4" \ - "<<>99;::<\250\250\252\217\377\377\377\1\234\234\234\205::<\1\234\234" \ - "\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \ - "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>" \ - "\202\214\305@\6\212\306@\215\307\77\243\321d\377\377\375\377\375\377" \ - "\376\377\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \ - "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \ - "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377" \ - "\377\2\376\377\377\377\377\375\202\377\377\377\1\376\376\376\202\377" \ - "\377\377\6\376\377\372\376\377\377\377\376\377\331\357\301\213\304\77" \ - "\215\307=\202\214\305@\25\214\305B\214\306<\215\305@\212\307<\214\306" \ - ">\216\306=\212\307>\212\306B\214\305@\215\306E\212\306@\313\347\255\376" \ - "\377\375\376\376\377\376\377\377\377\376\377\377\377\377\333\355\305" \ - "\212\307>\216\306\77\215\307\77\202\214\306>\1\215\307\77\202\214\306" \ - ">\13\215\305<\212\306@\212\307<\215\307\77\211\306=\213\307A\233\314" \ - "V\370\373\362\377\377\375\377\377\377\376\377\377\202\377\377\375\2\374" \ - "\377\377\377\375\376\222\377\377\377\3\363\363\363GGI::<\202;;=\202:" \ - ":<\2;;=\234\234\234\214\377\377\377\1\376\376\376\221\377\377\377\1\376" \ - "\376\376\202\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377" \ - "\377\377\3\376\376\376\377\377\377\316\316\316\203\377\377\377\1\376" \ - "\376\376\203\377\377\377\1\376\376\376\213\377\377\377\1\316\316\316" \ - "\205::<\1kkm\227\377\377\377\5\376\376\376\377\377\377\235\235\237::" \ - "<;;=\203::<\2lln\376\376\376\203\377\377\377\1\376\376\376\224\377\377" \ - "\377\13\376\376\376\377\377\377\376\376\376\377\377\377RRR::<99;::<;" \ - ";=::<kkm\202\377\377\377\1__a\203;;=\202::<\1kkk\236\377\377\377\1\234" \ - "\234\236\205::<\1\234\234\234\241\377\377\377\2\204\204\204;;=\202::" \ - "<\5""99;::<;;=FFH\363\363\363\216\377\377\377\1\234\234\234\205::<\1" \ - "\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306" \ - ">\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>" \ - "\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\221" \ - "\214\306>\5\213\307A\216\306\77\212\307<\214\306>\277\337\223\220\377" \ - "\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377" \ - "\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306" \ - ">\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \ - "\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\4\376\377\377" \ - "\377\377\375\377\375\377\377\377\377\202\377\377\375\202\377\376\377" \ - "\202\376\377\377\22\377\376\377\262\331~\213\304\77\213\310\77\216\306" \ - "A\212\307<\215\306A\214\304=\213\310\77\214\305@\215\304B\214\305B\214" \ - "\306<\212\307>\212\307<\216\306A\221\312I\370\373\362\203\377\377\377" \ - "\13\370\373\364\226\310K\214\306>\212\307>\215\304B\214\306>\215\306" \ - "A\213\304\77\215\306A\214\306>\215\305@\202\212\306@\13\215\307\77\213" \ - "\310=\220\303@\336\362\315\377\376\377\377\377\377\374\377\377\377\376" \ - "\377\377\377\377\376\376\374\376\377\375\223\377\377\377\1\204\204\206" \ - "\203::<\4""99;;;=::<kkm\211\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\221\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\237\377\377\377\1\316\316\316\205::<\1kkm\231\377\377\377\4\234" \ - "\234\236;;=::<;;=\202::<\3jjl\377\377\377\376\376\376\232\377\377\377" \ - "\10\265\265\265:::::<;;=::<99;::<\316\316\316\202\377\377\377\1\265\265" \ - "\267\204::<\3;;=::<\316\316\316\235\377\377\377\1\234\234\236\205::<" \ - "\1\234\234\234\241\377\377\377\2\363\363\363__a\203::<\4;;=::<;;=\234" \ - "\234\236\216\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377" \ - "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \ - "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \ - "\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\10\215\304B\214\306" \ - "<\214\305@\215\305@\212\306@\215\305>\323\354\265\377\376\377\216\377" \ - "\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377" \ - "\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306" \ - ">\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \ - "\214\306>\3\214\305@\214\306>\214\305@\212\377\377\377\3\375\377\376" \ - "\377\377\377\377\377\375\202\377\377\377\26\377\377\375\375\377\374\376" \ - "\377\377\377\376\377\377\377\375\365\375\362\225\311K\212\306@\214\306" \ - ">\214\305@\212\306@\216\306=\211\306;\215\306A\214\306>\215\307\77\217" \ - "\304@\214\306>\212\307>\215\305@\214\305@\262\327z\203\377\377\377\13" \ - "\260\331{\213\310\77\214\305B\214\305@\215\305@\215\307\77\212\307<\216" \ - "\306A\213\305;\214\305@\215\305>\202\214\306>\11\215\305@\214\306<\276" \ - "\340\224\377\376\375\377\377\375\376\377\377\377\376\375\376\377\375" \ - "\377\376\377\202\377\377\377\1\376\377\375\221\377\377\377\1\346\346" \ - "\346\206::<\2:::\346\346\346\202\377\377\377\1\376\376\376\276\377\377" \ - "\377\1\316\316\316\205::<\1kkm\216\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\207\377\377\377\3\234\234\236::<;;=\203::<\1k" \ - "km\226\377\377\377\1\376\376\376\204\377\377\377\2\376\376\376lln\205" \ - "::<\1``b\204\377\377\377\1SSS\205::<\1kkm\235\377\377\377\1\234\234\236" \ - "\205::<\1\234\234\234\242\377\377\377\2\316\316\316:::\202::<\5;;=::" \ - "<;;=FFH\363\363\363\206\377\377\377\1\376\376\376\206\377\377\377\1\234" \ - "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \ - "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \ - "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \ - ">\1\214\305@\210\214\306>\27\215\306A\212\307>\215\305>\215\305@\215" \ - "\307=\217\304B\214\306<\214\305@\215\307\77\215\305@\215\307\77\214\305" \ - "@\216\306\77\211\310<\226\312L\347\364\332\377\377\377\377\376\377\377" \ - "\377\375\374\377\377\377\376\377\376\376\376\376\377\377\207\377\377" \ - "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \ - "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \ - "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\221\377\377\377\1\377\377\375\203\377" \ - "\377\377\5\333\355\303\214\306>\212\307<\216\306A\214\305@\202\214\306" \ - ">\15\215\305@\214\306>\212\306@\213\310\77\215\305>\216\306A\211\306" \ - "=\212\306@\212\307<\334\354\305\377\377\375\335\354\303\212\307>\210" \ - "\214\306>\10\216\306A\212\307;\215\306A\216\306A\214\305@\241\321a\371" \ - "\374\361\375\376\377\223\377\377\377\1\376\376\376\204\377\377\377\2" \ - "\376\376\376\234\234\234\203::<\1""99;\202::<\1\234\234\234\302\377\377" \ - "\377\1\316\316\316\205::<\1kkm\217\377\377\377\1\376\376\376\202\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3\376" \ - "\376\376\377\377\377xxz\202::<\5""99;::<;;=xxz\376\376\377\232\377\377" \ - "\377\3\317\317\31799;;;=\202::<\5;;=::<\265\265\265\377\377\377\376\376" \ - "\376\202\377\377\377\2\265\265\265;;=\202::<\203;;=\1\332\332\332\203" \ - "\377\377\377\1\376\376\376\230\377\377\377\1\234\234\236\205::<\1\234" \ - "\234\234\242\377\377\377\4\376\376\376\204\204\204::<;;=\202::<\3;;=" \ - "::<\266\266\266\207\377\377\377\1\376\376\376\205\377\377\377\1\234\234" \ - "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \ - "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \ - "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \ - "\214\305@\211\214\306>\27\216\306A\214\306>\212\306@\214\306<\213\310" \ - "\77\215\305@\215\307\77\213\305=\216\306\77\212\307;\212\306@\215\305" \ - ">\215\306A\212\307>\245\320d\367\375\361\376\377\377\377\376\377\377" \ - "\377\377\376\376\377\377\376\377\375\377\376\377\377\375\206\377\377" \ - "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \ - "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \ - "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\221\377\377\377\6\376\376\376\377\376" \ - "\377\377\377\377\375\377\376\376\377\377\270\333\207\203\214\306>\17" \ - "\211\306=\212\307<\214\306<\214\305@\215\307\77\214\305@\216\305C\214" \ - "\306>\212\310A\215\305@\216\306\77\223\312K\360\371\346\222\311I\214" \ - "\305@\210\214\306>\10\214\305@\212\307>\214\305@\216\306A\215\307=\350" \ - "\364\334\375\377\376\377\376\377\225\377\377\377\7\376\376\376\377\377" \ - "\377\376\376\376\377\377\377SSS::<;;=\203::<\5FFH\364\364\364\376\376" \ - "\376\377\377\377\376\376\376\277\377\377\377\1\316\316\316\205::<\1k" \ - "km\222\377\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377" \ - "\377SSU\205::<\1\234\234\236\202\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\220\377\377\377\1\376\376\376\204\377\377\377\2kk" \ - "m;;=\202::<\5;;=::<SSU\377\377\377\376\376\376\204\377\377\377\7SSU:" \ - ":<;;=::<;;=::<\205\205\205\234\377\377\377\1\234\234\236\205::<\1\234" \ - "\234\234\240\377\377\377\1\376\376\376\202\377\377\377\1\346\346\346" \ - "\202::<\1;;=\202::<\2;;=__a\205\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236" \ - "\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305" \ - "@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p" \ - "\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\27" \ - "\214\304=\215\305>\213\307A\212\306@\214\305B\215\305<\213\310=\215\307" \ - "\77\215\304B\214\306<\213\307A\215\305>\216\306A\212\306@\212\307>\270" \ - "\332\204\377\376\377\377\377\377\377\376\377\376\376\374\377\377\373" \ - "\377\376\377\377\377\375\206\377\377\377\213\214\306>\3\215\305>\214" \ - "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \ - "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \ - "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\223\377\377\377\1\377\377\375\202\377\377\377\2\371\372\364\232\315" \ - "W\202\214\305@\4\214\306<\215\307\77\214\305B\215\306C\202\215\306A\1" \ - "\214\306<\202\212\307>\6\215\305@\212\307>\215\305>\212\306B\216\306" \ - "A\212\307>\210\214\306>\10\214\305B\215\307\77\214\306<\214\306>\304" \ - "\341\237\377\377\377\377\376\377\377\377\375\220\377\377\377\1\376\376" \ - "\376\203\377\377\377\1\376\376\376\203\377\377\377\10\301\301\301::<" \ - ";;=99;;;=::<99;\234\234\236\207\377\377\377\1\376\376\376\273\377\377" \ - "\377\1\316\316\316\205::<\1kkm\216\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377\377\315" \ - "\315\315\202;;=\203::<\6;;=\265\265\267\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\225\377\377\377\2\376\376\376\317\317\317\203::<\4;" \ - ";=::<;;=\264\264\264\206\377\377\377\10\234\234\234;;=::<;;=99;;;=::" \ - "<\346\346\346\233\377\377\377\1\234\234\236\205::<\1\234\234\234\237" \ - "\377\377\377\1\376\376\376\204\377\377\377\1\204\204\206\202::<\6;;=" \ - "99;;;=::<\346\346\346\376\376\376\204\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \ - "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \ - "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \ - "\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\22\215\307" \ - "\77\212\307>\216\306A\212\304<\215\307\77\215\305@\216\306\77\213\307" \ - "A\214\306>\214\305@\215\307\77\213\310=\212\307>\214\306>\214\306<\214" \ - "\306>\216\306\77\324\353\267\202\376\376\376\3\377\377\377\376\376\377" \ - "\376\377\375\207\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \ - "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \ - "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377" \ - "\377\3\376\377\377\377\377\377\376\377\375\202\377\377\377\7\377\376" \ - "\377\341\363\315\215\305@\214\305@\215\306A\215\305@\216\306\77\202\214" \ - "\306>\12\214\305B\212\307<\213\304A\213\310=\216\306A\211\306;\213\310" \ - "=\214\305@\212\307>\215\305>\210\214\306>\10\215\307\77\214\304=\212" \ - "\307>\243\322b\377\377\377\376\377\377\377\376\377\377\377\375\226\377" \ - "\377\377\4\376\376\376\377\377\377\204\204\206;;=\203::<\3""99;;;=\364" \ - "\364\364\205\377\377\377\1\376\376\376\275\377\377\377\1\316\316\316" \ - "\205::<\1kkm\217\377\377\377\202\376\376\376\202\377\377\377\1\376\376" \ - "\376\203\377\377\377\4\376\376\376xxz;;=99;\202;;=\4::<;;=\346\346\346" \ - "\376\376\376\204\377\377\377\1\376\376\376\224\377\377\377\1xxz\203:" \ - ":<\3;;=::<SSU\203\377\377\377\1\376\376\376\203\377\377\377\2\363\363" \ - "\363FFH\202::<\4;;=99;::<\204\204\206\233\377\377\377\1\234\234\236\205" \ - "::<\1\234\234\234\244\377\377\377\1\316\316\316\202;;=\5::<;;=99;;;=" \ - "\250\250\252\203\377\377\377\1\376\376\376\210\377\377\377\1\234\234" \ - "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \ - "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \ - "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \ - "\214\305@\210\214\306>\7\213\305=\214\306<\210\306\77\216\306\77\215" \ - "\307=\214\306>\215\307\77\202\214\306>\14\215\307\77\214\305B\214\306" \ - "<\212\307<\214\305@\216\306\77\215\305>\214\305@\224\313L\352\364\331" \ - "\374\377\377\377\376\377\211\377\377\377\213\214\306>\3\215\305>\214" \ - "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \ - "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \ - "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\222\377\377\377\1\376\377\377\202\377\377\377\24\376\376\374\376\377" \ - "\375\377\375\377\277\337\224\214\306>\212\307>\215\307\77\214\304=\215" \ - "\307=\213\304A\214\306<\212\307>\215\307\77\214\305@\213\304\77\215\307" \ - "\77\215\305@\214\304=\215\305<\215\306A\210\214\306>\1\212\307>\202\215" \ - "\306A\4\350\365\333\377\375\376\377\376\377\375\376\377\226\377\377\377" \ - "\1\376\376\376\202\377\377\377\3TTV::<99;\202;;=\4::<\203\203\203\377" \ - "\377\377\376\376\376\302\377\377\377\1\316\316\316\205::<\1kkm\222\377" \ - "\377\377\1\376\376\376\204\377\377\377\3\300\300\302;;=::<\202;;=\202" \ - "::<\2```\376\376\376\227\377\377\377\7\376\376\376\377\377\377\346\346" \ - "\346;;=99;::<;;=\202::<\3\251\251\251\377\377\377\376\376\376\206\377" \ - "\377\377\1\234\234\234\202::<\1;;=\202::<\2;;=\346\346\346\232\377\377" \ - "\377\1\234\234\236\205::<\1\234\234\234\235\377\377\377\1\376\376\376" \ - "\207\377\377\377\11SSU::<;;=99;<<>::<xxz\377\377\377\376\376\376\212" \ - "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \ - "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \ - "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \ - "\320\202\214\306>\1\214\305@\210\214\306>\25\213\307A\216\306A\232\315" \ - "W\215\306C\212\306@\214\305@\212\307;\216\306A\215\305>\215\307\77\214" \ - "\305@\215\307\77\214\306>\214\305@\212\306B\213\307C\214\306>\215\305" \ - "@\232\315V\372\374\367\376\376\376\202\377\377\375\1\376\376\376\206" \ - "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \ - "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \ - "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \ - "\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377\377\5\377\376" \ - "\377\376\377\377\377\375\376\377\376\377\376\377\377\202\377\377\377" \ - "\10\370\373\362\233\314V\213\307A\211\306=\215\307\77\212\307<\212\306" \ - "@\215\305<\202\214\306>\7\215\307=\215\306A\214\305@\212\307>\216\306" \ - "A\212\306@\215\307=\210\214\306>\10\212\307>\212\307<\313\347\254\376" \ - "\377\377\377\377\377\377\376\377\376\377\377\377\377\375\223\377\377" \ - "\377\1\376\376\376\203\377\377\377\1\332\332\332\202::<\1;;=\203::<\1" \ - "\302\302\302\203\377\377\377\5\376\376\376\377\377\377\376\376\376\377" \ - "\377\377\376\376\376\274\377\377\377\1\316\316\316\205::<\1kkm\217\377" \ - "\377\377\1\376\376\376\206\377\377\377\3\332\332\334FFH;;=\205::<\1\265" \ - "\265\265\202\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376" \ - "\202\377\377\377\1\205\205\207\202::<\1;;=\202::<\2GGI\363\363\363\202" \ - "\377\377\377\1\376\376\376\205\377\377\377\1\363\363\363\202::<\1;;=" \ - "\202::<\2""99;\234\234\234\203\377\377\377\1\376\376\376\226\377\377" \ - "\377\1\234\234\236\205::<\1\234\234\234\234\377\377\377\1\376\376\376" \ - "\210\377\377\377\3\222\222\222::<99;\202;;=\5""99;GGI\376\376\376\377" \ - "\377\377\376\376\376\211\377\377\377\1\234\234\234\205::<\1\234\234\236" \ - "\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305" \ - "@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p" \ - "\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\10" \ - "\213\307A\214\306>\331\356\303\232\315W\215\305>\215\306A\214\305B\214" \ - "\306>\202\214\305@\7\213\310=\214\306>\215\304B\215\306A\211\306;\213" \ - "\310\77\214\305@\202\215\307\77\2\257\326{\376\377\373\202\377\377\377" \ - "\1\377\377\375\206\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \ - "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \ - ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \ - "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377" \ - "\377\6\377\377\373\377\377\375\377\377\377\376\376\377\377\376\377\373" \ - "\377\374\202\377\376\377\4\336\362\315\220\303@\213\310=\215\307\77\202" \ - "\212\306@\1\215\305@\202\214\306>\7\213\305=\214\306>\213\305=\214\305" \ - "@\213\310\77\212\306@\213\307A\210\214\306>\10\215\307\77\252\324p\377" \ - "\377\375\376\377\377\377\377\375\377\377\377\377\376\377\377\377\375" \ - "\220\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\265\265\265\204::<\5;;=::<\363\363\363\377\377\377\376\376" \ - "\376\302\377\377\377\1\316\316\316\205::<\1kkm\225\377\377\377\2\317" \ - "\317\317FFH\206::<\1SSU\204\377\377\377\1\376\376\376\225\377\377\377" \ - "\2\346\346\346;;=\203::<\3;;=::<\234\234\236\202\377\377\377\1\376\376" \ - "\376\207\377\377\377\2\204\204\206;;=\204::<\2FFF\362\362\362\231\377" \ - "\377\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377\1\301\301" \ - "\301\202::<\6;;=::<;;=::<\347\347\347\376\376\376\212\377\377\377\1\234" \ - "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \ - "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \ - "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \ - ">\1\214\305@\210\214\306>\27\214\305@\215\305<\342\362\315\353\365\334" \ - "\223\312K\215\305<\212\306@\215\305<\212\307>\215\306A\214\306>\212\307" \ - ">\215\307\77\215\304B\215\307\77\215\305@\214\306>\215\305>\214\305@" \ - "\215\305<\315\345\253\377\377\375\376\377\377\207\377\377\377\213\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\221\377\377\377\14\376\377\377\376\376\377\377" \ - "\377\377\377\377\373\376\377\375\377\376\377\376\377\377\377\377\377" \ - "\377\376\375\276\340\224\214\306<\215\305@\202\214\306>\12\215\305>\214" \ - "\305@\215\305@\214\305@\213\310\77\214\306>\216\306\77\211\305\77\215" \ - "\307=\214\305@\210\214\306>\4\223\312K\360\367\347\377\377\377\377\377" \ - "\375\232\377\377\377\2\376\376\376\234\234\236\204::<\2;;=___\234\377" \ - "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\244\377\377\377" \ - "\1\316\316\316\205::<\1kkm\202\377\377\377\1\376\376\376\216\377\377" \ - "\377\4\376\376\376\377\377\377\347\347\347\204\204\204\203::<\6;;=::" \ - "<;;=::<;;=\301\301\303\226\377\377\377\1\376\376\376\203\377\377\377" \ - "\1\203\203\205\202;;=\5::<;;=::<GGG\363\363\363\206\377\377\377\1\376" \ - "\376\376\203\377\377\377\3\347\347\34799;;;=\202::<\202;;=\1\234\234" \ - "\236\231\377\377\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377" \ - "\1\363\363\363\202::<\1""99;\203::<\1\316\316\316\213\377\377\377\1\234" \ - "\234\234\204::<\2;;=kkm\203\234\234\236\2\235\235\237\234\234\234\220" \ - "\234\234\236\204\234\234\234\4\235\235\235\234\234\234\234\234\236\346" \ - "\346\350\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4" \ - "\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250" \ - "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306" \ - ">\40\213\307A\215\305>\341\360\317\377\375\376\324\353\267\215\304B\214" \ - "\306>\215\307=\214\305@\212\307>\212\307<\215\305<\215\306A\214\306>" \ - "\214\306<\212\306@\214\305@\215\307\77\216\306=\212\306B\214\306>\352" \ - "\364\333\377\376\377\377\377\377\377\376\377\377\377\377\377\377\375" \ - "\376\377\373\375\376\377\377\376\377\214\306>\215\307\77\211\214\306" \ - ">\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214\306" \ - ">\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232\377" \ - "\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305" \ - "@\214\306>\214\305@\232\377\377\377\7\374\377\375\242\321a\216\306A\212" \ - "\307>\214\306>\215\307\77\212\307<\210\214\306>\16\215\307\77\214\307" \ - ";\213\304\77\216\306A\214\305B\215\307\77\215\305>\212\307>\320\345\254" \ - "\374\377\377\377\376\377\377\377\375\377\376\377\375\377\372\223\377" \ - "\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377\377kkm\203" \ - "::<\3<<>::<\221\221\221\305\377\377\377\1\316\316\316\204::<\2;;=jjl" \ - "\217\377\377\377\16\316\316\316\300\300\300\234\234\234__a::<;;=::<;" \ - ";=::<99;;;=::<;;=\204\204\206\232\377\377\377\1\362\362\362\202;;=\202" \ - "::<\3""99;::<\235\235\235\212\377\377\377\12\376\376\376\377\377\377" \ - "\205\205\20799;;;=::<;;=::<GGI\376\376\376\230\377\377\377\1\234\234" \ - "\236\205::<\1\234\234\234\246\377\377\377\10EEG::<;;=::<99;;;=\234\234" \ - "\234\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\205\377" \ - "\377\377\1\234\234\234\205::<\2;;=99;\202;;=\2""99;;;=\221::<\1""99;" \ - "\203::<\3;;=::<\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305" \ - "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \ - "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \ - "\214\305@\210\214\306>\202\214\306<\32\342\361\322\377\377\377\377\377" \ - "\375\266\334\205\212\306B\215\307\77\212\306@\220\306=\214\306>\215\307" \ - "\77\214\305B\213\305=\216\306\77\215\307\77\215\305<\212\306B\215\306" \ - "A\215\305@\216\306=\232\315V\371\373\360\377\377\375\377\377\377\375" \ - "\376\377\377\375\377\376\376\377\202\377\377\377\2\214\305@\212\307>" \ - "\211\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324" \ - "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \ - "\3\214\305@\214\306>\214\305@\233\377\377\377\5\347\365\334\211\306=" \ - "\215\305>\216\306=\214\305@\211\214\306>\2\215\304B\212\307>\202\214" \ - "\306>\14\215\306A\214\306<\215\305@\252\324p\374\377\377\377\377\377" \ - "\377\375\376\377\376\377\376\376\377\377\377\375\377\377\377\377\375" \ - "\377\222\377\377\377\1\376\376\376\203\377\377\377\4\376\376\376lln:" \ - ":<;;=\203::<\2\235\235\235\376\376\376\304\377\377\377\1\316\316\316" \ - "\205::<\202;;=\2::<;;=\202::<\1;;=\211::<\202;;=\204::<\1""99;\202::" \ - "<\5;;=::<;;=__a\376\376\376\224\377\377\377\1\376\376\376\205\377\377" \ - "\377\1\235\235\235\206::<\3\346\346\346\377\377\377\376\376\376\207\377" \ - "\377\377\5\376\376\376\377\377\377\376\376\376\346\346\350;;=\203::<" \ - "\3;;=::<\265\265\265\230\377\377\377\1\234\234\236\205::<\1\234\234\234" \ - "\246\377\377\377\1lln\202::<\4""99;;;=99;\234\234\234\213\377\377\377" \ - "\1\234\234\234\203::<\7;;=::<;;=::<;;=::<;;=\222::<\7;;=99;;;=::<;;=" \ - "::<\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \ - "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \ - ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \ - "\214\306>\13\216\306A\213\310\77\343\361\320\377\377\375\375\377\376" \ - "\371\374\361\242\320c\213\310\77\216\306\77\214\306>\215\306A\202\214" \ - "\305@\2\216\306A\213\305=\204\214\306>\11\213\307A\216\306A\212\307>" \ - "\260\331y\377\376\377\376\377\375\377\377\373\376\377\377\377\377\377" \ - "\202\377\376\377\2\212\311=\215\306A\211\214\306>\3\215\305>\214\306" \ - ">\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \ - "\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\231" \ - "\377\377\377\6\377\376\377\377\377\373\377\376\377\305\342\240\212\310" \ - "\77\214\304=\202\215\305@\210\214\306>\4\215\305>\213\305=\212\306@\215" \ - "\306A\202\214\306>\10\222\312M\370\373\362\377\376\377\377\375\376\377" \ - "\376\377\377\377\377\376\377\375\377\377\377\202\377\376\377\221\377" \ - "\377\377\1\376\376\376\205\377\377\377\2::<;;=\202::<\202;;=\3\300\300" \ - "\300\377\377\377\376\376\376\235\377\377\377\1\376\376\376\245\377\377" \ - "\377\1\316\316\316\207::<\5;;=::<;;=::<;;=\210::<\202;;=\2""99;;;=\202" \ - "::<\3;;=::<;;=\202::<\3;;=xxz\363\363\363\225\377\377\377\3\376\376\376" \ - "\377\377\377\376\376\376\202\377\377\377\3\363\363\363FFH::<\202;;=\202" \ - "::<\1\204\204\206\205\377\377\377\1\376\376\376\205\377\377\377\1\376" \ - "\376\376\202\377\377\377\1kkm\202::<\1;;=\202::<\1SSU\230\377\377\377" \ - "\1\234\234\236\205::<\1\234\234\234\244\377\377\377\3\376\376\376\377" \ - "\377\377xxz\202::<\1;;=\202::<\3xxx\377\377\377\376\376\376\211\377\377" \ - "\377\1\234\234\234\203::<\1;;=\202::<\1;;=\224::<\5;;=99;;;=::<;;=\202" \ - "::<\1\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \ - "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \ - ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \ - "\214\306>\3\214\305@\214\306<\343\361\316\202\377\377\377\26\377\376" \ - "\374\353\365\335\223\312K\211\305\77\215\307=\215\306C\211\306;\214\306" \ - ">\215\305@\215\307\77\214\305@\213\307A\214\306>\212\307<\216\306\77" \ - "\212\306B\215\305>\212\306@\304\341\236\377\376\377\375\377\376\377\377" \ - "\375\203\377\377\377\2\212\306@\214\306<\211\214\306>\3\215\305>\214" \ - "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \ - "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \ - "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\231\377\377\377\2\377\377\373\376\377\377\202\377\377\377\4\241\321" \ - "c\215\306A\215\305>\213\310\77\210\214\306>\20\215\305@\215\307=\213" \ - "\310\77\214\304;\216\306\77\213\310\77\333\355\303\377\375\376\377\377" \ - "\375\377\376\377\377\377\377\375\377\374\376\377\377\377\377\377\377" \ - "\377\375\376\376\376\222\377\377\377\1\376\376\376\204\377\377\377\206" \ - "::<\2\316\316\316\376\376\376\234\377\377\377\1\376\376\376\247\377\377" \ - "\377\1\316\316\316\204::<\1;;=\205::<\1;;=\212::<\4""99;;;=::<;;=\203" \ - "::<\1;;=\202::<\1\233\233\233\234\377\377\377\3\235\235\23799;;;=\203" \ - "::<\2;;=\346\346\346\203\377\377\377\1\376\376\376\204\377\377\377\3" \ - "\376\376\376\377\377\377\376\376\376\203\377\377\377\4\316\316\320;;" \ - "=::<;;=\202::<\2;;=\264\264\264\227\377\377\377\1\234\234\236\205::<" \ - "\1\234\234\234\246\377\377\377\2\234\234\236;;=\203::<\2;;=kkk\213\377" \ - "\377\377\1\234\234\234\204::<\3;;=::<;;=\225::<\2;;=99;\202::<\3;;=:" \ - "::\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306" \ - ">\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>" \ - "\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \ - "\214\306>\14\215\307\77\215\305@\340\361\315\376\376\376\377\376\377" \ - "\377\377\375\377\377\377\323\353\267\212\307>\215\305@\214\305@\214\311" \ - "@\202\214\306>\22\212\307>\215\305@\214\306>\212\306@\214\305@\215\305" \ - ">\215\307=\214\306>\214\304=\215\307\77\341\362\316\377\376\377\377\377" \ - "\377\376\376\376\377\377\375\375\376\377\217\307@\212\306@\211\214\306" \ - ">\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214\306" \ - ">\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232\377" \ - "\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305" \ - "@\214\306>\214\305@\232\377\377\377\7\377\376\377\376\377\377\377\377" \ - "\377\352\364\331\212\307<\215\307=\212\307>\211\214\306>\13\212\306@" \ - "\214\306<\216\306A\214\305@\252\322q\376\376\377\376\377\373\377\376" \ - "\377\376\376\377\377\377\375\376\377\377\203\377\377\377\1\376\377\375" \ - "\227\377\377\377\202::<\202;;=\3::<;;=\316\316\316\233\377\377\377\1" \ - "\375\375\375\251\377\377\377\1\316\316\316\211::<\1;;=\213::<\3;;=::" \ - "<;;=\204::<\3""99;\205\205\207\346\346\346\233\377\377\377\4\376\376" \ - "\376\364\364\364FFH;;=\202::<\202;;=\1\204\204\204\215\377\377\377\1" \ - "\376\376\376\202\377\377\377\7kkm::<99;::<;;=99;TTV\227\377\377\377\1" \ - "\234\234\236\205::<\1\234\234\234\246\377\377\377\1\234\234\236\202:" \ - ":<\202;;=\2::<kkk\202\377\377\377\3\376\376\376\377\377\377\376\376\376" \ - "\206\377\377\377\1\234\234\234\203::<\1;;=\202::<\2;;=::<\202;;=\223" \ - "::<\2""99;;;=\202::<\2;;;\316\316\316\231\377\377\377\3\214\305@\214" \ - "\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251" \ - "\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202" \ - "\214\306>\1\214\305@\210\214\306>\202\214\305@\15\341\362\316\377\377" \ - "\375\376\377\375\377\377\377\373\377\374\377\376\377\271\332\211\212" \ - "\307>\212\307<\214\305B\214\305@\216\306\77\212\307>\202\215\307\77\11" \ - "\214\305B\215\306A\212\311=\214\303A\214\306>\215\306A\212\307>\225\311" \ - "K\371\372\362\202\377\377\375\202\377\377\377\2\214\305@\215\306A\211" \ - "\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p" \ - "\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \ - "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \ - "\3\214\305@\214\306>\214\305@\231\377\377\377\10\376\377\377\377\376" \ - "\377\377\377\375\377\375\376\331\356\303\214\306>\214\305B\215\307\77" \ - "\210\214\306>\12\215\305>\212\306B\215\304B\214\306>\215\307=\224\310" \ - "J\364\370\351\376\376\374\375\377\372\377\377\375\203\377\377\377\3\377" \ - "\376\377\377\377\377\376\377\375\221\377\377\377\3\376\376\376\377\377" \ - "\377\376\376\376\203\377\377\377\7::<;;=99;::<;;=::<\315\315\315\232" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\246\377\377" \ - "\377\1\316\316\316\204::<\1;;=\202::<\1;;=\203::<\1;;=\210::<\1;;=\202" \ - "::<\1;;=\202::<\4``b\233\233\235\347\347\351\376\376\376\235\377\377" \ - "\377\2\265\265\265;;=\202::<\1;;=\202::<\1\332\332\332\216\377\377\377" \ - "\3\376\376\376\377\377\377\302\302\302\206::<\1\315\315\315\226\377\377" \ - "\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377\2\376\376\376" \ - "\235\235\237\205::<\1jjj\203\377\377\377\3\376\376\376\377\377\377\376" \ - "\376\376\205\377\377\377\1\234\234\234\204::<\2;;=kkm\202\234\234\236" \ - "\1\233\233\235\223\234\234\234\202\235\235\235\1\233\233\233\203\234" \ - "\234\234\1\346\346\346\231\377\377\377\3\214\305@\214\306>\214\305@\207" \ - "\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214" \ - "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \ - "@\210\214\306>\17\212\307>\216\306A\342\360\315\376\377\377\376\376\374" \ - "\375\377\376\377\376\377\377\376\374\377\377\375\242\320d\215\307=\214" \ - "\306>\214\305@\215\305@\212\306@\202\214\305@\17\215\305@\212\307>\215" \ - "\307\77\214\306<\215\306A\213\304\77\215\306A\215\307\77\252\324n\377" \ - "\377\377\375\377\376\377\376\377\377\377\375\212\307<\215\305@\211\214" \ - "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \ - "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \ - "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \ - "\305@\214\306>\214\305@\232\377\377\377\6\376\377\375\377\375\377\367" \ - "\375\363\223\312H\216\306\77\215\305>\212\214\306>\2\215\305@\214\306" \ - ">\202\212\307>\3\214\305@\247\324o\377\376\377\202\377\377\377\2\377" \ - "\376\377\377\377\375\233\377\377\377\2::<;;=\204::<\2\316\316\316\376" \ - "\376\376\236\377\377\377\3\316\316\316;;;:::\230::<\213\377\377\377\1" \ - "\316\316\316\224::<\6kkmlln\205\205\207\234\234\236\301\301\303\363\363" \ - "\363\202\377\377\377\1\376\376\376\202\377\377\377\3\376\376\376\377" \ - "\377\377\376\376\376\231\377\377\377\1SSS\204::<\2;;=lln\213\377\377" \ - "\377\1\376\376\376\205\377\377\377\2\376\376\376TTV\205::<\1lll\226\377" \ - "\377\377\1\234\234\236\205::<\1\234\234\234\246\377\377\377\2\233\233" \ - "\235;;=\204::<\2kkk\376\376\376\203\377\377\377\1\376\376\376\206\377" \ - "\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305" \ - "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \ - "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \ - "\202\214\306>\1\214\305@\210\214\306>\3\212\307>\215\305>\342\362\315" \ - "\202\377\377\377\22\377\376\377\376\377\377\377\377\375\376\377\377\363" \ - "\367\346\225\311K\211\307@\216\306\77\212\307>\215\305@\214\306<\212" \ - "\307>\214\305@\214\306>\212\306@\215\306C\214\304\77\215\307\77\202\214" \ - "\306>\7\212\306@\307\341\240\377\376\377\376\377\372\377\377\377\212" \ - "\307>\215\305>\211\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \ - "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \ - "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \ - "\207\214\306>\3\214\305@\214\306>\214\305@\231\377\377\377\4\377\376" \ - "\377\376\377\375\376\377\377\257\330z\202\214\305@\1\215\307\77\211\214" \ - "\306>\14\212\307>\215\307\77\214\305@\215\305@\212\307>\215\307=\214" \ - "\305B\313\347\252\377\377\377\377\375\377\377\376\377\376\376\376\202" \ - "\376\377\375\231\377\377\377\4GGI;;=::<;;=\202::<\1\233\233\235\237\377" \ - "\377\377\3\316\316\316::<;;=\230::<\213\377\377\377\1\316\316\316\205" \ - "::<\1kkm\202\377\377\377\2\376\376\376\250\250\250\206::<\2FFH\346\346" \ - "\346\210\377\377\377\1\376\376\376\237\377\377\377\1\264\264\266\203" \ - ";;=\4::<;;=;;;\316\316\316\222\377\377\377\1\265\265\265\204::<\3;;=" \ - "::<\316\316\316\203\377\377\377\1\376\376\376\221\377\377\377\1\234\234" \ - "\236\205::<\1\234\234\234\245\377\377\377\2\376\376\376\235\235\237\205" \ - "::<\1lll\213\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377" \ - "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \ - "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \ - "\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \ - "\316\205\377\377\377\10\376\377\375\377\377\377\333\355\303\215\305@" \ - "\214\306>\214\306<\214\305@\215\305>\202\214\305@\207\214\306>\6\212" \ - "\306@\214\307;\330\355\304\377\376\377\377\377\377\215\305>\212\214\306" \ - ">\3\215\305>\214\306>\305\342\240\215\377\377\377\17\251\323q\214\306" \ - ">\215\307\77\214\305B\215\307\77\213\305=\215\307\77\214\305@\212\307" \ - ">\215\305@\213\310\77\214\305@\215\305<\214\306>\376\377\377\230\377" \ - "\377\377\6\376\377\377\253\323p\215\305@\213\307A\214\306<\212\306B\202" \ - "\214\306>\4\214\305@\214\306>\212\307>\214\305@\202\214\306>\2\214\305" \ - "@\376\377\375\220\377\377\377\1\377\377\375\202\377\377\377\16\376\377" \ - "\375\377\376\377\377\375\376\374\377\377\377\377\375\376\377\375\377" \ - "\377\377\336\355\304\214\306>\215\306A\214\306>\215\306A\212\306@\216" \ - "\306A\202\214\305@\4\215\307\77\214\306>\215\307\77\214\306>\202\214" \ - "\305@\16\214\306>\215\307\77\214\306>\215\307\77\214\305@\214\305B\222" \ - "\313H\361\370\346\376\377\377\377\377\377\377\376\377\377\377\377\374" \ - "\377\377\377\376\377\230\377\377\377\1kkm\202::<\1""99;\202::<\1\235" \ - "\235\237\233\377\377\377\1\376\376\376\203\377\377\377\1\316\316\316" \ - "\224::<\1;;=\205::<\213\377\377\377\1\316\316\316\205::<\1kkm\204\377" \ - "\377\377\3wwy::<;;=\202::<\4""99;;;=``b\363\363\363\206\377\377\377\1" \ - "\376\376\376\235\377\377\377\4\376\376\376\377\377\377\376\376\376TT" \ - "V\205::<\1lln\223\377\377\377\10\376\376\376SSU;;=::<;;=99;::<lll\205" \ - "\377\377\377\1\376\376\376\217\377\377\377\1\234\234\236\205::<\1\234" \ - "\234\234\246\377\377\377\1\204\204\206\202::<\1;;=\202::<\3xxx\377\377" \ - "\377\376\376\376\211\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \ - "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \ - "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \ - "\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305" \ - "@\343\361\316\205\377\377\377\7\377\375\377\377\377\375\376\377\377\276" \ - "\337\220\213\310\77\213\304A\216\306=\207\214\306>\3\215\307\77\214\306" \ - ">\212\307>\202\215\305>\5\223\312J\361\371\344\377\375\377\212\307<\214" \ - "\305@\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\14" \ - "\376\376\374\252\324n\214\306>\213\305=\215\307\77\214\305@\215\306A" \ - "\214\306>\215\307\77\213\310\77\215\305@\212\307>\202\214\306>\1\214" \ - "\305@\232\377\377\377\3\247\324m\215\305>\214\305@\202\214\306>\1\215" \ - "\307=\202\214\305@\6\214\306<\215\307=\214\305B\215\307\77\214\306>\214" \ - "\305@\224\377\377\377\15\377\377\375\376\376\376\377\377\377\377\376" \ - "\377\376\377\375\377\377\375\372\373\366\222\312M\216\306A\215\305<\214" \ - "\306>\212\307>\215\305<\202\214\306>\2\215\307\77\213\305=\204\214\306" \ - ">\1\214\305@\203\214\306>\14\215\307\77\214\305@\213\304\77\214\305B" \ - "\253\324n\376\376\377\376\377\377\377\376\377\377\377\377\376\377\375" \ - "\377\377\375\376\377\375\227\377\377\377\3lln::<;;=\203::<\2kkm\376\376" \ - "\376\236\377\377\377\2\316\316\316;;=\226::<\3;;=::<kkm\213\377\377\377" \ - "\1\316\316\316\204::<\2;;=kkm\204\377\377\377\3\363\363\363__a;;=\203" \ - "::<\4;;=99;\205\205\207\376\376\376\202\377\377\377\1\376\376\376\203" \ - "\377\377\377\1\376\376\376\236\377\377\377\1\301\301\301\204::<\4;;=" \ - "::<wwy\235\235\237\223\234\234\236\1kkm\204::<\5;;=99;\345\345\345\377" \ - "\377\377\376\376\376\222\377\377\377\1\234\234\236\205::<\1\234\234\234" \ - "\246\377\377\377\1kkm\204::<\2;;=\234\234\234\213\377\377\377\1\234\234" \ - "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \ - "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \ - "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \ - "\214\305@\211\214\306>\2\214\305@\343\361\316\205\377\377\377\2\377\377" \ - "\375\377\375\377\202\377\377\377\1\242\322b\202\214\305@\2\214\305B\215" \ - "\307\77\205\214\306>\12\215\307\77\214\306>\215\306A\214\306>\212\306" \ - "@\215\307=\241\321c\377\377\377\215\304B\212\307>\211\214\306>\3\215" \ - "\305>\214\306>\305\342\240\214\377\377\377\5\376\377\375\251\323o\215" \ - "\307\77\214\306>\215\307\77\202\214\305@\2\214\306>\215\307\77\202\214" \ - "\306>\5\213\310\77\215\305>\214\305@\214\306>\377\376\377\230\377\377" \ - "\377\12\377\376\377\247\326p\213\304\77\215\307\77\214\305B\214\306<" \ - "\214\306>\215\307\77\214\305@\214\306>\202\215\307\77\3\214\306>\215" \ - "\306A\216\306\77\223\377\377\377\5\376\377\372\377\377\375\376\376\376" \ - "\377\377\377\377\377\375\202\377\376\377\4\250\325p\212\307<\214\305" \ - "@\215\307\77\202\214\305@\3\214\307;\215\307=\214\306>\202\214\305@\202" \ - "\214\306>\1\215\307\77\207\214\306>\202\214\305@\5\212\307>\307\341\240" \ - "\376\376\374\377\377\377\377\376\377\202\377\377\377\1\376\376\374\227" \ - "\377\377\377\7\234\234\236;;=99;<<>99;::<;;=\237\377\377\377\1\316\316" \ - "\316\223::<\7;;=99;;;=99;::<;;=kkm\213\377\377\377\1\316\316\316\205" \ - "::<\2mmo\376\376\377\204\377\377\377\12\332\332\332FFH;;=::<;;=99;<<" \ - ">::<\266\266\270\376\376\376\203\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\230\377\377\377\3\376\376\376\377\377\377\376\376" \ - "\376\202\377\377\377\1kkm\205::<\202;;=\224::<\10;;=::<;;=::<;;=88:;" \ - ";=\205\205\205\224\377\377\377\1\234\234\236\205::<\1\234\234\234\246" \ - "\377\377\377\3SSU;;=::<\203;;=\1\234\234\234\206\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \ - "\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306" \ - ">\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1" \ - "\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \ - "\316\205\377\377\377\10\376\376\374\376\377\375\377\375\377\377\377\377" \ - "\367\372\357\224\313L\214\305B\215\305<\203\214\306>\202\215\307\77\204" \ - "\214\306>\6\215\306A\213\307A\214\306>\212\306@\277\337\223\215\305>" \ - "\212\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\2\376\377" \ - "\377\251\322r\202\215\307\77\1\214\305B\202\214\306>\202\215\307\77\7" \ - "\214\306>\215\307\77\214\306>\214\304\77\212\306@\215\307\77\377\376" \ - "\377\230\377\377\377\7\377\377\375\215\305@\214\306>\214\305@\214\306" \ - ">\216\306\77\214\306<\203\214\305@\6\215\306C\215\307=\214\305@\215\306" \ - "A\233\314V\377\377\375\220\377\377\377\5\376\376\376\377\377\377\377" \ - "\376\377\377\375\377\377\377\375\202\376\377\377\21\377\376\377\314\346" \ - "\251\212\306B\215\307=\212\307>\216\306\77\215\306C\212\307>\215\306" \ - "C\214\305@\215\307\77\213\304\77\215\306A\214\306>\214\305@\215\307\77" \ - "\215\306A\203\214\306>\1\215\307\77\202\214\306>\202\215\307\77\10\214" \ - "\306>\214\305@\350\364\334\377\377\375\377\376\377\377\377\377\376\376" \ - "\376\377\376\377\222\377\377\377\1\376\376\376\204\377\377\377\1\301" \ - "\301\301\202::<\2""99;;;=\202::<\1\316\316\316\233\377\377\377\1\376" \ - "\376\376\202\377\377\377\2\316\316\316;;;\222::<\7""99;;;=::<;;=::<9" \ - "9;\204\204\206\213\377\377\377\1\316\316\316\205::<\1jjl\202\377\377" \ - "\377\202\376\376\376\202\377\377\377\1\265\265\267\202::<\202;;=\202" \ - "::<\2FFH\332\332\332\205\377\377\377\1\376\376\376\234\377\377\377\2" \ - "\376\376\376\317\317\317\202::<\1;;=\204::<\3;;=::<;;=\222::<\2""99;" \ - ";;=\202::<\1;;=\203::<\3\346\346\346\377\377\377\376\376\376\221\377" \ - "\377\377\1\234\234\236\205::<\1\234\234\234\246\377\377\377\1;;=\203" \ - "::<\4;;=::<\316\316\316\376\376\376\203\377\377\377\1\376\376\376\206" \ - "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \ - "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \ - "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \ - "\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\205" \ - "\377\377\377\203\376\377\377\202\377\376\377\2\341\361\315\214\305@\203" \ - "\215\307\77\202\214\306>\1\215\307\77\203\214\306>\10\214\305@\215\307" \ - "\77\214\306>\212\307>\216\306A\213\305;\214\305@\215\305<\211\214\306" \ - ">\3\215\305>\214\306>\305\342\240\214\377\377\377\2\376\377\377\252\324" \ - "p\202\214\306>\3\214\305B\214\306<\215\307\77\203\214\306>\6\214\306" \ - "<\214\307;\217\307@\212\307>\214\305@\376\377\377\231\377\377\377\10" \ - "\215\307=\214\305B\213\304A\216\310@\214\304\77\215\307=\214\305@\215" \ - "\307\77\203\214\306>\3\215\307\77\214\306>\247\324o\222\377\377\377\3" \ - "\377\377\375\377\377\377\377\375\376\203\377\377\377\20\360\371\346\223" \ - "\312K\216\306\77\213\304A\215\306A\213\305=\215\305@\212\307>\215\305" \ - "<\214\305B\214\305@\214\306>\214\306<\214\306>\215\307\77\213\305=\204" \ - "\214\306>\202\215\307\77\203\214\306>\10\215\306A\212\307<\243\321d\377" \ - "\377\373\375\377\376\377\376\377\377\377\377\376\376\374\223\377\377" \ - "\377\5\375\375\375\377\377\377\376\376\376\377\377\377\346\346\346\202" \ - "::<\1;;=\203::<\1\221\221\221\235\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\222\377\377\377\1__a\204::<\2;;=\234\234\234\213\377\377" \ - "\377\1\316\316\316\205::<\3jjl\377\377\377\376\376\376\205\377\377\377" \ - "\2\204\204\206;;=\204::<\3;;=RRT\363\363\363\237\377\377\377\1\376\376" \ - "\376\202\377\377\377\2jjl;;=\206::<\4;;=::<99;;;=\223::<\1;;=\205::<" \ - "\1\204\204\206\203\377\377\377\1\376\376\376\217\377\377\377\1\234\234" \ - "\236\205::<\1\234\234\234\245\377\377\377\3\315\315\315;;=99;\202::<" \ - "\5""99;;;=\346\346\346\377\377\377\376\376\376\211\377\377\377\1\234" \ - "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \ - "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \ - "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \ - ">\1\214\305@\211\214\306>\2\214\305@\343\361\316\207\377\377\377\202" \ - "\377\377\375\4\376\377\377\377\377\375\303\342\237\212\306@\202\214\305" \ - "@\206\214\306>\7\216\306\77\213\305;\214\305@\216\306A\214\306>\215\307" \ - "\77\213\307A\212\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \ - "\377\17\252\323k\215\306A\214\306>\215\307\77\214\306>\215\307\77\214" \ - "\305@\214\306>\213\304A\215\306C\214\305@\213\304A\213\310=\214\306<" \ - "\342\357\321\230\377\377\377\6\360\371\346\214\305B\212\307<\215\307" \ - "=\213\305=\215\307\77\202\214\305@\7\215\306A\214\306>\214\306<\214\305" \ - "@\214\306>\214\305@\252\324p\222\377\377\377\11\377\376\377\376\377\377" \ - "\377\377\377\377\377\375\376\376\374\377\377\377\253\323p\215\307\77" \ - "\211\306;\202\215\306A\6\214\306>\214\306<\215\305>\216\305C\215\307" \ - "\77\213\304\77\202\215\307\77\2\215\307=\213\305;\202\215\307\77\2\214" \ - "\306>\215\307\77\205\214\306>\5\215\307\77\212\306@\214\306>\215\307" \ - "\77\304\341\236\202\377\377\377\2\376\376\377\374\377\377\230\377\377" \ - "\377\7SSU;;=99;::<;;=::<FFH\232\377\377\377\1\376\376\376\205\377\377" \ - "\377\1\376\376\376\220\377\377\377\2\376\376\376;;=\202::<\1;;=\202:" \ - ":<\1\316\316\316\213\377\377\377\1\316\316\316\205::<\1kkm\210\377\377" \ - "\377\2__a;;=\204::<\2;;=xxz\202\377\377\377\1\376\376\376\233\377\377" \ - "\377\1\376\376\376\202\377\377\377\2\315\315\315;;=\206::<\2;;=99;\203" \ - ";;=\223::<\1;;=\205::<\6FFH\363\363\363\377\377\377\376\376\376\377\377" \ - "\377\376\376\376\216\377\377\377\1\234\234\236\205::<\1\234\234\234\244" \ - "\377\377\377\4\376\376\376\223\223\22399;;;=\202::<\4;;=EEG\377\377\377" \ - "\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \ - "\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \ - "\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306" \ - ">\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1" \ - "\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \ - "\316\206\377\377\377\13\377\376\377\377\377\377\376\377\375\377\377\377" \ - "\377\376\377\376\377\377\253\324l\214\305B\213\304\77\214\305@\215\307" \ - "\77\203\214\306>\11\214\305@\214\306<\216\306=\214\306>\212\306@\215" \ - "\306C\214\304;\212\307>\214\305@\211\214\306>\3\215\305>\214\306>\305" \ - "\342\240\215\377\377\377\1\261\330\177\202\214\306>\2\214\306<\215\306" \ - "A\203\214\306>\7\215\307\77\214\306>\214\306<\215\307=\214\306>\215\306" \ - "C\323\353\267\230\377\377\377\4\340\361\315\215\305@\215\306A\214\305" \ - "@\202\214\306>\2\213\305=\215\306A\202\214\305@\5\214\306>\215\307\77" \ - "\214\306>\214\305@\260\330x\221\377\377\377\3\376\376\376\377\377\373" \ - "\375\377\376\202\377\377\377\25\376\377\377\314\345\253\214\305@\213" \ - "\304\77\216\306\77\212\307>\215\305@\214\306>\214\305@\215\305>\214\305" \ - "@\214\306>\214\306<\214\305@\215\306A\214\305@\215\306C\214\306>\214" \ - "\305@\214\306>\215\307\77\207\214\306>\7\212\306@\220\306=\215\306C\350" \ - "\364\336\376\377\373\377\377\375\376\377\377\230\377\377\377\1\221\221" \ - "\223\203::<\1;;=\202::<\1\265\265\265\230\377\377\377\1\376\376\376\227" \ - "\377\377\377\1\316\316\316\202::<\1;;=\203::<\1\363\363\363\213\377\377" \ - "\377\1\316\316\316\205::<\1kkm\204\377\377\377\1\376\376\376\203\377" \ - "\377\377\2\346\346\346FFH\206::<\2\234\234\236\376\376\376\237\377\377" \ - "\377\1\205\205\205\206::<\3;;=::<;;=\223::<\1;;=\203::<\202;;=\204::" \ - "<\2\234\234\234\376\376\376\221\377\377\377\1\234\234\236\205::<\1\234" \ - "\234\234\245\377\377\377\1RRR\204::<\2""99;yy{\203\377\377\377\1\376" \ - "\376\376\202\377\377\377\202\376\376\376\204\377\377\377\1\234\234\234" \ - "\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\207" \ - "\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214" \ - "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \ - "@\211\214\306>\2\214\305@\343\361\316\205\377\377\377\30\377\377\375" \ - "\377\377\377\375\377\376\377\377\377\377\376\377\377\377\377\376\377" \ - "\377\371\372\365\222\313H\214\305B\214\305@\215\307\77\214\306>\215\307" \ - "\77\214\306>\214\305@\212\306B\214\305@\212\307>\216\306\77\212\307>" \ - "\215\307\77\214\306<\214\305@\211\214\306>\3\215\305>\214\306>\305\342" \ - "\240\214\377\377\377\20\377\376\377\301\345\237\215\305>\215\306A\213" \ - "\304\77\215\306C\214\306>\214\306<\216\306\77\214\306>\214\305B\215\307" \ - "\77\214\306>\215\307\77\214\305@\271\332\211\230\377\377\377\10\307\341" \ - "\240\215\305>\214\305@\214\306>\215\305<\212\307>\214\305B\214\306<\202" \ - "\214\306>\5\215\305<\214\305B\215\307\77\214\306>\303\344\235\222\377" \ - "\377\377\6\376\376\377\377\377\375\376\377\377\377\376\377\352\364\333" \ - "\215\305@\202\215\307\77\16\214\306>\215\307\77\214\306>\215\307\77\214" \ - "\306<\216\306A\213\310\77\214\305D\215\3108\214\305@\215\305>\223\312" \ - "K\236\323a\215\307\77\207\214\306>\202\214\305@\10\214\306>\215\307\77" \ - "\212\307>\212\307<\241\321c\377\376\377\377\375\376\377\375\377\230\377" \ - "\377\377\3\332\332\332:::;;=\204::<\1SSU\203\377\377\377\1\376\376\376" \ - "\247\377\377\377\1\376\376\376\204\377\377\377\1\221\221\221\202::<\1" \ - ";:\77\202::<\1RRT\214\377\377\377\1\316\316\316\205::<\1kkm\211\377\377" \ - "\377\2\316\316\316;;=\202::<\5;;=::<;;=::<\316\316\316\210\377\377\377" \ - "\1\376\376\376\215\377\377\377\1\376\376\376\207\377\377\377\2\346\346" \ - "\350::<\202;;=\202::<\2:::xxx\230\234\234\234\3\235\235\235\234\234\234" \ - "kkm\203::<\4;;=::<FFH\364\364\364\203\377\377\377\1\376\376\376\215\377" \ - "\377\377\1\234\234\236\205::<\1\234\234\234\241\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\332\332\334\206::<\1\250\250\252\214\377\377\377" \ - "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \ - ">\214\305@\204\214\306>\2\213\307A\213\310\77\204\214\306>\1\252\324" \ - "p\232\377\377\377\1\377\377\375\216\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \ - "\2\214\305@\343\361\316\215\377\377\377\10\352\363\336\214\306>\212\306" \ - "B\215\307\77\212\307<\215\305>\214\305@\215\307\77\221\214\306>\3\215" \ - "\305>\214\306>\305\342\240\214\377\377\377\30\377\376\377\313\347\254" \ - "\215\307\77\214\304=\215\307\77\212\306@\215\307\77\215\306A\214\305" \ - "@\214\306>\215\307\77\214\306>\215\307\77\214\305@\214\305B\222\313H" \ - "\377\376\377\377\375\376\377\376\377\377\377\377\377\376\377\377\377" \ - "\373\376\377\377\377\376\377\211\377\377\377\26\377\377\375\377\376\377" \ - "\377\377\377\376\377\377\377\377\375\376\377\375\377\377\377\241\323" \ - "b\215\304D\214\307;\215\307\77\214\305B\215\307\77\214\306<\215\306A" \ - "\212\307>\215\305@\214\306>\213\310=\215\305@\215\306A\323\352\264\221" \ - "\377\377\377\11\376\377\377\376\376\374\376\377\377\377\376\374\377\376" \ - "\377\242\320c\215\307\77\215\306A\214\306>\202\214\305@\203\214\306>" \ - "\25\214\305@\215\306A\214\305@\215\307\77\214\306>\215\307=\315\345\253" \ - "\361\370\346\215\307\77\214\306>\212\306@\216\306A\214\306>\215\305>" \ - "\215\305@\214\305@\212\307>\215\305@\212\306@\215\305<\215\305@\202\214" \ - "\306>\12\277\337\223\377\377\377\376\377\375\377\376\377\377\377\375" \ - "\376\377\377\377\377\377\376\376\376\377\377\377\377\377\375\222\377" \ - "\377\377\1___\202::<\202;;=\202::<\1\266\266\266\250\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1SSU\203::<\3" \ - ";;=::<\221\221\223\214\377\377\377\1\316\316\316\205::<\1kkm\210\377" \ - "\377\377\3\376\376\376\377\377\377\233\233\233\203::<\5;;=::<;;=FFH\364" \ - "\364\364\210\377\377\377\1\376\376\376\213\377\377\377\2\376\376\376" \ - "\377\377\377\202\376\376\376\205\377\377\377\1\204\204\206\202::<\1;" \ - ";=\202::<\3FFF\363\363\363\376\376\376\231\377\377\377\3\346\346\346" \ - "::<;;=\204::<\3\234\234\234\377\377\377\376\376\376\217\377\377\377\1" \ - "\234\234\236\205::<\1\234\234\234\234\377\377\377\1\376\376\376\207\377" \ - "\377\377\3\205\205\207::<;;=\204::<\1\346\346\350\214\377\377\377\1\234" \ - "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \ - "\305@\205\214\306>\7\214\306<\214\306>\215\307\77\214\305@\214\306>\252" \ - "\324p\376\377\375\230\377\377\377\203\377\376\377\203\377\377\377\1\376" \ - "\376\377\211\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342" \ - "\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316" \ - "\215\377\377\377\2\376\377\375\313\347\254\203\214\306>\3\214\305@\216" \ - "\306\77\211\306=\221\214\306>\3\215\305>\214\306>\305\342\240\214\377" \ - "\377\377\11\375\376\377\343\361\316\215\305>\215\307\77\213\304A\215" \ - "\307\77\215\305>\214\306<\214\305@\203\214\306>\14\215\307\77\214\305" \ - "@\213\304\77\214\305B\322\353\264\377\377\377\377\377\375\377\377\377" \ - "\377\376\377\376\377\377\377\377\377\376\377\377\210\377\377\377\13\377" \ - "\377\375\377\377\377\376\377\375\377\376\377\376\376\374\377\377\375" \ - "\377\377\377\350\364\334\215\304D\215\305>\215\307\77\202\214\305@\202" \ - "\214\306>\10\214\305@\215\306A\214\306<\215\306C\214\304=\215\307=\212" \ - "\307<\351\366\332\222\377\377\377\14\377\377\375\377\377\377\377\377" \ - "\375\304\343\237\214\306>\212\307>\217\307@\214\305@\215\307\77\214\306" \ - ">\214\305@\215\306A\202\214\306>\5\214\306<\215\305>\211\307>\216\306" \ - "=\251\323o\202\376\377\377\31\304\341\241\212\306@\215\306A\212\307>" \ - "\215\307\77\214\306<\216\305C\212\307<\216\306A\214\306<\215\307\77\215" \ - "\305>\212\307>\216\306A\214\305@\216\306A\341\361\315\377\376\377\377" \ - "\377\375\376\377\377\377\376\377\376\376\376\377\377\377\377\376\377" \ - "\376\377\375\222\377\377\377\1\265\265\265\202;;=\204::<\2SSU\364\364" \ - "\364\203\377\377\377\1\376\376\376\245\377\377\377\1\376\376\376\203" \ - "\377\377\377\1\316\316\316\203::<\1;;=\202::<\1\302\302\302\214\377\377" \ - "\377\1\316\316\316\205::<\1kkm\213\377\377\377\1lln\204::<\3;;=::<__" \ - "a\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\213\377" \ - "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377" \ - "\3\346\346\346::<;;=\204::<\1\234\234\234\234\377\377\377\1\204\204\206" \ - "\202;;=\202::<\2;;=SSU\221\377\377\377\1\234\234\236\205::<\1\234\234" \ - "\234\235\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202" \ - "\377\377\377\2\346\346\346::<\202;;=\4""99;;;=::<kkm\215\377\377\377" \ - "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \ - ">\214\305@\204\214\306>\10\214\305@\215\306A\215\305@\213\305=\214\306" \ - ">\215\307\77\252\324p\376\377\377\230\377\377\377\1\376\376\376\205\377" \ - "\377\377\2\376\377\377\376\377\375\210\377\377\377\215\214\306>\1\250" \ - "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306" \ - ">\2\214\305@\343\361\316\215\377\377\377\10\377\377\375\377\375\376\262" \ - "\331|\214\305@\215\306A\214\306>\214\305B\215\307\77\221\214\306>\3\215" \ - "\305>\214\306>\305\342\240\214\377\377\377\10\376\377\375\377\377\377" \ - "\214\304\77\212\307>\216\306A\214\306>\215\305@\215\307\77\206\214\306" \ - ">\202\214\305@\3\233\316X\376\376\377\376\377\373\202\377\377\377\3\377" \ - "\375\376\377\377\375\377\376\377\210\377\377\377\12\377\376\377\376\377" \ - "\375\377\375\376\376\376\374\377\377\377\377\377\375\377\377\377\257" \ - "\330x\214\307;\215\307\77\202\214\305@\2\215\307\77\213\305=\202\214" \ - "\306>\1\215\305>\202\214\306>\5\216\306\77\215\306A\215\305@\376\377" \ - "\375\377\376\377\220\377\377\377\11\377\377\375\377\377\377\376\377\377" \ - "\350\364\334\212\307>\213\310\77\216\306\77\212\307>\214\305@\202\214" \ - "\306>%\215\306A\214\306>\213\305=\214\306>\215\307\77\215\305@\211\307" \ - ">\223\311M\363\367\350\376\377\375\377\377\377\377\377\375\242\320d\212" \ - "\307<\215\306A\214\305@\212\306@\215\306A\214\306>\212\307>\215\307\77" \ - "\217\304@\211\310<\215\305>\213\310\77\212\307>\214\306>\234\315W\367" \ - "\372\363\376\377\377\377\376\377\377\377\375\377\377\377\376\376\376" \ - "\377\377\375\377\377\377\376\377\375\222\377\377\377\1RRR\202::<\203" \ - ";;=\2::<\234\234\236\204\377\377\377\1\376\376\376\246\377\377\377\3" \ - "\376\376\376\377\377\377kkk\202::<\4;;=99;;;=FFH\215\377\377\377\1\316" \ - "\316\316\205::<\1kkm\211\377\377\377\5\376\376\376\377\377\377\363\363" \ - "\363SSU;;=\202::<\202;;=\2""99;\222\222\222\207\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\214\377\377\377\1\376\376\376\204\377\377" \ - "\377\3\204\204\204;;=99;\202;;=\3::<FFH\363\363\363\230\377\377\377\1" \ - "\376\376\376\202\377\377\377\2\376\376\376\317\317\317\203::<\4;;=::" \ - "<;;=\266\266\266\220\377\377\377\1\234\234\236\205::<\1\234\234\234\243" \ - "\377\377\377\2\204\204\204;;=\204::<\2""99;\264\264\264\215\377\377\377" \ - "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \ - ">\214\305@\204\214\306>\2\214\305@\214\306>\203\215\306A\2\215\307\77" \ - "\251\323q\231\377\377\377\203\377\377\375\202\377\377\377\1\377\375\376" \ - "\202\377\376\377\210\377\377\377\215\214\306>\1\250\325p\216\377\377" \ - "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \ - "\361\316\215\377\377\377\7\376\376\376\377\377\375\366\373\364\233\316" \ - "X\215\305@\215\307=\215\305>\222\214\306>\3\215\305>\214\306>\305\342" \ - "\240\216\377\377\377\6\243\322b\214\306>\215\305@\215\307\77\215\305" \ - "@\215\306A\203\214\306>\1\215\307\77\202\214\306>\202\215\307\77\2\214" \ - "\306>\315\346\254\202\377\377\377\4\377\376\375\376\377\375\376\376\377" \ - "\377\376\377\212\377\377\377\7\377\377\375\377\376\377\377\377\373\377" \ - "\377\375\327\356\304\214\306>\215\307\77\202\214\305@\203\214\306>\12" \ - "\215\307\77\214\306>\214\305@\216\306\77\214\306<\214\304\77\212\307" \ - ">\260\331{\376\377\375\377\376\377\220\377\377\377\13\376\377\377\377" \ - "\377\375\370\373\362\233\315Z\216\306A\214\305@\212\307>\215\306A\214" \ - "\306>\214\305@\215\306A\202\214\306>\6\215\307\77\214\305@\214\305B\214" \ - "\306>\215\307=\313\347\254\202\377\377\377\23\377\376\377\377\377\375" \ - "\350\364\334\212\307>\220\306=\214\305@\216\306=\214\306>\214\305@\214" \ - "\306>\212\306@\215\305>\212\306@\215\307\77\212\307>\215\307\77\214\305" \ - "@\212\306@\277\340\221\202\377\377\377\1\377\377\375\203\377\377\377" \ - "\2\377\376\377\377\377\375\220\377\377\377\4\376\376\376\377\377\377" \ - "\265\265\265::<\202;;=\5""99;::<;;=99;\317\317\317\250\377\377\377\1" \ - "\376\376\376\202\377\377\377\2\316\316\31699;\202::<\202;;=\2::<\221" \ - "\221\223\215\377\377\377\1\316\316\316\205::<\1kkm\207\377\377\377\1" \ - "\376\376\376\204\377\377\377\1\332\332\334\203::<\5;;=::<;;=99;\302\302" \ - "\302\202\377\377\377\1\376\376\376\216\377\377\377\1\376\376\376\202" \ - "\377\377\377\1\376\376\376\204\377\377\377\4\362\362\362FFH::<;;=\202" \ - "::<\2;;=\221\221\223\204\377\377\377\202\376\376\376\224\377\377\377" \ - "\1\376\376\376\203\377\377\377\1kkm\202;;=\203::<\1SSU\220\377\377\377" \ - "\1\234\234\236\205::<\1\234\234\234\240\377\377\377\3\376\376\376\377" \ - "\377\377\315\315\315\203::<\1;;=\202::<\1SSU\216\377\377\377\1\234\234" \ - "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \ - "@\204\214\306>\3\215\306A\214\306<\215\307=\202\214\305@\3\214\306>\253" \ - "\324n\377\377\375\230\377\377\377\2\375\376\377\376\376\376\203\377\377" \ - "\377\1\377\377\375\212\377\377\377\215\214\306>\1\250\325p\216\377\377" \ - "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \ - "\361\316\220\377\377\377\5\350\365\333\214\306>\214\305@\214\306>\215" \ - "\306A\221\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\7" \ - "\377\377\375\277\337\224\212\306@\215\305@\212\307>\215\306A\215\307" \ - "\77\203\214\306>\202\215\307\77\203\214\306>\3\214\306<\214\306>\351" \ - "\363\330\202\377\377\377\3\376\376\376\374\377\377\376\377\377\211\377" \ - "\377\377\1\376\377\377\202\377\377\377\7\375\376\377\351\365\337\223" \ - "\311M\215\307=\214\305B\214\305@\215\307\77\202\214\306>\12\215\306A" \ - "\214\305@\214\306>\212\307>\215\306A\214\306>\215\307=\213\310\77\316" \ - "\345\255\376\377\377\221\377\377\377\7\376\377\377\377\377\375\300\337" \ - "\223\216\306A\213\305=\215\307=\215\305>\202\214\306>\1\215\307\77\203" \ - "\214\306>\202\214\305@\5\215\307\77\213\307A\251\322r\377\377\377\377" \ - "\377\375\202\377\377\377\14\377\376\377\377\377\377\305\342\237\212\307" \ - "<\220\305\77\214\306>\212\306@\215\306A\214\306<\214\305@\214\306<\216" \ - "\305C\202\214\306>\7\215\305<\214\306>\215\305>\214\305@\342\362\316" \ - "\377\377\377\377\377\375\202\377\377\377\3\376\377\377\377\376\377\376" \ - "\376\376\221\377\377\377\3\376\376\376\377\377\377___\205::<\4;;=FFH" \ - "\363\363\363\377\377\377\202\376\376\376\246\377\377\377\3\363\363\363" \ - "SSU;;=\204::<\4;;=\345\345\345\377\377\377\376\376\376\213\377\377\377" \ - "\1\316\316\316\205::<\1kkm\211\377\377\377\1\376\376\376\203\377\377" \ - "\377\4\264\264\266;;=99;::<\202;;=\3::<GGI\332\332\332\206\377\377\377" \ - "\1\376\376\376\215\377\377\377\1\376\376\376\203\377\377\377\3\234\234" \ - "\236::<;;=\204::<\2\346\346\346\376\376\376\202\377\377\377\1\376\376" \ - "\376\202\377\377\377\202\376\376\376\220\377\377\377\1\376\376\376\204" \ - "\377\377\377\2\376\376\376\317\317\317\204::<\3;;=::<\265\265\265\217" \ - "\377\377\377\1\234\234\236\205::<\1\234\234\234\235\377\377\377\1\376" \ - "\376\376\203\377\377\377\2\363\363\363TTV\203::<\5;;=99;::<\235\235\235" \ - "\376\376\376\215\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377" \ - "\377\377\3\214\305@\214\306>\214\305@\204\214\306>\2\212\306@\213\310" \ - "\77\202\214\305@\3\215\307\77\214\306<\251\323o\231\377\377\377\4\377" \ - "\376\377\377\377\375\377\377\377\376\376\377\214\377\377\377\215\214" \ - "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \ - "@\211\214\306>\2\214\305@\343\361\316\215\377\377\377\1\377\377\375\203" \ - "\377\377\377\4\323\353\267\212\307<\214\306<\212\306B\221\214\306>\3" \ - "\215\305>\214\306>\305\342\240\214\377\377\377\7\376\377\377\377\376" \ - "\377\350\365\331\215\307\77\215\305>\214\306>\212\307>\202\214\306>\1" \ - "\215\307\77\205\214\306>\11\215\307\77\213\304A\212\307>\222\312M\343" \ - "\361\316\376\376\377\377\376\377\377\377\377\377\375\377\210\377\377" \ - "\377\1\377\376\377\202\377\377\375\12\377\376\377\350\364\334\220\313" \ - "K\216\306=\215\305<\215\307\77\214\306>\213\305=\214\306>\215\306A\202" \ - "\214\306>\1\214\305@\202\212\307>\6\214\305@\215\306C\215\305>\360\370" \ - "\351\377\377\373\376\377\377\221\377\377\377\7\345\360\322\215\305@\214" \ - "\305@\215\307=\214\304=\213\310=\215\305>\202\214\306>\2\213\305=\215" \ - "\307\77\202\214\305@\7\215\307\77\214\307;\214\305@\363\367\346\376\377" \ - "\377\377\377\373\377\376\377\202\377\377\377\30\376\377\375\377\376\377" \ - "\241\321a\216\306\77\212\306@\213\310=\215\305@\213\307A\217\304>\215" \ - "\305@\214\306<\216\306A\215\306A\212\307>\214\306<\214\306>\212\307<" \ - "\233\314W\366\373\365\377\377\375\377\377\377\377\376\377\373\377\377" \ - "\377\376\377\224\377\377\377\1\317\317\317\205::<\4;;=::<``b\362\362" \ - "\362\247\377\377\377\2\376\376\376\221\221\221\206::<\3\204\204\206\377" \ - "\377\377\376\376\376\214\377\377\377\1\316\316\316\205::<\1kkm\212\377" \ - "\377\377\6\376\376\376\377\377\377\376\376\376\377\377\377\203\203\203" \ - ";;=\205::<\3``b\363\363\363\376\376\376\216\377\377\377\1\376\376\376" \ - "\206\377\377\377\3\363\363\363FFH;;=\203::<\2;;=\203\203\203\203\377" \ - "\377\377\3\376\376\376\377\377\377\376\376\376\225\377\377\377\1\376" \ - "\376\376\204\377\377\377\3kkk::<<<>\202::<\2;;=kkm\217\377\377\377\1" \ - "\234\234\236\205::<\1\234\234\234\236\377\377\377\4\376\376\376\377\377" \ - "\377\376\376\376kkk\202::<\5;;=::<99;;;=TTV\202\377\377\377\1\376\376" \ - "\376\214\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \ - "\3\214\305@\214\306>\214\305@\204\214\306>\10\214\306<\214\306>\214\305" \ - "@\214\306>\215\307\77\214\306>\252\324r\376\377\377\230\377\377\377\1" \ - "\377\377\375\202\377\377\377\2\377\377\375\376\376\374\203\377\376\377" \ - "\210\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \ - "\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215\377" \ - "\377\377\10\375\377\374\377\376\377\375\377\376\376\376\377\377\377\377" \ - "\270\333\207\214\305@\215\307\77\221\214\306>\3\215\305>\214\306>\305" \ - "\342\240\214\377\377\377\12\375\376\377\377\376\377\376\377\377\234\313" \ - "Y\215\306A\214\305@\212\307>\214\305@\214\306>\215\307\77\206\214\306" \ - ">\7\215\307\77\214\306>\215\305@\213\310\77\304\343\240\371\372\364\376" \ - "\377\377\212\377\377\377\10\376\377\377\377\376\377\315\345\251\223\311" \ - "M\214\306>\216\306\77\214\305B\214\306<\202\214\306>\15\215\306A\214" \ - "\305@\214\306>\215\307\77\214\305@\214\306<\214\305@\215\307\77\213\304" \ - "A\263\330{\377\377\377\376\376\376\377\377\375\220\377\377\377\7\370" \ - "\373\364\232\315V\216\306=\212\311=\214\306>\216\306A\213\307A\202\214" \ - "\305@\202\214\306>\202\214\305@\10\215\307\77\215\305>\215\304D\304\341" \ - "\237\376\377\377\377\376\377\376\376\377\377\377\375\202\377\376\377" \ - "\24\376\377\377\377\377\373\350\365\333\215\305>\214\306<\214\306>\212" \ - "\306@\215\307\77\213\305=\215\305@\215\307\77\214\306>\215\305>\215\306" \ - "A\211\305A\215\305@\214\305B\213\310=\262\327z\374\377\377\202\377\377" \ - "\377\2\377\377\375\373\377\376\225\377\377\377\1\221\221\223\203::<\6" \ - ";;=99;;;=::<``b\362\362\362\246\377\377\377\2\265\265\265:::\202::<\1" \ - ";;=\203::<\1\346\346\350\216\377\377\377\1\316\316\316\205::<\1kkm\216" \ - "\377\377\377\6\363\363\363__a::<;;=::<;;=\202::<\1\204\204\204\204\377" \ - "\377\377\1\376\376\376\221\377\377\377\1\234\234\234\204::<\3;;=::<\347" \ - "\347\347\202\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \ - "\225\377\377\377\3\376\376\376\377\377\377\265\265\265\202::<\202;;=" \ - "\3::<;;=\316\316\316\216\377\377\377\1\234\234\236\205::<\1\234\234\234" \ - "\240\377\377\377\2\204\204\204:::\206::<\1\301\301\303\217\377\377\377" \ - "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \ - ">\214\305@\205\214\306>\7\214\305@\216\306A\215\307=\213\304\77\213\307" \ - "A\242\321a\345\356\317\230\342\362\316\7\341\361\315\342\361\322\342" \ - "\361\320\343\361\315\345\360\322\365\373\357\376\377\377\211\377\377" \ - "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \ - ">\1\214\305@\211\214\306>\2\214\305@\343\361\316\216\377\377\377\7\376" \ - "\377\375\377\377\375\377\377\377\377\376\377\371\374\365\242\322d\215" \ - "\306A\221\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\10" \ - "\377\377\375\377\377\377\377\377\373\312\346\253\215\307=\212\307>\214" \ - "\305B\216\306=\206\214\306>\202\214\305@\10\214\306>\212\307>\216\306" \ - "\77\214\306>\212\307>\233\316W\306\340\237\361\370\346\210\377\377\377" \ - "\12\361\370\350\314\345\253\233\314W\214\306>\213\310\77\215\305<\214" \ - "\305@\212\307<\215\306A\214\305@\203\214\306>\202\214\305@\202\214\306" \ - ">\4\216\306A\212\306@\213\310\77\333\356\301\202\377\377\377\1\377\377" \ - "\375\220\377\377\377\26\270\332\204\215\306A\212\306B\214\306>\213\307" \ - "A\215\305@\214\306<\214\306>\215\306A\214\306<\215\307\77\214\305B\215" \ - "\307\77\214\307;\215\304D\241\323b\377\377\375\376\377\377\377\377\377" \ - "\377\377\373\377\377\377\376\377\377\202\377\377\375\16\377\377\377\376" \ - "\377\377\277\337\224\214\305@\215\306A\214\306>\215\305>\212\310\77\214" \ - "\305@\215\307\77\212\307>\214\305B\216\306=\215\306A\202\214\306<\6\214" \ - "\306>\213\307C\331\356\305\377\376\377\377\377\373\376\376\376\227\377" \ - "\377\377\3__a::<;:\77\205::<\2__a\363\363\363\203\377\377\377\1\376\376" \ - "\376\213\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377" \ - "\377\377\376\376\376\213\377\377\377\1\376\376\376\202\377\377\377\1" \ - "\265\265\267\205::<\3;;=:::\234\234\234\217\377\377\377\1\316\316\316" \ - "\205::<\1kkm\217\377\377\377\4\332\332\332GGI::<;;=\204::<\1\250\250" \ - "\252\225\377\377\377\1FFH\205::<\1\204\204\204\242\377\377\377\1TTV\205" \ - "::<\4lln\376\376\376\377\377\377\376\376\376\203\377\377\377\1\376\376" \ - "\376\207\377\377\377\1\234\234\236\205::<\1\235\235\237\221\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\202\376" \ - "\376\376\205\377\377\377\3\363\363\365\204\204\206;;=\204::<\3;;=:::" \ - "xxx\220\377\377\377\1\234\234\234\203::<\3;;=::<\234\234\234\204\377" \ - "\377\377\1\376\376\376\261\377\377\377\3\214\305@\214\306>\214\305@\250" \ - "\214\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250" \ - "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306" \ - ">\2\214\305@\343\361\316\216\377\377\377\11\375\376\377\377\376\377\377" \ - "\377\375\376\377\377\377\376\377\351\365\335\223\311M\212\307<\214\306" \ - ">\202\216\306A\4\212\307<\215\306A\215\305>\215\307\77\211\214\306>\3" \ - "\215\305>\214\306>\305\342\240\214\377\377\377\20\377\376\377\377\377" \ - "\375\377\376\377\365\374\364\223\312J\217\304>\215\307\77\212\307;\215" \ - "\306A\214\305B\214\305@\215\307\77\214\306<\213\310\77\214\305@\215\305" \ - ">\210\214\306>\10\234\315Z\257\327~\304\343\235\306\340\237\307\341\240" \ - "\304\343\237\257\327\177\241\321a\210\214\306>\20\217\304>\215\306A\212" \ - "\306@\212\307>\213\305;\216\306A\213\305=\215\306C\211\310<\216\306A" \ - "\214\306>\234\314V\377\377\377\375\377\374\376\377\377\377\376\377\211" \ - "\377\377\377\7\377\376\377\376\377\375\376\377\377\376\377\375\377\376" \ - "\377\377\377\377\333\355\303\210\214\306>\10\215\306A\214\305@\216\306" \ - "=\214\306>\215\307\77\214\305@\215\307\77\352\364\334\211\377\377\377" \ - "\6\377\376\377\367\375\363\232\315V\215\307\77\214\306>\214\305@\212" \ - "\214\306>\6\212\307>\223\311M\366\373\364\377\376\377\377\377\377\376" \ - "\377\373\221\377\377\377\1\376\376\376\204\377\377\377\2\346\346\346" \ - "FFH\203::<\1""99;\203::<\2__a\332\332\332\211\377\377\377\1\376\376\376" \ - "\203\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\206\377" \ - "\377\377\1\376\376\376\207\377\377\377\1\265\265\267\202::<\1;;=\204" \ - "::<\2```\376\376\376\217\377\377\377\1\316\316\316\205::<\1kkm\216\377" \ - "\377\377\4\376\376\376\377\377\377\301\301\301;;=\205::<\2;;=\331\331" \ - "\331\202\377\377\377\3\376\376\376\377\377\377\376\376\376\216\377\377" \ - "\377\1\265\265\267\205::<\3;;=\332\332\332\376\376\376\241\377\377\377" \ - "\1\266\266\270\205::<\2""99;\316\316\320\215\377\377\377\1\234\234\236" \ - "\203::<\5;;=::<\234\234\234\377\377\377\376\376\376\220\377\377\377\1" \ - "\376\376\376\206\377\377\377\1\376\376\376\203\377\377\377\2\346\346" \ - "\346``b\202::<\2""99;;;=\203::<\4FFF\363\363\363\377\377\377\376\376" \ - "\376\216\377\377\377\1\234\234\234\204::<\3;;=\234\234\234\376\376\376" \ - "\265\377\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215\307" \ - "\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \ - "\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \ - "\316\215\377\377\377\16\377\376\377\376\377\377\377\376\377\377\377\377" \ - "\376\377\377\377\376\377\375\377\374\323\353\267\215\305<\215\306C\215" \ - "\305<\213\306:\213\310\77\212\306@\202\214\305@\211\214\306>\3\215\305" \ - ">\214\306>\305\342\240\215\377\377\377\4\376\377\377\377\377\375\377" \ - "\376\377\305\342\242\202\214\305@\5\216\306A\214\306>\215\307=\215\307" \ - "\77\213\304A\202\214\305@\2\214\306>\212\306@\210\214\306>\7\214\306" \ - "<\215\307=\215\307\77\213\305=\214\306>\215\307\77\213\305=\211\214\306" \ - ">\11\215\306A\215\305>\212\307;\213\304\77\215\306A\211\306=\215\306" \ - "A\212\307<\216\306A\202\215\307\77\4\343\361\320\376\377\375\377\377" \ - "\375\376\376\377\212\377\377\377\1\377\376\377\202\377\377\377\4\377" \ - "\376\377\376\377\377\367\375\363\225\311J\210\214\306>\10\215\307=\213" \ - "\310\77\214\305@\216\306\77\214\305@\212\307>\307\341\240\376\377\375" \ - "\210\377\377\377\5\377\376\377\374\377\375\377\376\377\343\361\320\212" \ - "\306@\202\214\306>\1\213\310\77\210\214\306>\10\215\306A\215\305>\214" \ - "\305@\260\327z\377\376\374\374\377\377\377\377\377\377\376\377\226\377" \ - "\377\377\1\332\332\332\210::<\2GGI\250\250\250\223\377\377\377\3\376" \ - "\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376\202\377" \ - "\377\377\1\376\376\376\204\377\377\377\2\250\250\252;;=\204::<\202;;" \ - "=\2EEG\331\331\331\220\377\377\377\1\316\316\316\205::<\1kkm\221\377" \ - "\377\377\5\222\222\224::<;;=::<;;=\202::<\5SSU\364\364\364\376\376\376" \ - "\377\377\377\376\376\376\216\377\377\377\2\376\376\376TTV\203::<\4;;" \ - "=99;lln\376\376\376\243\377\377\377\1TTV\204::<\5;;=\204\204\206\376" \ - "\376\376\377\377\377\376\376\376\212\377\377\377\1\234\234\236\202::" \ - "<\1;;=\202::<\1\234\234\234\215\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\212\377\377\377\6\376\376\376\250\250\252FFH99;::" \ - "<;;=\205::<\1\316\316\316\221\377\377\377\1\234\234\234\203::<\3;;=:" \ - ":<\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\250\214\306" \ - ">\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216" \ - "\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214" \ - "\305@\343\361\316\215\377\377\377\3\377\376\377\376\377\375\376\377\377" \ - "\202\377\377\377\13\377\377\375\377\376\377\376\376\374\271\332\211\215" \ - "\306A\211\306;\216\306A\212\307>\213\307A\215\306A\212\307>\211\214\306" \ - ">\3\215\305>\214\306>\305\342\240\214\377\377\377\20\376\377\375\377" \ - "\377\377\377\377\375\377\377\377\371\370\364\233\316U\214\306>\214\305" \ - "@\215\306A\214\306>\214\305@\215\307=\214\306>\215\305@\215\304B\213" \ - "\310=\210\214\306>\3\215\305@\214\306>\213\305=\202\213\310\77\3\214" \ - "\306>\215\307\77\215\305@\210\214\306>\20\212\306@\212\307;\216\306\77" \ - "\215\307\77\212\306@\214\306<\215\305>\215\307\77\220\305\77\211\307" \ - ">\263\330{\377\376\377\377\377\375\376\377\377\377\377\377\376\376\376" \ - "\211\377\377\377\7\377\377\373\377\377\377\377\375\376\377\377\377\377" \ - "\377\375\257\330|\213\310\77\211\214\306>\6\215\306C\211\306=\214\305" \ - "@\214\306>\242\322e\377\377\375\212\377\377\377\7\376\377\377\377\377" \ - "\375\377\375\376\277\337\224\216\307B\212\307>\214\305@\210\214\306>" \ - "\2\214\305@\216\306\77\202\212\307>\4\332\360\302\376\376\374\376\376" \ - "\376\377\376\377\227\377\377\377\1\266\266\266\202::<\1;;=\202::<\2;" \ - ";=::<\202;;=\2kkm\346\346\350\202\377\377\377\1\376\376\376\207\377\377" \ - "\377\1\376\376\376\203\377\377\377\5\376\376\376\377\377\377\376\376" \ - "\376\377\377\377\376\376\376\202\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\204\377\377\377\2\364\364\364yy{\203::<\2;;=99;\203::<\3" \ - "\265\265\267\377\377\377\376\376\376\217\377\377\377\1\316\316\316\205" \ - "::<\1kkm\222\377\377\377\1kkm\203::<\1;;=\202::<\5kkm\377\377\377\376" \ - "\376\376\377\377\377\376\376\376\212\377\377\377\5\376\376\376\377\377" \ - "\377\376\376\376\265\265\267;;=\204::<\2;;=\315\315\315\244\377\377\377" \ - "\11\234\234\234::<99;;;=::<;;=::<\347\347\347\376\376\376\213\377\377" \ - "\377\1\234\234\236\204::<\2;;=\233\233\233\217\377\377\377\1\376\376" \ - "\376\206\377\377\377\6\376\376\376\377\377\377\376\376\376\377\377\377" \ - "\265\265\265TTT\202::<\202;;=\203::<\3;;=::<\266\266\270\202\377\377" \ - "\377\1\376\376\376\217\377\377\377\1\234\234\234\204::<\4;;=\235\235" \ - "\237\377\377\377\376\376\376\224\377\377\377\1\376\376\376\203\377\377" \ - "\377\1\376\376\376\233\377\377\377\3\214\305@\214\306>\214\305@\250\214" \ - "\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \ - "\2\214\305@\343\361\316\215\377\377\377\202\377\377\375\16\377\377\377" \ - "\377\377\375\377\377\377\376\377\375\376\376\374\377\376\377\375\377" \ - "\376\241\322_\215\306A\212\306B\215\305>\215\307\77\214\306<\214\305" \ - "B\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\1\377" \ - "\376\377\202\377\377\375\15\376\377\377\377\375\376\340\361\317\214\306" \ - ">\212\307>\214\306>\215\307\77\214\306>\212\307<\215\307\77\215\305>" \ - "\216\306=\213\305=\210\214\306>\1\212\307>\202\214\305@\202\214\306>" \ - "\3\214\305@\215\306A\212\307>\210\214\306>\20\212\307>\213\304\77\214" \ - "\306>\211\310<\214\306>\216\306A\212\306@\215\305@\214\306>\223\313N" \ - "\367\372\363\376\377\377\377\377\377\377\376\377\376\377\373\377\376" \ - "\377\212\377\377\377\202\376\377\377\3\377\375\376\324\353\265\215\306" \ - "A\211\214\306>\7\215\305>\213\305=\215\307\77\215\306A\212\307>\351\363" \ - "\333\377\377\375\211\377\377\377\10\377\376\377\375\377\376\376\377\377" \ - "\377\376\377\370\373\362\233\314W\215\307\77\215\305<\210\214\306>\1" \ - "\215\307\77\202\214\306>\4\214\306<\225\310O\360\366\350\377\376\377" \ - "\221\377\377\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377" \ - "\1\266\266\266\202::<\4;;=99;::<;;=\202::<\4;;=::<\204\204\206\346\346" \ - "\350\207\377\377\377\1\376\376\376\206\377\377\377\202\376\376\376\202" \ - "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377" \ - "\377\3\251\251\251FFF99;\202::<\1""99;\202::<\5;;=::<\234\234\236\377" \ - "\377\377\376\376\376\220\377\377\377\1\316\316\316\205::<\1kkm\222\377" \ - "\377\377\11\363\363\363GGI99;::<99;;;=::<;;=\234\234\234\214\377\377" \ - "\377\1\376\376\376\203\377\377\377\1SSU\202::<\1;;=\202::<\1kkm\245\377" \ - "\377\377\5\362\362\362GGI;;=::<;;=\202::<\1\204\204\206\206\377\377\377" \ - "\1\376\376\376\205\377\377\377\1\234\234\236\203::<\3""99;::<\234\234" \ - "\234\223\377\377\377\1\376\376\376\203\377\377\377\3\331\331\331\222" \ - "\222\222SSU\203::<\2;;=::<\202;;=\4::<;;=::<\265\265\267\202\377\377" \ - "\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377\377\377\1\234" \ - "\234\234\205::<\1\234\234\236\203\377\377\377\1\376\376\376\223\377\377" \ - "\377\1\376\376\376\236\377\377\377\3\214\305@\214\306>\214\305@\250\214" \ - "\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325" \ - "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \ - "\2\214\305@\343\361\316\216\377\377\377\17\377\376\377\377\377\377\376" \ - "\376\376\377\376\377\377\377\375\376\377\377\375\377\376\377\377\377" \ - "\363\367\350\222\312K\214\305@\213\310\77\214\304\77\215\307\77\216\306" \ - "A\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\14\377" \ - "\376\377\376\377\375\376\377\377\377\376\377\376\377\377\376\377\375" \ - "\307\342\237\214\305@\214\306<\215\304D\214\306>\214\305D\202\212\307" \ - "<\2\212\307>\213\307A\210\214\306>\3\215\307\77\214\306>\215\307\77\202" \ - "\214\305@\213\214\306>\12\213\305;\215\306A\212\306@\214\306>\213\307" \ - "C\212\307>\215\305>\212\307>\215\305>\333\356\301\202\377\377\377\3\377" \ - "\377\375\377\377\377\377\376\377\211\377\377\377\10\376\377\375\377\377" \ - "\375\376\377\375\374\377\375\362\371\347\225\311M\215\307\77\215\305" \ - "<\210\214\306>\2\214\305@\216\306=\202\212\306@\2\305\342\237\377\375" \ - "\376\212\377\377\377\1\376\376\374\203\377\377\377\4\376\376\376\337" \ - "\363\316\215\306C\215\305<\211\214\306>\1\215\307\77\202\214\305@\4\214" \ - "\306<\253\324n\375\377\374\377\377\375\224\377\377\377\1\376\376\376" \ - "\204\377\377\377\2\301\301\301FFH\202::<\2;;=99;\202;;=\2::<;;=\202:" \ - ":<\2\204\204\206\316\316\320\207\377\377\377\1\376\376\376\203\377\377" \ - "\377\1\376\376\376\206\377\377\377\6\376\376\376\377\377\377\364\364" \ - "\364\265\265\267SSU::<\202;;=\202::<\5;;=::<;;=::<\204\204\204\223\377" \ - "\377\377\1\316\316\316\205::<\1kkm\223\377\377\377\11\315\315\315;;=" \ - "::<;;=::<;;=::<99;\302\302\302\216\377\377\377\5\301\301\303::<;;=::" \ - "<;;=\202::<\2\316\316\316\377\377\377\202\376\376\376\241\377\377\377" \ - "\14\376\376\376\377\377\377\234\234\234;;=::<;;=::<;;=::<\347\347\351" \ - "\377\377\377\376\376\376\211\377\377\377\1\234\234\236\203::<\3;;=::" \ - "<\234\234\236\216\377\377\377\202\376\376\376\1\377\377\377\202\316\316" \ - "\316\6\250\250\250\234\234\234jjjFFF;;=99;\202;;=\2::<;;=\202::<\5<<" \ - ">99;;;=::<\265\265\267\204\377\377\377\1\376\376\376\217\377\377\377" \ - "\1\234\234\234\204::<\2;;=\234\234\236\202\377\377\377\1\376\376\376" \ - "\223\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\234\377" \ - "\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215\307\77\342\362" \ - "\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \ - "\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215" \ - "\377\377\377\202\377\376\377\16\377\377\375\376\377\377\377\377\377\377" \ - "\377\375\377\376\377\376\376\376\377\376\377\377\377\377\333\354\302" \ - "\212\307>\213\310\77\214\306<\213\310=\215\305@\211\214\306>\3\215\305" \ - ">\214\306>\305\342\240\214\377\377\377\1\377\376\377\202\376\377\377" \ - "\202\377\377\375\13\376\377\377\377\375\376\271\333\205\215\305>\214" \ - "\306>\212\307>\214\306>\215\306A\214\306>\212\306@\214\305@\210\214\306" \ - ">\3\214\305@\215\307\77\214\306>\202\212\307>\3\214\306>\215\307\77\215" \ - "\306A\210\214\306>\4\216\306A\211\306=\214\306<\216\306A\202\212\307" \ - ">\202\215\306A\10\322\352\270\377\377\375\376\376\374\377\377\377\376" \ - "\377\377\377\376\377\377\377\375\376\377\377\210\377\377\377\10\377\377" \ - "\375\377\377\377\377\376\377\374\376\373\250\325n\216\306\77\212\307" \ - ">\214\305B\210\214\306>\202\212\307>\6\214\305@\242\322d\376\376\374" \ - "\377\377\375\375\377\376\377\376\377\210\377\377\377\10\376\377\377\377" \ - "\377\375\377\375\376\377\377\375\375\376\377\376\377\375\270\333\207" \ - "\211\310<\210\214\306>\10\214\304=\216\307B\214\306>\212\307>\216\306" \ - "A\215\307\77\313\350\250\376\376\377\221\377\377\377\1\376\376\376\203" \ - "\377\377\377\1\376\376\376\204\377\377\377\7\332\332\332RRT;;=::<;;=" \ - "::<;;=\202::<\1;;=\203::<\3RRT\221\221\223\317\317\321\214\377\377\377" \ - "\11\376\376\376\377\377\377\364\364\364\301\301\301\204\204\206EEG;;" \ - "=99;;;=\204::<\1""99;\202::<\1\251\251\251\207\377\377\377\1\376\376" \ - "\376\214\377\377\377\1\316\316\316\205::<\1kkm\224\377\377\377\1\247" \ - "\247\247\203::<\5;;=::<;;=FFH\345\345\345\214\377\377\377\2\376\376\376" \ - "kkm\205::<\1SSU\202\377\377\377\1\376\376\376\244\377\377\377\2\363\363" \ - "\363FFH\204::<\2;;=\221\221\223\213\377\377\377\1\234\234\236\204::<" \ - "\4;;=SSUkkmlln\213kkm\5;;=::<;;=::<;;=\204::<\2;;=99;\202;;=\2::<;;=" \ - "\202::<\7;;=99;::<FFH\301\301\301\377\377\377\376\376\376\223\377\377" \ - "\377\1\234\234\234\205::<\1SSU\202kkm\1lln\223kkm\1lln\205kkm\1\332\332" \ - "\334\231\377\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215" \ - "\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377" \ - "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \ - "\361\316\215\377\377\377\1\377\376\377\202\377\377\375\202\377\377\377" \ - "\202\377\376\377\11\377\377\375\377\377\377\376\377\377\377\376\377\276" \ - "\336\223\214\306<\213\310\77\214\304=\215\306A\211\214\306>\3\215\305" \ - ">\214\306>\305\342\240\214\377\377\377\20\377\377\375\376\377\375\376" \ - "\376\376\377\376\377\375\377\376\377\375\377\376\377\377\376\377\375" \ - "\270\333\207\217\305<\212\307>\214\305@\216\306\77\213\305=\214\305@" \ - "\216\306=\211\214\306>\2\215\306A\215\305@\202\216\306\77\3\215\305@" \ - "\214\305@\215\307\77\210\214\306>\13\213\305=\215\306A\215\305>\212\306" \ - "@\215\305>\215\306A\220\305A\323\352\266\376\377\375\377\376\377\377" \ - "\377\375\202\377\377\377\3\376\377\377\377\375\377\376\377\375\213\377" \ - "\377\377\5\316\347\256\212\307>\213\305;\216\306A\212\307<\210\214\306" \ - ">\10\212\307>\216\306\77\215\305>\350\364\336\377\376\377\376\376\374" \ - "\377\377\377\377\376\377\210\377\377\377\1\377\376\377\202\377\377\377" \ - "\5\377\376\377\376\377\375\377\376\377\370\373\360\225\311K\210\214\306" \ - ">\10\216\306=\214\305@\215\310<\212\307>\214\306>\214\305@\223\312J\356" \ - "\371\350\231\377\377\377\4\376\376\376\377\377\377\363\363\363xxz\202" \ - "::<\1""99;\202::<\1;;=\203::<\202;;=\203::<\4__a\205\205\205\234\234" \ - "\234\250\250\250\205\316\316\316\4\250\250\250\234\234\234xxx___\202" \ - "::<\3""99;;;=99;\203::<\1;;=\203::<\2FFH\265\265\265\205\377\377\377" \ - "\1\376\376\376\217\377\377\377\1\316\316\316\205::<\1kkm\225\377\377" \ - "\377\3xxx::<;;=\204::<\1```\213\377\377\377\4\376\376\376\317\317\317" \ - "::<;;=\204::<\1\266\266\270\203\377\377\377\1\376\376\376\241\377\377" \ - "\377\1\377\377\375\202\377\377\377\1\204\204\206\202::<\1;;=\202::<\2" \ - "GGI\363\363\363\212\377\377\377\1\234\234\236\203::<\1;;=\202::<\1;;" \ - "=\221::<\1;;=\207::<\1;;=\202::<\1;;=\202::<\2``b\346\346\350\210\377" \ - "\377\377\1\376\376\376\215\377\377\377\1\234\234\234\207::<\3;;=::<;" \ - ";=\221::<\1;;=\203::<\1;;=\202::<\1\316\316\320\231\377\377\377\3\214" \ - "\305@\214\306>\214\305@\250\214\306>\2\215\307\77\342\362\316\212\377" \ - "\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214" \ - "\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215\377\377\377" \ - "\7\377\377\375\376\377\375\377\377\377\377\376\377\376\376\374\376\377" \ - "\377\377\377\377\202\376\377\377\202\377\377\375\4\377\377\377\242\320" \ - "d\211\306=\215\305@\212\214\306>\3\215\305>\214\306>\305\342\240\214" \ - "\377\377\377\6\377\376\377\377\377\377\377\377\375\377\375\377\376\377" \ - "\372\375\376\377\202\377\377\377\10\376\377\377\304\343\240\215\305@" \ - "\214\306>\216\306A\215\307\77\212\307>\215\307\77\212\214\306>\3\215" \ - "\307\77\214\306>\214\305@\202\215\307\77\211\214\306>\12\215\306C\212" \ - "\307<\215\307\77\215\305@\213\310\77\215\306A\323\352\266\377\376\377" \ - "\377\377\377\376\377\377\204\377\377\377\2\377\377\375\377\376\377\210" \ - "\377\377\377\10\376\377\377\377\376\377\361\370\346\225\311K\212\307" \ - ">\215\306A\214\305@\215\305>\210\214\306>\3\214\305@\214\306>\307\341" \ - "\240\203\376\377\377\2\377\377\375\376\377\377\210\377\377\377\5\376" \ - "\377\377\377\376\372\376\377\375\376\376\376\377\377\377\202\377\376" \ - "\377\1\334\355\301\210\214\306>\10\215\306A\213\310\77\215\305@\214\306" \ - ">\214\306<\215\306A\214\306>\254\322o\232\377\377\377\6\376\376\376\377" \ - "\377\377\376\376\376\302\302\302FFH;;=\206::<\1;;=\202::<\202;;=\203" \ - "::<\1;;=\204::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\203::<\2;;=::<\202" \ - ";;=\2__a\332\332\332\226\377\377\377\3\316\316\316::<;;=\203::<\1kkm" \ - "\222\377\377\377\7\376\376\376\377\377\377\376\376\376\363\363\363__" \ - "a::<;;=\204::<\1\203\203\203\202\377\377\377\2\376\376\376\377\377\377" \ - "\202\376\376\376\205\377\377\377\1kkm\202::<\1;;=\202::<\5TTV\377\377" \ - "\377\376\376\376\377\377\377\376\376\376\245\377\377\377\2\347\347\347" \ - "99;\202::<\1;;=\202::<\1\235\235\237\206\377\377\377\1\376\376\376\202" \ - "\377\377\377\2\376\376\376\234\234\234\224::<\1;;=\202::<\3""99;::<;" \ - ";=\204::<\1;;=\204::<\3;;=GGI\250\250\252\230\377\377\377\2\234\234\236" \ - ";;=\232::<\10;;=99;;;=::<;;=::<:::\316\316\316\230\377\377\377\10\377" \ - "\376\377\212\306@\214\305@\213\310=\214\306<\215\306A\214\307;\215\306" \ - "A\240\214\306>\10\214\305@\212\307<\214\306<\214\305@\212\306@\342\360" \ - "\315\376\377\377\377\376\377\210\377\377\377\212\214\306>\4\216\306\77" \ - "\212\306B\214\306>\250\325n\202\377\376\377\210\377\377\377\1\377\376" \ - "\377\202\377\377\377\5\376\377\375\342\362\316\214\305B\215\305@\214" \ - "\306<\210\214\306>\202\212\307>\5\343\361\320\377\377\377\377\377\375" \ - "\376\377\377\377\376\377\223\377\377\377\6\377\376\377\377\377\375\371" \ - "\372\364\223\312J\212\306@\215\305@\210\214\306>\10\214\305@\215\305" \ - ">\212\307>\304\343\240\377\377\375\377\377\377\377\377\375\377\376\377" \ - "\220\377\377\377\11\376\377\377\377\377\377\333\355\303\226\310K\213" \ - "\310\77\214\306>\215\305@\215\306A\214\305@\203\214\306>\7\215\305>\215" \ - "\305@\214\305@\212\307>\215\305>\215\307\77\215\306A\202\214\306<\5\215" \ - "\306A\213\305=\215\305@\215\307\77\213\305;\202\215\305@\13\215\307\77" \ - "\213\310\77\214\305@\215\307\77\212\307>\215\305>\214\306>\212\306@\235" \ - "\315U\347\365\334\377\376\377\220\377\377\377\15\376\376\376\377\377" \ - "\375\377\377\377\244\317c\213\307A\214\306<\213\307A\215\305>\215\305" \ - "<\215\307\77\214\306<\215\307\77\214\305@\202\215\307\77\12\214\305@" \ - "\215\306A\215\305@\234\315W\367\375\363\377\376\377\376\377\377\377\377" \ - "\375\376\377\377\377\376\377\220\377\377\377\10\260\331{\215\307=\212" \ - "\307>\213\307A\214\306>\215\305@\215\307\77\215\305>\210\214\306>\3\314" \ - "\345\253\377\377\377\376\377\375\202\377\376\377\2\377\377\377\376\377" \ - "\377\222\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \ - "\377\3\364\364\364\220\220\220;;=\211::<\2;;=::<\202;;=\2::<;;=\202:" \ - ":<\4;;=::<;;=99;\203::<\2;;=99;\206::<\2GGI\247\247\251\203\377\377\377" \ - "\1\376\376\376\222\377\377\377\6\376\376\376\377\377\377\316\316\316" \ - ";;=99;;;=\202::<\2lln\376\376\376\202\377\377\377\1\376\376\376\221\377" \ - "\377\377\4\376\376\376\333\333\333FFH;;=\202::<\1;;=\202::<\1\265\265" \ - "\265\202\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376\377" \ - "\377\377\376\376\376\377\377\377\316\316\320\202::<\2;;=99;\202;;=\1" \ - "\264\264\266\202\377\377\377\1\376\376\376\244\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\205\205\207\204::<\3;;=FFH\363\363\363\206\377" \ - "\377\377\1\376\376\376\202\377\377\377\3\233\233\233::<;;=\220::<\3""9" \ - "9;;;=99;\202::<\1;;=\203::<\1;;=\204::<\7;;=::<SSU\250\250\252\362\362" \ - "\364\377\377\377\376\376\376\225\377\377\377\3\376\376\376\377\377\377" \ - "\235\235\237\202::<\1;;=\231::<\2;;=99;\204::<\1\316\316\316\230\377" \ - "\377\377\10\377\377\373\212\311=\212\306@\216\306A\215\305>\215\307\77" \ - "\214\306>\215\306A\240\214\306>\7\214\306<\214\306>\216\306\77\214\306" \ - ">\214\305@\343\361\320\377\377\375\211\377\377\377\210\214\306>\10\213" \ - "\307A\212\306@\215\305@\212\307<\215\307\77\247\324o\375\377\376\376" \ - "\377\377\211\377\377\377\7\376\377\375\377\377\377\377\377\375\342\360" \ - "\315\214\305@\213\305=\215\307\77\210\214\306>\10\215\305>\215\307\77" \ - "\343\361\316\376\376\376\377\376\377\376\377\377\377\377\375\376\377" \ - "\372\220\377\377\377\10\376\377\377\377\376\377\377\377\375\377\376\374" \ - "\376\377\375\343\362\321\212\307>\214\307;\210\214\306>\4\215\307=\215" \ - "\304B\213\307A\305\342\240\203\377\377\377\1\376\377\377\222\377\377" \ - "\377\21\377\376\377\367\374\365\267\332\206\215\306A\212\306@\214\306" \ - "<\214\306>\215\306A\215\307\77\214\306>\214\305@\212\306B\212\306@\212" \ - "\307<\215\307\77\214\306>\214\305@\202\215\305@\5\214\305@\214\306>\214" \ - "\305@\212\307>\215\306A\202\214\305@\11\214\307;\214\306>\215\306A\214" \ - "\305@\215\305>\212\306@\222\311I\306\343\240\366\373\364\224\377\377" \ - "\377\6\303\342\237\217\304@\214\306<\214\306>\215\306C\212\306B\204\214" \ - "\305@\1\215\306A\202\214\305@\11\215\306A\214\306<\214\306>\341\361\314" \ - "\377\377\377\376\377\375\377\377\377\377\375\377\377\377\375\221\377" \ - "\377\377\10\370\373\364\224\307N\215\305@\215\305>\212\307<\215\306A" \ - "\212\307<\215\306A\210\214\306>\10\215\307=\346\364\332\376\377\375\376" \ - "\377\373\377\377\377\376\376\377\377\376\377\377\377\375\230\377\377" \ - "\377\5\346\346\350\204\204\206GGI::<;;=\202::<\5;;=::<;;=::<;;=\202:" \ - ":<\3;;=::<;;=\202::<\5;;=99;;;=::<;;=\207::<\3FFH\234\234\234\363\363" \ - "\363\203\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376\202" \ - "\377\377\377\4\316\316\316::<;;=99;\202;;=\1kkm\202\377\377\377\1\376" \ - "\376\376\220\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376" \ - "\266\266\26699;;;=::<\202;;=\3::<GGG\332\332\332\207\377\377\377\2\376" \ - "\376\376\204\204\206\202;;=\4::<;;=::<SSU\252\377\377\377\2\376\376\376" \ - "\346\346\350\202::<\5;;=::<99;;;;\266\266\266\203\377\377\377\1\376\376" \ - "\376\205\377\377\377\3\235\235\235::<99;\220::<\1;;=\205::<\203;;=\1" \ - "99;\203::<\3SSS\221\221\221\316\316\316\205\377\377\377\1\376\376\376" \ - "\222\377\377\377\1\376\376\376\203\377\377\377\3\234\234\236::<;;=\232" \ - "::<\7""99;::<;:\77::<;;=99;\317\317\321\230\377\377\377\7\377\375\377" \ - "\214\306<\213\307A\215\305>\215\307\77\212\307>\216\306\77\241\214\306" \ - ">\1\215\306C\202\215\305@\5\212\306@\215\307=\343\361\320\377\377\377" \ - "\377\376\377\210\377\377\377\210\214\306>\10\215\305<\215\307\77\216" \ - "\306\77\214\306>\216\305C\252\324r\377\377\377\377\377\373\211\377\377" \ - "\377\7\375\377\376\377\377\377\377\375\376\343\361\316\215\307=\212\307" \ - ">\215\305>\210\214\306>\10\214\305@\215\305<\342\362\316\377\377\375" \ - "\377\376\377\375\377\374\376\376\377\376\377\377\222\377\377\377\1\375" \ - "\377\372\202\377\377\377\3\377\376\377\304\341\237\215\307\77\210\214" \ - "\306>\10\212\307;\215\307\77\213\305=\305\342\240\377\377\377\377\376" \ - "\374\377\377\375\376\377\377\221\377\377\377\22\377\376\377\377\377\375" \ - "\376\377\377\377\375\376\361\367\351\270\334\204\214\306>\215\307\77" \ - "\214\305@\212\306@\213\307A\212\306@\213\310\77\214\306>\215\304B\214" \ - "\306>\212\307<\214\306>\202\216\306A\6\214\306>\213\310\77\214\305@\215" \ - "\305<\215\305>\215\307=\202\213\310\77\10\215\306A\214\306>\215\306A" \ - "\222\311I\300\336\226\361\370\346\376\376\376\377\377\377\202\377\376" \ - "\377\1\376\377\373\217\377\377\377\10\377\377\375\347\365\333\214\307" \ - ";\211\305A\213\304\77\215\307\77\215\305<\213\310\77\202\214\306>\1\215" \ - "\307\77\203\214\306>\4\215\307\77\214\306>\215\306A\275\337\223\202\377" \ - "\377\377\5\377\376\377\377\377\377\376\377\375\377\376\377\376\377\377" \ - "\220\377\377\377\10\375\377\376\331\357\301\215\307\77\215\305>\216\305" \ - "C\211\306=\220\305A\211\307@\210\214\306>\10\214\305@\246\321e\377\377" \ - "\377\377\376\377\376\377\377\377\377\375\376\377\377\377\376\377\227" \ - "\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363\266\266\270" \ - "__a\207::<\202;;=\203::<\2;;=99;\202;;=\2""99;::<\202;;=\1::<\203;;=" \ - "\3^^^\250\250\250\363\363\363\203\377\377\377\1\376\376\376\202\377\377" \ - "\377\1\376\376\376\224\377\377\377\4\316\316\316999::<;;=\202::<\1ll" \ - "l\205\377\377\377\1\376\376\376\217\377\377\377\6\376\376\376\377\377" \ - "\377\376\376\376\204\204\204::<;;=\203::<\3:::TTT\363\363\363\206\377" \ - "\377\377\10\347\347\347;;;99;::<;;=::<:::\234\234\236\253\377\377\377" \ - "\3\376\376\376lln;;=\202::<\3;;=999SSS\202\377\377\377\1\376\376\376" \ - "\203\377\377\377\4\376\376\376\377\377\377\376\376\376\234\234\234\223" \ - "::<\1""99;\202::<\1;;=\203::<\5kkmxxz\235\235\237\301\301\301\346\346" \ - "\346\207\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\221" \ - "\377\377\377\1\376\376\376\202\377\377\377\3\235\235\235::<;;=\232::" \ - "<\2;;=99;\202::<\3;;=::<\316\316\316\230\377\377\377\10\373\377\376\216" \ - "\306A\214\306<\213\304A\212\306@\214\305@\214\304\77\215\307\77\240\214" \ - "\306>\6\214\306<\215\306A\215\305@\216\310@\217\304@\341\361\314\212" \ - "\377\377\377\210\214\306>\7\215\307\77\213\310\77\213\305=\215\307\77" \ - "\214\304\77\253\323r\374\377\373\211\377\377\377\1\377\376\377\203\377" \ - "\377\377\3\342\362\315\215\305@\215\307=\211\214\306>\10\214\306<\215" \ - "\304B\341\363\313\374\377\375\376\376\377\377\377\377\377\375\376\377" \ - "\377\375\221\377\377\377\7\376\377\375\376\376\377\377\377\377\375\377" \ - "\374\377\377\377\377\377\375\253\323p\210\214\306>\5\215\307\77\215\305" \ - ">\217\304@\305\342\237\376\377\375\202\377\377\377\1\377\377\375\220" \ - "\377\377\377\1\376\377\377\202\377\376\377\202\376\377\375\202\377\377" \ - "\377\5\360\370\351\311\347\247\245\320e\215\305>\212\307>\202\214\306" \ - ">\5\215\306A\212\307>\215\305@\214\306>\214\306<\202\214\306>\2\214\306" \ - "<\214\306>\202\216\306A\14\214\306>\215\306A\215\305<\214\306>\213\305" \ - "=\255\331x\323\353\267\366\374\362\377\377\377\377\377\375\377\377\377" \ - "\376\377\377\217\377\377\377\2\376\376\376\377\377\377\202\377\377\375" \ - "\11\244\317d\214\306>\213\307A\214\306>\214\305@\214\306>\215\306A\214" \ - "\306<\215\307\77\202\214\306>\202\214\305@\13\215\305<\215\305@\230\316" \ - "V\370\373\360\376\377\375\377\377\377\377\376\377\376\376\376\377\377" \ - "\375\377\376\377\376\377\377\220\377\377\377\10\376\376\376\377\376\377" \ - "\262\327x\214\306>\216\306A\215\307=\215\305<\215\306A\211\214\306>\6" \ - "\215\306C\307\341\240\376\377\373\376\377\377\376\377\375\376\376\374" \ - "\236\377\377\377\4\346\346\350\266\266\270\204\204\206SSU\202::<\1;;" \ - "=\202::<\1;;=\202::<\202;;=\3""99;::<;;=\203::<\4GGIxxz\247\247\247\347" \ - "\347\347\212\377\377\377\1\376\376\376\223\377\377\377\1\364\364\364" \ - "\205\316\316\316\1\332\332\332\203\377\377\377\202\376\376\376\221\377" \ - "\377\377\1\376\376\376\202\377\377\377\202\316\316\316\203\316\316\320" \ - "\3\316\316\316\317\317\317\346\346\346\206\377\377\377\5\346\346\346" \ - "\316\316\316\317\317\317\316\316\316\315\315\315\202\316\316\316\1\363" \ - "\363\363\250\377\377\377\1\376\376\376\203\377\377\377\3\346\346\346" \ - "\315\315\315\317\317\317\202\316\316\320\3\317\317\317\315\315\315\363" \ - "\363\363\202\377\377\377\202\376\376\376\204\377\377\377\3\346\346\346" \ - "\316\316\316\316\316\320\224\316\316\316\1\315\315\315\203\377\377\377" \ - "\1\376\376\376\215\377\377\377\1\376\376\376\225\377\377\377\2\346\346" \ - "\346\317\317\317\232\316\316\316\1\317\317\317\203\316\316\316\4\317" \ - "\317\317\315\315\315\316\316\316\363\363\363\231\377\377\377\3\340\361" \ - "\317\342\360\317\342\362\316\202\343\361\316\2\342\360\315\343\361\316" \ - "\240\342\361\320\10\342\362\316\342\361\320\343\363\317\341\360\317\342" \ - "\361\320\370\373\364\376\377\375\376\377\377\210\377\377\377\210\342" \ - "\361\320\7\341\360\317\342\362\316\343\361\316\342\360\314\342\361\320" \ - "\350\364\336\377\376\374\211\377\377\377\10\377\376\377\377\377\375\377" \ - "\377\377\377\377\375\370\373\362\341\360\321\340\357\316\342\362\316" \ - "\210\342\361\320\3\342\362\316\342\361\320\371\373\360\203\377\377\377" \ - "\202\377\376\377\220\377\377\377\4\377\377\375\376\376\376\377\376\377" \ - "\376\377\375\203\377\377\377\1\365\375\362\210\342\361\320\4\341\360" \ - "\321\342\361\322\343\363\317\360\367\345\224\377\377\377\7\376\377\377" \ - "\376\377\375\377\377\375\377\376\377\377\377\375\377\375\376\377\376" \ - "\377\202\377\377\377\30\376\376\377\364\370\351\333\354\277\277\337\224" \ - "\247\324k\224\313K\214\305@\214\306>\212\306@\214\306>\214\305B\215\306" \ - "C\215\307\77\212\306@\214\306>\215\307\77\241\321c\257\330|\304\342\242" \ - "\341\361\315\377\377\377\377\376\377\376\377\373\377\377\377\202\377" \ - "\377\375\1\377\376\377\203\377\377\377\1\376\377\377\212\377\377\377" \ - "\1\376\376\376\203\377\377\377\13\376\376\374\372\372\370\342\361\320" \ - "\343\361\316\342\362\316\341\360\317\342\361\320\341\360\317\342\362" \ - "\316\342\361\322\342\361\320\202\341\361\315\6\342\361\320\341\360\317" \ - "\343\361\315\343\361\320\356\371\350\377\376\377\203\377\377\377\1\376" \ - "\377\375\202\377\377\377\1\376\377\375\222\377\377\377\6\366\373\364" \ - "\342\361\320\342\362\316\342\360\317\341\362\316\343\361\320\210\342" \ - "\361\320\10\341\362\316\341\361\315\352\364\334\377\377\377\377\376\377" \ - "\377\377\377\376\377\377\376\377\375\222\377\377\377\202\376\376\376" \ - "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377" \ - "\377\377\3\376\376\376\377\377\377\375\375\375\202\377\377\377\5\363" \ - "\363\363\316\316\316\264\264\264\235\235\235\233\233\233\202kkk\202k" \ - "km\3llnkkmyy{\202\234\234\236\6\316\316\320\346\346\346\377\377\377\376" \ - "\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376\204\377" \ - "\377\377\1\376\376\376\240\377\377\377\1\376\376\376\231\377\377\377" \ - "\1\375\375\375\203\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \ - "\376\202\377\377\377\1\376\376\376\242\377\377\377\1\376\376\376\206" \ - "\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377\377\377\1" \ - "\376\376\376\202\377\377\377\202\376\376\376\225\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\202\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\214\377\377\377\3\376\376\376\377\377\377\376\376\376\265" \ - "\377\377\377\1\375\375\375\234\377\377\377\7\376\377\377\377\376\377" \ - "\376\377\377\376\376\374\377\376\377\377\377\377\377\377\375\240\377" \ - "\377\377\1\377\377\375\202\377\377\377\5\377\376\377\376\376\376\377" \ - "\376\377\376\376\377\377\377\375\221\377\377\377\7\375\376\377\377\377" \ - "\377\377\376\377\377\377\375\376\377\377\377\377\373\377\376\377\210" \ - "\377\377\377\5\377\376\377\377\377\377\376\376\374\376\377\377\377\377" \ - "\377\202\377\377\375\1\376\377\377\210\377\377\377\6\376\377\377\375" \ - "\376\377\377\376\377\377\377\377\376\377\377\377\377\377\202\377\377" \ - "\375\224\377\377\377\202\377\376\377\2\374\377\377\377\376\377\210\377" \ - "\377\377\3\376\377\377\376\376\376\376\377\377\202\377\377\377\3\375" \ - "\377\376\377\377\377\377\376\377\220\377\377\377\202\377\376\377\2\376" \ - "\377\377\375\376\377\202\377\377\377\4\377\377\375\377\376\377\377\377" \ - "\377\377\377\375\202\376\377\377\7\377\377\377\377\376\377\377\377\377" \ - "\376\377\375\370\373\364\344\357\315\342\361\320\202\342\362\315\14\340" \ - "\357\316\345\360\316\376\377\373\376\376\376\377\377\377\377\375\376" \ - "\377\377\375\377\377\377\375\377\376\377\377\377\377\376\377\377\377" \ - "\375\202\376\377\375\5\376\377\377\377\377\377\377\377\375\376\376\376" \ - "\377\376\377\214\377\377\377\1\376\376\376\202\377\377\377\5\377\377" \ - "\375\376\375\377\377\377\377\376\376\377\377\377\375\204\377\377\377" \ - "\1\377\377\375\205\377\377\377\202\377\376\377\2\377\377\377\377\377" \ - "\375\202\377\377\377\202\376\377\377\222\377\377\377\5\377\377\375\377" \ - "\377\377\377\377\375\377\377\377\377\377\375\202\377\377\377\1\377\376" \ - "\372\212\377\377\377\1\377\375\377\202\377\377\377\3\377\376\377\377" \ - "\377\377\377\377\375\225\377\377\377\1\376\376\376\211\377\377\377\1" \ - "\376\376\376\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376" \ - "\376\206\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377\377" \ - "\377\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\5\376" \ - "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\223\377\377" \ - "\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377\3\376\376" \ - "\376\377\377\377\376\376\376\203\377\377\377\3\376\376\376\377\377\377" \ - "\376\376\376\203\377\377\377\1\376\376\376\205\377\377\377\1\376\376" \ - "\376\246\377\377\377\3\376\376\376\377\377\377\376\376\376\220\377\377" \ - "\377\1\376\376\376\246\377\377\377\1\376\376\376\225\377\377\377\1\376" \ - "\376\376\202\377\377\377\1\376\376\376\240\377\377\377\1\376\376\376" \ - "\230\377\377\377\6\377\377\375\377\377\377\377\376\377\376\377\375\374" \ - "\377\377\376\375\377\242\377\377\377\202\377\376\377\6\376\376\376\375" \ - "\376\377\377\377\377\377\377\375\377\377\377\376\377\375\220\377\377" \ - "\377\7\377\377\375\377\377\377\377\377\375\377\375\376\376\377\375\376" \ - "\377\377\376\376\376\212\377\377\377\4\377\376\377\377\377\375\377\377" \ - "\377\377\377\375\203\377\376\377\210\377\377\377\5\377\377\375\377\377" \ - "\377\377\375\376\377\376\377\377\377\375\202\377\377\377\1\376\377\377" \ - "\221\377\377\377\1\375\376\377\203\377\377\375\2\376\377\375\377\375" \ - "\376\211\377\377\377\204\377\376\377\4\377\377\377\376\377\375\377\377" \ - "\375\377\376\377\221\377\377\377\5\376\377\377\376\376\376\377\377\373" \ - "\376\376\377\376\377\377\202\377\377\377\2\377\376\377\377\377\375\202" \ - "\377\377\377\7\377\377\375\377\376\377\376\376\377\377\377\377\376\377" \ - "\377\376\377\375\376\377\377\202\377\377\377\203\376\377\377\2\377\377" \ - "\377\376\376\374\202\377\376\377\13\376\376\376\377\377\375\377\377\377" \ - "\377\375\376\376\377\377\377\377\377\376\376\377\377\376\377\376\376" \ - "\374\376\377\377\377\377\375\221\377\377\377\203\377\377\375\4\377\377" \ - "\377\377\377\375\377\376\377\376\376\376\210\377\377\377\1\377\377\373" \ - "\203\377\377\377\1\377\377\375\202\376\377\377\222\377\377\377\1\377" \ - "\377\375\202\377\376\377\3\377\377\377\377\376\377\377\376\374\202\376" \ - "\377\377\210\377\377\377\4\377\377\375\377\377\377\376\377\375\377\375" \ - "\377\202\376\377\377\1\377\376\375\227\377\377\377\1\376\376\376\207" \ - "\377\377\377\1\376\376\376\217\377\377\377\1\376\376\376\205\377\377" \ - "\377\1\376\376\376\204\377\377\377\1\376\376\376\233\377\377\377\1\376" \ - "\376\376\211\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376" \ - "\206\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376\262\377" \ - "\377\377\1\376\376\376\212\377\377\377\1\376\376\376\202\377\377\377" \ - "\1\376\376\376\202\377\377\377\1\376\376\376\225\377\377\377\1\376\376" \ - "\376\306\377\377\377\1\376\376\376\235\377\377\377\7\377\376\377\376" \ - "\377\377\377\377\377\377\377\375\376\375\377\377\377\375\377\376\377" \ - "\241\377\377\377\1\376\377\377\203\377\377\377\3\377\377\375\377\375" \ - "\376\377\376\377\221\377\377\377\202\376\377\377\5\377\377\377\377\377" \ - "\375\377\377\377\377\376\377\377\377\375\211\377\377\377\203\377\377" \ - "\375\202\377\377\377\202\376\377\377\1\377\377\375\212\377\377\377\202" \ - "\376\377\375\3\376\377\377\377\377\375\377\376\377\223\377\377\377\6" \ - "\377\377\375\377\376\377\374\377\377\377\377\377\377\376\377\376\377" \ - "\375\210\377\377\377\3\377\377\375\376\377\377\377\377\375\202\377\377" \ - "\377\1\377\377\375\223\377\377\377\4\376\376\376\377\377\375\376\376" \ - "\376\377\376\377\202\377\377\375\1\376\376\376\206\377\377\377\1\377" \ - "\377\375\215\377\377\377\1\377\377\375\202\377\377\377\5\376\377\377" \ - "\377\377\377\376\376\374\377\377\377\377\376\377\202\377\377\377\1\376" \ - "\376\376\221\377\377\377\7\376\377\375\377\375\377\377\377\377\376\377" \ - "\377\377\377\377\377\377\373\377\376\377\202\377\377\377\1\377\377\375" \ - "\202\377\377\377\1\377\377\375\204\377\377\377\6\376\376\377\377\377" \ - "\375\376\377\377\377\377\375\377\376\377\375\377\374\222\377\377\377" \ - "\3\376\377\375\377\377\377\376\377\375\203\376\377\377\1\377\376\377" \ - "\211\377\377\377\7\377\377\373\377\376\377\377\377\375\377\377\377\377" \ - "\376\377\376\376\376\376\377\377") - - diff --git a/meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend b/meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend deleted file mode 100644 index 5a82fc872..000000000 --- a/meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend +++ /dev/null @@ -1,9 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += "file://psplash-colors.h" - -SPLASH_IMAGES="file://psplash-poky-img.h;outsuffix=default" - -do_configure_append () { - cp -f ${WORKDIR}/psplash-colors.h ${S} -} diff --git a/meta-agl-profile-core/recipes-devtools/gdb/.appends.core b/meta-agl-profile-core/recipes-devtools/gdb/.appends.core deleted file mode 100644 index e69de29bb..000000000 --- a/meta-agl-profile-core/recipes-devtools/gdb/.appends.core +++ /dev/null diff --git a/meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend b/meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend deleted file mode 100644 index 43807bd12..000000000 --- a/meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -EXTRA_OECONF += "--enable-threading" diff --git a/meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb b/meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb deleted file mode 100644 index 4c0bda071..000000000 --- a/meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "Low level CAN generator" -DESCRIPTION = "Generator used to customize low level CAN service with customs signals" -SECTION = "devel" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit cmake pkgconfig -BBCLASSEXTEND = "nativesdk" -DEPENDS = " cmake-apps-module" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/low-level-can-generator;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "0a3e354c3d81866e1a755367ab5592b3ced868bb" - -PV = "${AGLVERSION}" -S = "${WORKDIR}/git" - diff --git a/meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend deleted file mode 100644 index 18621dbfe..000000000 --- a/meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -RDEPENDS_${PN} += "nativesdk-low-level-can-generator \ - nativesdk-cmake-apps-module \ - nativesdk-cmake-apps-module-doc \ -" diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb b/meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb deleted file mode 100644 index ab7e8afa9..000000000 --- a/meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "\ -AsyncSSH is a Python package which provides an asynchronous client and \ -server implementation of the SSHv2 protocol on top of the Python \ -asyncio framework." -HOMEPAGE = "https://github.com/ronf/asyncssh" -LICENSE = "EPL-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=d9fc0efef5228704e7f5b37f27192723" - -SRC_URI[sha256sum] = "44bda34c7123f00c3df95d24e2dc8d43c4d17b456fbb8c434ef4f4a7ebb5265e" - -inherit pypi setuptools3 - -RDEPENDS_${PN} += "${PYTHON_PN}-asyncio ${PYTHON_PN}-cryptography" - -BBCLASSEXTEND = "native" diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb b/meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb deleted file mode 100644 index 5ff2d4ecf..000000000 --- a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb +++ /dev/null @@ -1,12 +0,0 @@ -DESCRIPTION = "pytest-dependency manages dependencies of tests." -HOMEPAGE = "https://github.com/RKrahl/pytest-dependency" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://README.rst;md5=35b9938ae48d25e6b8306232e98463dd" - -SRC_URI[sha256sum] = "c2a892906192663f85030a6ab91304e508e546cddfe557d692d61ec57a1d946b" - -inherit pypi setuptools3 - -DEPENDS += "${PYTHON_PN}-pytest-native" - -BBCLASSEXTEND = "native" diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb b/meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb deleted file mode 100644 index 5ed9b1d9d..000000000 --- a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb +++ /dev/null @@ -1,12 +0,0 @@ -DESCRIPTION = "pytest-reverse is a pytest plugin to reverse test order" -HOMEPAGE = "https://github.com/adamchainz/pytest-reverse" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=caf1f407ae86ecd57ab721dff94079b7" - -SRC_URI[sha256sum] = "40cbc47df8a262fed778e500f4d0b17d2d08ef8b9fbf899c0bab9488be192aac" - -inherit pypi setuptools3 - -DEPENDS += "${PYTHON_PN}-pytest-native" - -BBCLASSEXTEND = "native" diff --git a/meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend b/meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend deleted file mode 100644 index 1a6a98b7f..000000000 --- a/meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -QEMU_TARGETS_class-target_aglegvirt = " aarch64 x86_64" diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts deleted file mode 100755 index 1d1a5a059..000000000 --- a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# Copyright 2017 IoT.bzh. - -# Author: Ronan Le Martret <ronan.lemartret@iot.bzh> -# - -# The following script will run all the scriptlets found in #SYSCONFDIR#/agl-postinsts. - -agl_pi_dir="#SYSCONFDIR#/agl-postinsts" - -POSTINST_LOGGING=1 -LOGFILE=/var/log/agl-postinstall.log - -[ -e $LOGFILE ] && mv ${LOGFILE} ${LOGFILE}.old.$(date +%F--%H%M.%S) - -append_log=">>$LOGFILE 2>&1" - -exec_postinst_scriptlets() { - for i in `ls $agl_pi_dir`; do - i=$agl_pi_dir/$i - echo "Running postinst $i..." - [ "$POSTINST_LOGGING" = "1" ] && eval echo "Running postinst $i..." $append_log - if [ -x $i ]; then - eval sh -c $i $append_log - if [ $? -eq 0 ]; then - rm $i - else - echo "ERROR: postinst $i failed." - [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log - remove_agl_pi_dir=0 - fi - else - echo "ERROR: postinst $i do not exists or do not have execute permission." - [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i do not exists or do not have execute permission." $append_log - remove_agl_pi_dir=0 - fi - done -} - -remove_agl_pi_dir=1 -exec_postinst_scriptlets -systemctl daemon-reload - -# since all postinstalls executed successfully, remove the postinstalls directory -if [ $remove_agl_pi_dir = 1 ]; then - rm -rf $agl_pi_dir -fi diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service deleted file mode 100644 index 8f8667db6..000000000 --- a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description=Run pending agl postinsts -DefaultDependencies=no -After=#SYSTEMD_SERVICE_AFTER# -Before=#SYSTEMD_SERVICE_BEFORE# -ConditionPathExists=#SYSCONFDIR#/agl-postinsts - -[Service] -Type=oneshot -StandardOutput=journal+console -ExecStart=#SBINDIR#/run-agl-postinsts -ExecStartPost=#BASE_BINDIR#/systemctl disable run-agl-postinsts.service -RemainAfterExit=No -TimeoutSec=0 - -[Install] -WantedBy=multi-user.target diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb deleted file mode 100644 index 38bc66df8..000000000 --- a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb +++ /dev/null @@ -1,46 +0,0 @@ -SUMMARY = "Runs AGL postinstall scripts on first boot of the target device" -SECTION = "devel" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -SRC_URI = "file://run-agl-postinsts \ - file://run-agl-postinsts.service" - -S = "${WORKDIR}" - -inherit allarch systemd - -SYSTEMD_SERVICE_${PN} = "run-agl-postinsts.service" - -SYSTEMD_SERVICE_AFTER ?= "dbus.service cynagora.service" - -SYSTEMD_SERVICE_BEFORE ?= "systemd-user-sessions.service" - -do_configure() { - : -} - -do_compile () { - : -} - -do_install() { - install -d ${D}${sbindir} - install -m 0755 ${WORKDIR}/run-agl-postinsts ${D}${sbindir}/ - - install -d ${D}${systemd_unitdir}/system/ - install -m 0644 ${WORKDIR}/run-agl-postinsts.service ${D}${systemd_unitdir}/system/ - - sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \ - -e 's:#SBINDIR#:${sbindir}:g' \ - -e 's:#BASE_BINDIR#:${base_bindir}:g' \ - -e 's:#LOCALSTATEDIR#:${localstatedir}:g' \ - ${D}${sbindir}/run-agl-postinsts \ - ${D}${systemd_unitdir}/system/run-agl-postinsts.service - - sed -i -e 's:#SYSTEMD_SERVICE_AFTER#:${SYSTEMD_SERVICE_AFTER}:g' \ - -e 's:#SYSTEMD_SERVICE_BEFORE#:${SYSTEMD_SERVICE_BEFORE}:g' \ - ${D}${systemd_unitdir}/system/run-agl-postinsts.service -} - diff --git a/meta-agl-profile-core/recipes-extended/gperf/.appends.core b/meta-agl-profile-core/recipes-extended/gperf/.appends.core deleted file mode 100644 index e69de29bb..000000000 --- a/meta-agl-profile-core/recipes-extended/gperf/.appends.core +++ /dev/null diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch b/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch deleted file mode 100644 index dd811c81b..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch +++ /dev/null @@ -1,472 +0,0 @@ -From 9cb7cb85f59509ac445116e9458c502cf6cb74e6 Mon Sep 17 00:00:00 2001 -From: Christian Gromm <christian.gromm@microchip.com> -Date: Thu, 9 Nov 2017 13:20:23 +0100 -Subject: [PATCH 2/2] src: most: add auto conf feature - -This patch adds the auto configuration feature to the driver -sources. It is needed to have the driver configured automatically -upon start up w/o the need for userspace to set up sysfs. - -Signed-off-by: Christian Gromm <christian.gromm@microchip.com> ---- - driver/Makefile | 3 + - driver/default_conf.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++ - driver/include/mostcore.h | 64 ++++++++++++++++++ - driver/mostcore/core.c | 120 ++++++++++++++++++++++++++++------ - 4 files changed, 331 insertions(+), 18 deletions(-) - create mode 100644 driver/default_conf.c - -diff --git a/Makefile b/Makefile -index e77a4b6..6d74ebe 100644 ---- a/Makefile -+++ b/Makefile -@@ -6,6 +6,9 @@ obj-m := mostcore.o - mostcore-y := mostcore/core.o - CFLAGS_core.o := -I$(src)/include/ - -+obj-m += default_conf.o -+CFLAGL_default_conf.o := -I$(src)/include -+ - obj-m += aim_cdev.o - aim_cdev-y := aim-cdev/cdev.o - CFLAGS_cdev.o := -I$(src)/include/ -diff --git a/default_conf.c b/default_conf.c -new file mode 100644 -index 0000000..adb1786 ---- /dev/null -+++ b/default_conf.c -@@ -0,0 +1,162 @@ -+/* -+ * default_conf.c - Default configuration for the MOST channels. -+ * -+ * Copyright (C) 2017, Microchip Technology Germany II GmbH & Co. KG -+ * -+ * This program 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. -+ * -+ * This file is licensed under GPLv2. -+ */ -+ -+#include "include/mostcore.h" -+#include <linux/module.h> -+ -+static struct most_config_probe config_probes[] = { -+ -+ /* OS81118 Control */ -+ { -+ .ch_name = "ep8f", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-crx", -+ }, -+ { -+ .ch_name = "ep0f", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-ctx", -+ }, -+ /* OS81118 Async */ -+ { -+ .ch_name = "ep8e", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-arx", -+ }, -+ { -+ .ch_name = "ep0e", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-atx", -+ }, -+ /* OS81210 Control */ -+ { -+ .ch_name = "ep87", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-crx", -+ }, -+ { -+ .ch_name = "ep07", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_CONTROL, -+ .num_buffers = 16, -+ .buffer_size = 64, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-ctx", -+ }, -+ /* OS81210 Async */ -+ { -+ .ch_name = "ep86", -+ .cfg = { -+ .direction = MOST_CH_RX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-arx", -+ }, -+ { -+ .ch_name = "ep06", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ASYNC, -+ .num_buffers = 20, -+ .buffer_size = 1522, -+ }, -+ .aim_name = "networking", -+ .aim_param = "inic-usb-atx", -+ }, -+ /* Streaming channels (common for all INICs) */ -+ { -+ .ch_name = "ep01", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_SYNC, -+ .num_buffers = 8, -+ .buffer_size = 2 * 12 * 42, -+ .subbuffer_size = 12, -+ .packets_per_xact = 42, -+ }, -+ .aim_name = "sound", -+ .aim_param = "ep01-6ch.6x16", -+ }, -+ { -+ .ch_name = "ep02", -+ .cfg = { -+ .direction = MOST_CH_TX, -+ .data_type = MOST_CH_ISOC, -+ .num_buffers = 8, -+ .buffer_size = 40 * 188, -+ .subbuffer_size = 188, -+ .packets_per_xact = 2, -+ }, -+ .aim_name = "cdev", -+ .aim_param = "inic-usb-itx1", -+ }, -+ -+ /* sentinel */ -+ {} -+}; -+ -+static struct most_config_set config_set = { -+ .probes = config_probes -+}; -+ -+static int __init mod_init(void) -+{ -+ most_register_config_set(&config_set); -+ return 0; -+} -+ -+static void __exit mod_exit(void) -+{ -+ most_deregister_config_set(&config_set); -+} -+ -+module_init(mod_init); -+module_exit(mod_exit); -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Andrey Shvetsov <andrey.shvetsov@k2l.de>"); -+MODULE_DESCRIPTION("Default configuration for the MOST channels"); -diff --git a/include/mostcore.h b/include/mostcore.h -index dc87121..3c00efb 100644 ---- a/include/mostcore.h -+++ b/include/mostcore.h -@@ -145,6 +145,39 @@ struct most_channel_config { - u16 dbr_size; - }; - -+/** -+ * struct most_config_probe - matching rule, channel configuration and -+ * the optional AIM name used for the automatic configuration and linking -+ * of the channel -+ * @dev_name: optional matching device id -+ * ("usb_device 1-1:1.0," "dim2-12345678", etc.) -+ * @ch_name: matching channel name ("ep8f", "ca2", etc.) -+ * @cfg: configuration that will be applied for the found channel -+ * @aim_name: optional name of the AIM that will be linked to the channel -+ * ("cdev", "networking", "v4l", "sound") -+ * @aim_param: AIM dependent parameter (it is the character device name -+ * for the cdev AIM, PCM format for the audio AIM, etc.) -+ */ -+struct most_config_probe { -+ const char *dev_name; -+ const char *ch_name; -+ struct most_channel_config cfg; -+ const char *aim_name; -+ const char *aim_param; -+}; -+ -+/** -+ * struct most_config_set - the configuration set containing -+ * several automatic configurations for the different channels -+ * @probes: list of the matching rules and the configurations, -+ * that must be ended with the empty structure -+ * @list: list head used by the MostCore -+ */ -+struct most_config_set { -+ const struct most_config_probe *probes; -+ struct list_head list; -+}; -+ - /* - * struct mbo - MOST Buffer Object. - * @context: context for core completion handler -@@ -285,6 +318,37 @@ struct most_aim { - }; - - /** -+ * most_register_config_set - registers the configuration set -+ * -+ * @cfg_set: configuration set to be registered for the future probes -+ * -+ * The function registers the given configuration set. -+ * -+ * It is possible to register or deregister several configuration sets -+ * independently. Different configuration sets may contain the -+ * overlapped matching rules but later registered configuration set has -+ * the higher priority over the prior registered set. -+ * -+ * The only the first matched configuration is applied for each -+ * channel. -+ * -+ * The configuration for the channel is applied at the time of -+ * registration of the parent most_interface. -+ */ -+void most_register_config_set(struct most_config_set *cfg_set); -+ -+/** -+ * most_deregister_config_set - deregisters the prior registered -+ * configuration set -+ * -+ * @cfg_set: configuration set to be deregistered -+ * -+ * The calling of this function does not change the current -+ * configuration of the channels. -+ */ -+void most_deregister_config_set(struct most_config_set *cfg_set); -+ -+/** - * most_register_interface - Registers instance of the interface. - * @iface: Pointer to the interface instance description. - * -diff --git a/mostcore/core.c b/mostcore/core.c -index 9e0a352..6035cf0 100644 ---- a/mostcore/core.c -+++ b/mostcore/core.c -@@ -36,6 +36,8 @@ static struct class *most_class; - static struct device *core_dev; - static struct ida mdev_id; - static int dummy_num_buffers; -+static struct list_head config_probes; -+struct mutex config_probes_mt; /* config_probes */ - - struct most_c_aim_obj { - struct most_aim *ptr; -@@ -918,6 +920,30 @@ most_c_obj *get_channel_by_name(char *mdev, char *mdev_ch) - return c; - } - -+static int link_channel_to_aim(struct most_c_obj *c, struct most_aim *aim, -+ char *aim_param) -+{ -+ int ret; -+ struct most_aim **aim_ptr; -+ -+ if (!c->aim0.ptr) -+ aim_ptr = &c->aim0.ptr; -+ else if (!c->aim1.ptr) -+ aim_ptr = &c->aim1.ptr; -+ else -+ return -ENOSPC; -+ -+ *aim_ptr = aim; -+ ret = aim->probe_channel(c->iface, c->channel_id, -+ &c->cfg, &c->kobj, aim_param); -+ if (ret) { -+ *aim_ptr = NULL; -+ return ret; -+ } -+ -+ return 0; -+} -+ - /** - * add_link_store - store() function for add_link attribute - * @aim_obj: pointer to AIM object -@@ -946,45 +972,33 @@ static ssize_t add_link_store(struct most_aim_obj *aim_obj, - size_t len) - { - struct most_c_obj *c; -- struct most_aim **aim_ptr; - char buffer[STRING_SIZE]; - char *mdev; - char *mdev_ch; -- char *mdev_devnod; -+ char *aim_param; - char devnod_buf[STRING_SIZE]; - int ret; - size_t max_len = min_t(size_t, len + 1, STRING_SIZE); - - strlcpy(buffer, buf, max_len); - -- ret = split_string(buffer, &mdev, &mdev_ch, &mdev_devnod); -+ ret = split_string(buffer, &mdev, &mdev_ch, &aim_param); - if (ret) - return ret; - -- if (!mdev_devnod || *mdev_devnod == 0) { -+ if (!aim_param || *aim_param == 0) { - snprintf(devnod_buf, sizeof(devnod_buf), "%s-%s", mdev, - mdev_ch); -- mdev_devnod = devnod_buf; -+ aim_param = devnod_buf; - } - - c = get_channel_by_name(mdev, mdev_ch); - if (IS_ERR(c)) - return -ENODEV; - -- if (!c->aim0.ptr) -- aim_ptr = &c->aim0.ptr; -- else if (!c->aim1.ptr) -- aim_ptr = &c->aim1.ptr; -- else -- return -ENOSPC; -- -- *aim_ptr = aim_obj->driver; -- ret = aim_obj->driver->probe_channel(c->iface, c->channel_id, -- &c->cfg, &c->kobj, mdev_devnod); -- if (ret) { -- *aim_ptr = NULL; -+ ret = link_channel_to_aim(c, aim_obj->driver, aim_param); -+ if (ret) - return ret; -- } - - return len; - } -@@ -1679,6 +1693,73 @@ int most_deregister_aim(struct most_aim *aim) - } - EXPORT_SYMBOL_GPL(most_deregister_aim); - -+void most_register_config_set(struct most_config_set *cfg_set) -+{ -+ mutex_lock(&config_probes_mt); -+ list_add(&cfg_set->list, &config_probes); -+ mutex_unlock(&config_probes_mt); -+} -+EXPORT_SYMBOL(most_register_config_set); -+ -+void most_deregister_config_set(struct most_config_set *cfg_set) -+{ -+ mutex_lock(&config_probes_mt); -+ list_del(&cfg_set->list); -+ mutex_unlock(&config_probes_mt); -+} -+EXPORT_SYMBOL(most_deregister_config_set); -+ -+static int probe_aim(struct most_c_obj *c, -+ const char *aim_name, const char *aim_param) -+{ -+ struct most_aim_obj *aim_obj; -+ char buf[STRING_SIZE]; -+ -+ list_for_each_entry(aim_obj, &aim_list, list) { -+ if (!strcmp(aim_obj->driver->name, aim_name)) { -+ strlcpy(buf, aim_param ? aim_param : "", sizeof(buf)); -+ return link_channel_to_aim(c, aim_obj->driver, buf); -+ } -+ } -+ return 0; -+} -+ -+static bool probe_config_set(struct most_c_obj *c, -+ const char *dev_name, const char *ch_name, -+ const struct most_config_probe *p) -+{ -+ int err; -+ -+ for (; p->ch_name; p++) { -+ if ((p->dev_name && strcmp(dev_name, p->dev_name)) || -+ strcmp(ch_name, p->ch_name)) -+ continue; -+ -+ c->cfg = p->cfg; -+ if (p->aim_name) { -+ err = probe_aim(c, p->aim_name, p->aim_param); -+ if (err) -+ pr_err("failed to autolink %s to %s: %d\n", -+ ch_name, p->aim_name, err); -+ } -+ return true; -+ } -+ return false; -+} -+ -+static void find_configuration(struct most_c_obj *c, const char *dev_name, -+ const char *ch_name) -+{ -+ struct most_config_set *plist; -+ -+ mutex_lock(&config_probes_mt); -+ list_for_each_entry(plist, &config_probes, list) { -+ if (probe_config_set(c, dev_name, ch_name, plist->probes)) -+ break; -+ } -+ mutex_unlock(&config_probes_mt); -+} -+ - /** - * most_register_interface - registers an interface with core - * @iface: pointer to the instance of the interface description. -@@ -1777,6 +1858,7 @@ struct kobject *most_register_interface(struct most_interface *iface) - mutex_init(&c->start_mutex); - mutex_init(&c->nq_mutex); - list_add_tail(&c->list, &inst->channel_list); -+ find_configuration(c, iface->description, channel_name); - } - pr_info("registered new MOST device mdev%d (%s)\n", - inst->dev_id, iface->description); -@@ -1880,6 +1962,8 @@ static int __init most_init(void) - pr_info("init()\n"); - INIT_LIST_HEAD(&instance_list); - INIT_LIST_HEAD(&aim_list); -+ INIT_LIST_HEAD(&config_probes); -+ mutex_init(&config_probes_mt); - ida_init(&mdev_id); - - err = bus_register(&most_bus); --- -2.7.4 - diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch b/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch deleted file mode 100644 index 4703844a1..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch +++ /dev/null @@ -1,26 +0,0 @@ -From b269994be937cbb31c0d73ecc899ca8a545a6a4a Mon Sep 17 00:00:00 2001 -From: Christian Gromm <christian.gromm@microchip.com> -Date: Mon, 4 Sep 2017 11:09:17 +0200 -Subject: [PATCH 3/5] core: remove kernel log for MBO status - -Signed-off-by: Christian Gromm <christian.gromm@microchip.com> ---- - driver/mostcore/core.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/mostcore/core.c b/mostcore/core.c -index 931efb9..595becc 100644 ---- a/mostcore/core.c -+++ b/mostcore/core.c -@@ -1348,8 +1348,6 @@ static void most_write_completion(struct mbo *mbo) - BUG_ON((!mbo) || (!mbo->context)); - - c = mbo->context; -- if (mbo->status == MBO_E_INVAL) -- pr_info("WARN: Tx MBO status: invalid\n"); - if (unlikely(c->is_poisoned || (mbo->status == MBO_E_CLOSE))) - trash_mbo(mbo); - else --- -2.7.4 - diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch b/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch deleted file mode 100644 index 010d4b0d0..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a5fd2ae8d4a3b2a8f7a33a4ea469ea7ee0d946ef Mon Sep 17 00:00:00 2001 -From: Christian Gromm <christian.gromm@microchip.com> -Date: Mon, 4 Sep 2017 15:36:38 +0200 -Subject: [PATCH 4/5] most: video: set device_caps - -Signed-off-by: Christian Gromm <christian.gromm@microchip.com> ---- - driver/aim-v4l2/video.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c -index e074841..6405a03 100644 ---- a/aim-v4l2/video.c -+++ b/aim-v4l2/video.c -@@ -263,6 +263,7 @@ static int vidioc_querycap(struct file *file, void *priv, - snprintf(cap->bus_info, sizeof(cap->bus_info), - "%s", mdev->iface->description); - -+ cap->device_caps = - cap->capabilities = - V4L2_CAP_READWRITE | - V4L2_CAP_TUNER | --- -2.7.4 - diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch b/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch deleted file mode 100644 index ebaee9e14..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 7518453386ad3e82008186a6c9ca86ed8c136801 Mon Sep 17 00:00:00 2001 -From: Christian Gromm <christian.gromm@microchip.com> -Date: Mon, 4 Sep 2017 16:08:38 +0200 -Subject: [PATCH 5/5] most: video: set V4L2_CAP_DEVICE_CAPS flag - -Signed-off-by: Christian Gromm <christian.gromm@microchip.com> ---- - driver/aim-v4l2/video.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c -index 6405a03..db75d4d 100644 ---- a/aim-v4l2/video.c -+++ b/aim-v4l2/video.c -@@ -265,6 +265,7 @@ static int vidioc_querycap(struct file *file, void *priv, - - cap->device_caps = - cap->capabilities = -+ V4L2_CAP_DEVICE_CAPS | - V4L2_CAP_READWRITE | - V4L2_CAP_TUNER | - V4L2_CAP_VIDEO_CAPTURE; --- -2.7.4 - diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch b/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch deleted file mode 100644 index 59c6ae671..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 63bcd9b421ae7927948bffec9566db47f40ea290 Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov <andrey.shvetsov@k2l.de> -Date: Tue, 30 Jan 2018 17:34:09 +0100 -Subject: [PATCH] staging: most: dim2: fix startup sequence - -Platform specific initializations (pdata->init) must be done before DIM2 -IP module startup (dim_startup). - -Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de> ---- - hdm-dim2/dim2_hdm.c | 90 +++++++++++++++++++++++++++++++++++++++--------------------------------------------------- - 1 file changed, 39 insertions(+), 51 deletions(-) - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 893b8e4..e4629a5 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -155,38 +155,6 @@ void dimcb_on_error(u8 error_id, const char *error_message) - } - - /** -- * startup_dim - initialize the dim2 interface -- * @pdev: platform device -- */ --static int startup_dim(struct platform_device *pdev) --{ -- struct dim2_hdm *dev = platform_get_drvdata(pdev); -- struct dim2_platform_data *pdata = pdev->dev.platform_data; -- u8 hal_ret; -- int ret; -- -- if (!pdata) { -- pr_err("missing platform data\n"); -- return -EINVAL; -- } -- -- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -- if (ret) -- return ret; -- -- pr_info("sync: num of frames per sub-buffer: %u\n", fcnt); -- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -- if (hal_ret != DIM_NO_ERROR) { -- pr_err("dim_startup failed: %d\n", hal_ret); -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -- return -ENODEV; -- } -- -- return 0; --} -- --/** - * try_start_dim_transfer - try to transfer a buffer on a channel - * @hdm_ch: channel specific data - * -@@ -727,10 +695,12 @@ static void dma_free(struct mbo *mbo, u32 size) - */ - static int dim2_probe(struct platform_device *pdev) - { -+ struct dim2_platform_data *pdata = pdev->dev.platform_data; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; - struct kobject *kobj; -+ u8 hal_ret; - int irq; - - dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); -@@ -745,38 +715,59 @@ static int dim2_probe(struct platform_device *pdev) - if (IS_ERR(dev->io_base)) - return PTR_ERR(dev->io_base); - -+ if (!pdata) { -+ dev_err(&pdev->dev, "missing platform data\n"); -+ return -EINVAL; -+ } -+ -+ ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -+ if (ret) -+ return ret; -+ -+ dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); -+ hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -+ if (hal_ret != DIM_NO_ERROR) { -+ dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); -+ ret = -ENODEV; -+ goto err_bsp_destroy; -+ } -+ - irq = platform_get_irq(pdev, 0); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); -- return irq; -+ ret = irq; -+ goto err_shutdown_dim; - } - - ret = devm_request_irq(&pdev->dev, irq, dim2_ahb_isr, 0, - "dim2_ahb0_int", dev); - if (ret) { - dev_err(&pdev->dev, "failed to request ahb0_int irq %d\n", irq); -- return ret; -+ goto err_shutdown_dim; - } - - irq = platform_get_irq(pdev, 1); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); -- return irq; -+ ret = irq; -+ goto err_shutdown_dim; - } - - ret = devm_request_irq(&pdev->dev, irq, dim2_mlb_isr, 0, - "dim2_mlb_int", dev); - if (ret) { - dev_err(&pdev->dev, "failed to request mlb_int irq %d\n", irq); -- return ret; -+ goto err_shutdown_dim; - } - - init_waitqueue_head(&dev->netinfo_waitq); - dev->deliver_netinfo = 0; -- dev->netinfo_task = kthread_run(&deliver_netinfo_thread, (void *)dev, -+ dev->netinfo_task = kthread_run(&deliver_netinfo_thread, dev, - "dim2_netinfo"); -- if (IS_ERR(dev->netinfo_task)) -- return PTR_ERR(dev->netinfo_task); -+ if (IS_ERR(dev->netinfo_task)) { -+ ret = PTR_ERR(dev->netinfo_task); -+ goto err_shutdown_dim; -+ } - - for (i = 0; i < DMA_CHANNELS; i++) { - struct most_channel_capability *cap = dev->capabilities + i; -@@ -833,20 +824,17 @@ static int dim2_probe(struct platform_device *pdev) - if (ret) - goto err_unreg_iface; - -- ret = startup_dim(pdev); -- if (ret) { -- dev_err(&pdev->dev, "failed to initialize DIM2\n"); -- goto err_destroy_bus; -- } -- - return 0; - --err_destroy_bus: -- dim2_sysfs_destroy(&dev->bus); - err_unreg_iface: - most_deregister_interface(&dev->most_iface); - err_stop_thread: - kthread_stop(dev->netinfo_task); -+err_shutdown_dim: -+ dim_shutdown(); -+err_bsp_destroy: -+ if (pdata && pdata->destroy) -+ pdata->destroy(pdata); - - return ret; - } -@@ -863,6 +851,10 @@ static int dim2_remove(struct platform_device *pdev) - struct dim2_platform_data *pdata = pdev->dev.platform_data; - unsigned long flags; - -+ dim2_sysfs_destroy(&dev->bus); -+ most_deregister_interface(&dev->most_iface); -+ kthread_stop(dev->netinfo_task); -+ - spin_lock_irqsave(&dim_lock, flags); - dim_shutdown(); - spin_unlock_irqrestore(&dim_lock, flags); -@@ -870,10 +862,6 @@ static int dim2_remove(struct platform_device *pdev) - if (pdata && pdata->destroy) - pdata->destroy(pdata); - -- dim2_sysfs_destroy(&dev->bus); -- most_deregister_interface(&dev->most_iface); -- kthread_stop(dev->netinfo_task); -- - /* - * break link to local platform_device_id struct - * to prevent crash by unload platform device module --- -libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch deleted file mode 100644 index 679fab79c..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch +++ /dev/null @@ -1,378 +0,0 @@ -From 8e16207392cd715ea88f6780981a3d55ab005588 Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov <andrey.shvetsov@k2l.de> -Date: Mon, 12 Feb 2018 12:23:37 +0100 -Subject: [PATCH] staging: most: dim2: use device tree - -Current dim2 driver expects the existence of a platform driver that -implements the platform specific initialization and delivery of the irq -numbers. - -This patch integrates the device tree activity and platform specific -code into the driver. - -Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de> ---- - hdm-dim2/dim2_hdm.c | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- - hdm-dim2/dim2_hdm.h | 28 ---------------------------- - hdm-dim2/platform/dim2_arwen_mlb3.c | 165 --------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_arwen_mlb6.c | 169 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_h2_dt.c | 227 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - hdm-dim2/platform/dim2_mx6q.c | 192 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - hdm-dim2/platform/dim2_mx6q_dt.c | 224 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 7 files changed, 193 insertions(+), 1034 deletions(-) - delete mode 100644 hdm-dim2/dim2_hdm.h - delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb3.c - delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb6.c - delete mode 100644 hdm-dim2/platform/dim2_h2_dt.c - delete mode 100644 hdm-dim2/platform/dim2_mx6q.c - delete mode 100644 hdm-dim2/platform/dim2_mx6q_dt.c - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index e4629a5..2dba917 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -14,6 +14,7 @@ - #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - - #include <linux/module.h> -+#include <linux/of_platform.h> - #include <linux/printk.h> - #include <linux/kernel.h> - #include <linux/init.h> -@@ -21,13 +22,13 @@ - #include <linux/interrupt.h> - #include <linux/slab.h> - #include <linux/io.h> -+#include <linux/clk.h> - #include <linux/dma-mapping.h> - #include <linux/sched.h> - #include <linux/kthread.h> - - #include <mostcore.h> - #include "dim2_hal.h" --#include "dim2_hdm.h" - #include "dim2_errors.h" - #include "dim2_sysfs.h" - -@@ -93,6 +94,9 @@ struct dim2_hdm { - struct most_interface most_iface; - char name[16 + sizeof "dim2-"]; - void __iomem *io_base; -+ u8 clk_speed; -+ struct clk *clk; -+ struct clk *clk_pll; - struct task_struct *netinfo_task; - wait_queue_head_t netinfo_waitq; - int deliver_netinfo; -@@ -102,6 +106,12 @@ struct dim2_hdm { - struct medialb_bus bus; - void (*on_netinfo)(struct most_interface *, - unsigned char, unsigned char *); -+ void (*disable_platform)(struct platform_device *); -+}; -+ -+struct dim2_platform_data { -+ int (*enable)(struct platform_device *); -+ void (*disable)(struct platform_device *); - }; - - #define iface_to_hdm(iface) container_of(iface, struct dim2_hdm, most_iface) -@@ -686,6 +696,8 @@ static void dma_free(struct mbo *mbo, u32 size) - dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); - } - -+static const struct of_device_id dim2_of_match[]; -+ - /* - * dim2_probe - dim2 probe handler - * @pdev: platform device structure -@@ -695,7 +707,7 @@ static void dma_free(struct mbo *mbo, u32 size) - */ - static int dim2_probe(struct platform_device *pdev) - { -- struct dim2_platform_data *pdata = pdev->dev.platform_data; -+ const struct dim2_platform_data *pdata; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; -@@ -703,6 +715,8 @@ static int dim2_probe(struct platform_device *pdev) - u8 hal_ret; - int irq; - -+ enum { MLB_INT_IDX, AHB0_INT_IDX }; -+ - dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); - if (!dev) - return -ENOMEM; -@@ -710,29 +724,30 @@ static int dim2_probe(struct platform_device *pdev) - dev->atx_idx = -1; - - platform_set_drvdata(pdev, dev); -+ -+ dev->clk_speed = CLK_4096FS; -+ - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - dev->io_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(dev->io_base)) - return PTR_ERR(dev->io_base); - -- if (!pdata) { -- dev_err(&pdev->dev, "missing platform data\n"); -- return -EINVAL; -- } -- -- ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0; -+ pdata = of_match_node(dim2_of_match, pdev->dev.of_node)->data; -+ ret = pdata && pdata->enable ? pdata->enable(pdev) : 0; - if (ret) - return ret; - -+ dev->disable_platform = pdata ? pdata->disable : 0; -+ - dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt); -- hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt); -+ hal_ret = dim_startup(dev->io_base, dev->clk_speed, fcnt); - if (hal_ret != DIM_NO_ERROR) { - dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret); - ret = -ENODEV; -- goto err_bsp_destroy; -+ goto err_disable_platform; - } - -- irq = platform_get_irq(pdev, 0); -+ irq = platform_get_irq(pdev, AHB0_INT_IDX); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq); - ret = irq; -@@ -746,7 +761,7 @@ static int dim2_probe(struct platform_device *pdev) - goto err_shutdown_dim; - } - -- irq = platform_get_irq(pdev, 1); -+ irq = platform_get_irq(pdev, MLB_INT_IDX); - if (irq < 0) { - dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq); - ret = irq; -@@ -832,9 +847,9 @@ static int dim2_probe(struct platform_device *pdev) - kthread_stop(dev->netinfo_task); - err_shutdown_dim: - dim_shutdown(); --err_bsp_destroy: -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -+err_disable_platform: -+ if (dev->disable_platform) -+ dev->disable_platform(pdev); - - return ret; - } -@@ -848,7 +863,6 @@ static int dim2_probe(struct platform_device *pdev) - static int dim2_remove(struct platform_device *pdev) - { - struct dim2_hdm *dev = platform_get_drvdata(pdev); -- struct dim2_platform_data *pdata = pdev->dev.platform_data; - unsigned long flags; - - dim2_sysfs_destroy(&dev->bus); -@@ -859,37 +873,187 @@ static int dim2_remove(struct platform_device *pdev) - dim_shutdown(); - spin_unlock_irqrestore(&dim_lock, flags); - -- if (pdata && pdata->destroy) -- pdata->destroy(pdata); -+ if (dev->disable_platform) -+ dev->disable_platform(pdev); -+ -+ return 0; -+} -+ -+/* platform specific functions [[ */ -+ -+static int fsl_mx6_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, "mlb"); -+ if (IS_ERR_OR_NULL(dev->clk)) { -+ dev_err(&pdev->dev, "unable to get mlb clock\n"); -+ return -EFAULT; -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ if (dev->clk_speed >= CLK_2048FS) { -+ /* enable pll */ -+ dev->clk_pll = devm_clk_get(&pdev->dev, "pll8_mlb"); -+ if (IS_ERR_OR_NULL(dev->clk_pll)) { -+ dev_err(&pdev->dev, "unable to get mlb pll clock\n"); -+ clk_disable_unprepare(dev->clk); -+ return -EFAULT; -+ } -+ -+ writel(0x888, dev->io_base + 0x38); -+ clk_prepare_enable(dev->clk_pll); -+ } -+ -+ return 0; -+} -+ -+static void fsl_mx6_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ if (dev->clk_speed >= CLK_2048FS) -+ clk_disable_unprepare(dev->clk_pll); -+ -+ clk_disable_unprepare(dev->clk); -+} -+ -+static int rcar_h2_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, NULL); -+ if (IS_ERR(dev->clk)) { -+ dev_err(&pdev->dev, "cannot get clock\n"); -+ return PTR_ERR(dev->clk); -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ if (dev->clk_speed >= CLK_2048FS) { -+ /* enable MLP pll and LVDS drivers */ -+ writel(0x03, dev->io_base + 0x600); -+ /* set bias */ -+ writel(0x888, dev->io_base + 0x38); -+ } else { -+ /* PLL */ -+ writel(0x04, dev->io_base + 0x600); -+ } -+ - -- /* -- * break link to local platform_device_id struct -- * to prevent crash by unload platform device module -- */ -- pdev->id_entry = NULL; -+ /* BBCR = 0b11 */ -+ writel(0x03, dev->io_base + 0x500); -+ writel(0x0002FF02, dev->io_base + 0x508); - - return 0; - } - --static const struct platform_device_id dim2_id[] = { -- { "medialb_dim2" }, -- { }, /* Terminating entry */ -+static void rcar_h2_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ clk_disable_unprepare(dev->clk); -+ -+ /* disable PLLs and LVDS drivers */ -+ writel(0x0, dev->io_base + 0x600); -+} -+ -+static int rcar_m3_enable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ u32 enable_512fs = dev->clk_speed == CLK_512FS; -+ int ret; -+ -+ dev->clk = devm_clk_get(&pdev->dev, NULL); -+ if (IS_ERR(dev->clk)) { -+ dev_err(&pdev->dev, "cannot get clock\n"); -+ return PTR_ERR(dev->clk); -+ } -+ -+ ret = clk_prepare_enable(dev->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed"); -+ return ret; -+ } -+ -+ /* PLL */ -+ writel(0x04, dev->io_base + 0x600); -+ -+ writel(enable_512fs, dev->io_base + 0x604); -+ -+ /* BBCR = 0b11 */ -+ writel(0x03, dev->io_base + 0x500); -+ writel(0x0002FF02, dev->io_base + 0x508); -+ -+ return 0; -+} -+ -+static void rcar_m3_disable(struct platform_device *pdev) -+{ -+ struct dim2_hdm *dev = platform_get_drvdata(pdev); -+ -+ clk_disable_unprepare(dev->clk); -+ -+ /* disable PLLs and LVDS drivers */ -+ writel(0x0, dev->io_base + 0x600); -+} -+ -+/* ]] platform specific functions */ -+ -+enum dim2_platforms { FSL_MX6, RCAR_H2, RCAR_M3 }; -+ -+static struct dim2_platform_data plat_data[] = { -+ [FSL_MX6] = { .enable = fsl_mx6_enable, .disable = fsl_mx6_disable }, -+ [RCAR_H2] = { .enable = rcar_h2_enable, .disable = rcar_h2_disable }, -+ [RCAR_M3] = { .enable = rcar_m3_enable, .disable = rcar_m3_disable }, -+}; -+ -+static const struct of_device_id dim2_of_match[] = { -+ { -+ .compatible = "fsl,imx6q-mlb150", -+ .data = plat_data + FSL_MX6 -+ }, -+ { -+ .compatible = "renesas,mlp", -+ .data = plat_data + RCAR_H2 -+ }, -+ { -+ .compatible = "rcar,medialb-dim2", -+ .data = plat_data + RCAR_M3 -+ }, -+ { -+ .compatible = "xlnx,axi4-os62420_3pin-1.00.a", -+ }, -+ { -+ .compatible = "xlnx,axi4-os62420_6pin-1.00.a", -+ }, -+ {}, - }; - --MODULE_DEVICE_TABLE(platform, dim2_id); -+MODULE_DEVICE_TABLE(of, dim2_of_match); - - static struct platform_driver dim2_driver = { - .probe = dim2_probe, - .remove = dim2_remove, -- .id_table = dim2_id, - .driver = { - .name = "hdm_dim2", -+ .of_match_table = dim2_of_match, - }, - }; - - module_platform_driver(dim2_driver); - --MODULE_AUTHOR("Jain Roy Ambi <JainRoy.Ambi@microchip.com>"); - MODULE_AUTHOR("Andrey Shvetsov <andrey.shvetsov@k2l.de>"); - MODULE_DESCRIPTION("MediaLB DIM2 Hardware Dependent Module"); - MODULE_LICENSE("GPL"); -libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch deleted file mode 100644 index 1b01fb156..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 839ad403a2d8081a6c15f6fc2836b01919338f3c Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov <andrey.shvetsov@k2l.de> -Date: Mon, 12 Feb 2018 12:24:37 +0100 -Subject: [PATCH] staging: most: dim2: read clock speed from the device tree - -This implements reading of the clock speed parameter from the device -tree. - -Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de> ---- - Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - hdm-dim2/dim2_hdm.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 113 insertions(+), 1 deletion(-) - create mode 100644 Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 2dba917..05e1896 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -698,6 +698,42 @@ static void dma_free(struct mbo *mbo, u32 size) - - static const struct of_device_id dim2_of_match[]; - -+static struct { -+ const char *clock_speed; -+ u8 clk_speed; -+} clk_mt[] = { -+ { "256fs", CLK_256FS }, -+ { "512fs", CLK_512FS }, -+ { "1024fs", CLK_1024FS }, -+ { "2048fs", CLK_2048FS }, -+ { "3072fs", CLK_3072FS }, -+ { "4096fs", CLK_4096FS }, -+ { "6144fs", CLK_6144FS }, -+ { "8192fs", CLK_8192FS }, -+}; -+ -+/** -+ * get_dim2_clk_speed - converts string to DIM2 clock speed value -+ * -+ * @clock_speed: string in the format "{NUMBER}fs" -+ * @val: pointer to get one of the CLK_{NUMBER}FS values -+ * -+ * By success stores one of the CLK_{NUMBER}FS in the *val and returns 0, -+ * otherwise returns -EINVAL. -+ */ -+static int get_dim2_clk_speed(const char *clock_speed, u8 *val) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(clk_mt); i++) { -+ if (!strcmp(clock_speed, clk_mt[i].clock_speed)) { -+ *val = clk_mt[i].clk_speed; -+ return 0; -+ } -+ } -+ return -EINVAL; -+} -+ - /* - * dim2_probe - dim2 probe handler - * @pdev: platform device structure -@@ -708,6 +744,7 @@ static const struct of_device_id dim2_of_match[]; - static int dim2_probe(struct platform_device *pdev) - { - const struct dim2_platform_data *pdata; -+ const char *clock_speed; - struct dim2_hdm *dev; - struct resource *res; - int ret, i; -@@ -725,7 +762,18 @@ static int dim2_probe(struct platform_device *pdev) - - platform_set_drvdata(pdev, dev); - -- dev->clk_speed = CLK_4096FS; -+ ret = of_property_read_string(pdev->dev.of_node, -+ "microchip,clock-speed", &clock_speed); -+ if (ret) { -+ dev_err(&pdev->dev, "missing dt property clock-speed\n"); -+ return ret; -+ } -+ -+ ret = get_dim2_clk_speed(clock_speed, &dev->clk_speed); -+ if (ret) { -+ dev_err(&pdev->dev, "bad dt property clock-speed\n"); -+ return ret; -+ } - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - dev->io_base = devm_ioremap_resource(&pdev->dev, res); --- -libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch b/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch deleted file mode 100644 index 08cd6f99d..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov <andrey.shvetsov@k2l.de> -Date: Mon, 12 Feb 2018 12:25:37 +0100 -Subject: [PATCH] staging: most: dim2: use device for coherent memory allocation - -On several modern architectures the allocation of coherent memory needs -a device that has the dma_ops properly set. This patch enables use of -the DIM2 platform device for the allocation process. - -Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de> ---- - hdm-dim2/dim2_hdm.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c -index 05e1896..1847091 100644 ---- a/hdm-dim2/dim2_hdm.c -+++ b/hdm-dim2/dim2_hdm.c -@@ -688,12 +688,16 @@ static int poison_channel(struct most_interface *most_iface, int ch_idx) - - static void *dma_alloc(struct mbo *mbo, u32 size) - { -- return dma_alloc_coherent(NULL, size, &mbo->bus_address, GFP_KERNEL); -+ struct device *dev = mbo->ifp->dev; -+ -+ return dma_alloc_coherent(dev, size, &mbo->bus_address, GFP_KERNEL); - } - - static void dma_free(struct mbo *mbo, u32 size) - { -- dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); -+ struct device *dev = mbo->ifp->dev; -+ -+ dma_free_coherent(dev, size, mbo->virt_address, mbo->bus_address); - } - - static const struct of_device_id dim2_of_match[]; -@@ -875,6 +879,7 @@ static int dim2_probe(struct platform_device *pdev) - dev->most_iface.poison_channel = poison_channel; - dev->most_iface.request_netinfo = request_netinfo; - dev->most_iface.extra_attrs = DBR_ATTRS; -+ dev->most_iface.dev = &pdev->dev; - - kobj = most_register_interface(&dev->most_iface); - if (IS_ERR(kobj)) { --- -libgit2 0.26.0 diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch b/meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch deleted file mode 100644 index ff21b2130..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8eaec876f732c7e4b238ada5f9304c6da2380eb1 Mon Sep 17 00:00:00 2001 -From: Andrey Shvetsov <andrey.shvetsov@k2l.de> -Date: Fri, 8 Feb 2019 22:44:32 +0000 -Subject: [PATCH] backport: usb: setup_timer - ---- - driver/hdm-usb/hdm_usb.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/hdm-usb/hdm_usb.c b/hdm-usb/hdm_usb.c -index 5b0af88..9896835 100644 ---- a/hdm-usb/hdm_usb.c -+++ b/hdm-usb/hdm_usb.c -@@ -760,9 +760,9 @@ static void hdm_request_netinfo(struct most_interface *iface, int channel, - * The handler runs in interrupt context. That's why we need to defer the - * tasks to a work queue. - */ --static void link_stat_timer_handler(unsigned long data) -+static void link_stat_timer_handler(struct timer_list *t) - { -- struct most_dev *mdev = (struct most_dev *)data; -+ struct most_dev *mdev = from_timer(mdev, t, link_stat_timer); - - schedule_work(&mdev->poll_work_obj); - mdev->link_stat_timer.expires = jiffies + (2 * HZ); -@@ -1154,8 +1154,7 @@ hdm_probe(struct usb_interface *interface, const struct usb_device_id *id) - num_endpoints = usb_iface_desc->desc.bNumEndpoints; - mutex_init(&mdev->io_mutex); - INIT_WORK(&mdev->poll_work_obj, wq_netinfo); -- setup_timer(&mdev->link_stat_timer, link_stat_timer_handler, -- (unsigned long)mdev); -+ timer_setup(&mdev->link_stat_timer, link_stat_timer_handler, 0); - - mdev->usb_device = usb_dev; - mdev->link_stat_timer.expires = jiffies + (2 * HZ); diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch b/meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch deleted file mode 100644 index d4383c4f6..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch +++ /dev/null @@ -1,30 +0,0 @@ -Handle snd_pcm_lib_mmap_vmalloc removal in 4.19 - -Add .mmap field back to pcm_ops for kernels older than 4.19. - -Upstream-Status: Inappropriate - -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/aim-sound/sound.c b/aim-sound/sound.c -index 4b3329b..c0a26be 100644 ---- a/aim-sound/sound.c -+++ b/aim-sound/sound.c -@@ -17,6 +17,7 @@ - #include <linux/printk.h> - #include <linux/kernel.h> - #include <linux/init.h> -+#include <linux/version.h> - #include <sound/core.h> - #include <sound/pcm.h> - #include <sound/pcm_params.h> -@@ -463,6 +464,9 @@ static const struct snd_pcm_ops pcm_ops = { - .trigger = pcm_trigger, - .pointer = pcm_pointer, - .page = snd_pcm_lib_get_vmalloc_page, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0) -+ .mmap = snd_pcm_lib_mmap_vmalloc, -+#endif - }; - - static int split_arg_list(char *buf, char **card_name, u16 *ch_num, diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch b/meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch deleted file mode 100644 index 02eca27d2..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 877d7475413bb787deb07aa83bafac03efa399fa Mon Sep 17 00:00:00 2001 -From: Paul Barker <paul.barker@sancloud.co.uk> -Date: Mon, 24 Feb 2020 14:58:52 +0000 -Subject: [PATCH] Fix build with 5.4 kernel - -Signed-off-by: Paul Barker <paul.barker@sancloud.co.uk> ---- - driver/Makefile | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 281241d..609e692 100644 ---- a/Makefile -+++ b/Makefile -@@ -5,6 +5,7 @@ SRC := $(shell pwd) - obj-m := mostcore.o - mostcore-y := mostcore/core.o - CFLAGS_core.o := -I$(src)/include/ -+CFLAGS_mostcore/core.o := -I$(src)/include/ - - obj-m += default_conf.o - CFLAGL_default_conf.o := -I$(src)/include -@@ -12,33 +13,41 @@ CFLAGL_default_conf.o := -I$(src)/include - obj-m += aim_cdev.o - aim_cdev-y := aim-cdev/cdev.o - CFLAGS_cdev.o := -I$(src)/include/ -+CFLAGS_aim-cdev/cdev.o := -I$(src)/include/ - - obj-m += aim_network.o - aim_network-y := aim-network/networking.o - CFLAGS_networking.o := -I$(src)/include/ -+CFLAGS_aim-network/networking.o := -I$(src)/include/ - - obj-m += aim_sound.o - aim_sound-y := aim-sound/sound.o - CFLAGS_sound.o := -I$(src)/include/ -+CFLAGS_aim-sound/sound.o := -I$(src)/include/ - - obj-m += aim_v4l2.o - aim_v4l2-y := aim-v4l2/video.o - CFLAGS_video.o := -Idrivers/media/video -I$(src)/include/ -+CFLAGS_aim-v4l2/video.o := -Idrivers/media/video -I$(src)/include/ - - obj-m += hdm_i2c.o - hdm_i2c-y := hdm-i2c/hdm_i2c.o - CFLAGS_hdm_i2c.o := -I$(src)/include/ -+CFLAGS_hdm-i2c/hdm_i2c.o := -I$(src)/include/ - - ifdef CONFIG_OF - obj-m += hdm_dim2.o - hdm_dim2-y := hdm-dim2/dim2_hdm.o hdm-dim2/dim2_hal.o hdm-dim2/dim2_sysfs.o - CFLAGS_dim2_hdm.o := -I$(src)/include/ -+CFLAGS_hdm-dim2/dim2_hdm.o := -I$(src)/include/ -+CFLAGS_hdm-dim2/dim2_hal.o := -I$(src)/include/ -+CFLAGS_hdm-dim2/dim2_sysfs.o := -I$(src)/include/ - endif - - obj-m += hdm_usb.o - hdm_usb-y := hdm-usb/hdm_usb.o - CFLAGS_hdm_usb.o := -I$(src)/include/ -- -+CFLAGS_hdm-usb/hdm_usb.o := -I$(src)/include/ - - all: - $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules --- -2.20.1 - diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bb b/meta-agl-profile-core/recipes-kernel/most/most.bb deleted file mode 100644 index 48959a6ee..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/most.bb +++ /dev/null @@ -1,14 +0,0 @@ -DESCRIPTION = "Build MOST driver" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" - -inherit module - -PV = "0.1" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/most;protocol=https;branch=${AGL_BRANCH}" - -S = "${WORKDIR}/git/driver" -SRCREV = "e4dbbaf9e7652efaed0df3e0aab4464f5f228573" - -KERNEL_MODULE_AUTOLOAD += "aim_cdev aim_sound aim_network aim_v4l2 hdm_i2c hdm_dim2 hdm_usb mostcore" diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bbappend b/meta-agl-profile-core/recipes-kernel/most/most.bbappend deleted file mode 100644 index ad422eb57..000000000 --- a/meta-agl-profile-core/recipes-kernel/most/most.bbappend +++ /dev/null @@ -1,15 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI_append = " \ - file://0002-src-most-add-auto-conf-feature.patch \ - file://0003-core-remove-kernel-log-for-MBO-status.patch \ - file://0004-most-video-set-device_caps.patch \ - file://0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch \ - file://0006-dim2-fix-startup-sequence.patch \ - file://0007-dim2-use-device-tree.patch \ - file://0008-dim2-read-clock-speed-from-the-device-tree.patch \ - file://0009-dim2-use-device-for-coherent-memory-allocation.patch \ - file://0010-backport-usb-setup-timer.patch \ - file://0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch \ - file://0012-Fix-build-with-5.4-kernel.patch \ -" diff --git a/meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch b/meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch deleted file mode 100644 index 51896e8db..000000000 --- a/meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 530a31e3eb24b2f1ed7b30859ed62a2d1b24bd91 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com> -Date: Tue, 7 Feb 2017 11:51:58 +0100 -Subject: [PATCH] add a configure option to disable build of man-pages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Upstream-Status: Pending - -Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> ---- - configure.ac | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 8316c67..099fc0c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -67,6 +67,8 @@ AC_ARG_ENABLE([largefile], - [AS_HELP_STRING([--disable-largefile],[disable LFS (large file support)])]) - AC_ARG_ENABLE([util], - [AS_HELP_STRING([--disable-util],[disable build of command-line utilities])]) -+AC_ARG_ENABLE([man], -+ [AS_HELP_STRING([--disable-man],[disable build of man-pages])]) - AC_ARG_ENABLE([bi], - [AS_HELP_STRING([--enable-bi=ARCH],[enable -mARCH for bi-arch compilation])]) - AC_ARG_ENABLE([ub], -@@ -395,7 +397,7 @@ AM_CONDITIONAL([ADD_PLATFORM_POSIX],[test "$X_PLATFORM" = "posix"]) - AM_CONDITIONAL([ADD_PLATFORM_WIN32],[test "$X_PLATFORM" = "win32"]) - - AM_CONDITIONAL([ADD_UTIL],[test "$enable_util" != "no"]) --AM_CONDITIONAL([ADD_MANS],[test "$X_PLATFORM" != "win32"]) -+AM_CONDITIONAL([ADD_MANS],[test "$enable_man" != "no"]) - - ############################################################################### - # declare common substitutions --- -2.9.3 - diff --git a/meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb b/meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb deleted file mode 100644 index dd1b34747..000000000 --- a/meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "The MP4v2 library provides an API to create and modify mp4 files" -HOMEPAGE = "https://github.com/sergiomb2/libmp4v2/wiki" -LICENSE = "MPLv1.1" -LIC_FILES_CHKSUM = "file://COPYING;md5=eb3014b036b6d2151d944aef6a84c36f" - -inherit autotools-brokensep pkgconfig - -SRC_URI = " \ - git://github.com/sergiomb2/${BPN}.git \ - file://0001-add-a-configure-option-to-disable-build-of-man-pages.patch \ -" -SRCREV = "855e9674232808ff3be7191b697dfb56917db21f" -S = "${WORKDIR}/git" -PV = "2.1.0+git${SRCPV}" - - -SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}" -EXTRA_OECONF = "--disable-man" diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl deleted file mode 100644 index e69de29bb..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl +++ /dev/null diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch deleted file mode 100644 index 15d4b3f0e..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 5bc5b8c5dad3edec6736fd7e7ce61250c4ce3725 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 12 Jul 2017 17:13:19 -0700 -Subject: [PATCH] Define comparison_fn_t for non-glibc systems - -lightmediascanner.c:324:12: error: 'comparison_fn_t' undeclared (first use in this function) - (comparison_fn_t)_plugin_sort); - ^~~~~~~~~~~~~~~ - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - src/lib/lightmediascanner.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/lib/lightmediascanner.c b/src/lib/lightmediascanner.c -index 344b247..b866883 100644 ---- a/src/lib/lightmediascanner.c -+++ b/src/lib/lightmediascanner.c -@@ -37,6 +37,11 @@ - #define DEFAULT_SLAVE_TIMEOUT 1000 - #define DEFAULT_COMMIT_INTERVAL 100 - -+#if !defined(__GLIBC__) -+typedef int (*__compar_fn_t) (const void*, const void*); -+typedef __compar_fn_t comparison_fn_t; -+#endif -+ - #ifdef HAVE_MAGIC_H - static magic_t _magic_handle; - --- -2.13.2 - diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch deleted file mode 100644 index 5abb980b8..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 5a618b444e424483c3a9d34dd9b196796cac8e3f Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Mon, 22 Jul 2019 13:29:52 -0700 -Subject: [PATCH] switch from G_BUS_TYPE_SESSION to G_BUS_TYPE_SYSTEM - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - src/bin/lightmediascannerctl.c | 4 ++-- - src/bin/lightmediascannerd.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/bin/lightmediascannerctl.c b/src/bin/lightmediascannerctl.c -index 5764bc0..1d4d844 100644 ---- a/src/bin/lightmediascannerctl.c -+++ b/src/bin/lightmediascannerctl.c -@@ -11,7 +11,7 @@ start_service_by_name(void) - GVariant *var; - GDBusConnection *conn; - -- conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); -+ conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); - if (error) { - fprintf(stderr, "Could not get session bus connection: %s\n", - error->message); -@@ -526,7 +526,7 @@ main(int argc, char *argv[]) - - app.timer = NULL; - app.loop = g_main_loop_new(NULL, FALSE); -- app.proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION, -+ app.proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - "org.lightmediascanner", -diff --git a/src/bin/lightmediascannerd.c b/src/bin/lightmediascannerd.c -index 319db42..6db81cc 100644 ---- a/src/bin/lightmediascannerd.c -+++ b/src/bin/lightmediascannerd.c -@@ -1721,7 +1721,7 @@ main(int argc, char *argv[]) - introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL); - g_assert(introspection_xml != NULL); - -- id = g_bus_own_name(G_BUS_TYPE_SESSION, "org.lightmediascanner", -+ id = g_bus_own_name(G_BUS_TYPE_SYSTEM, "org.lightmediascanner", - G_BUS_NAME_OWNER_FLAGS_NONE, - NULL, on_name_acquired, NULL, NULL, NULL); - --- -2.20.1 - diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf deleted file mode 100644 index 8a9e35b09..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0"?> <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - <policy user="root"> - <allow own="org.lightmediascanner"/> - <allow send_destination="org.lightmediascanner"/> - <allow receive_type="signal" receive_sender="org.lightmediascanner" receive_interface="org.freedesktop.DBus.Properties"/> - </policy> - - <policy at_console="true"> - <allow send_destination="org.lightmediascanner"/> - </policy> -</busconfig> diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch deleted file mode 100644 index 9528bec79..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/plugins/Makefile.am 2015-10-25 16:12:29.331415823 +0000 -+++ b/src/plugins/Makefile.am 2015-10-25 16:14:37.593415808 +0000 -@@ -93,7 +93,7 @@ - id3_id3_la_SOURCES = id3/id3.c id3/id3v1_genres.c - id3_id3_la_LIBADD = $(PLUGINS_LIBADD) - --id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk -+$(srcdir)/id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk - $(AWK) -f $(srcdir)/id3/id3v1_genres_gen.awk $(srcdir)/id3/id3v1_genres.def > $@ - - EXTRA_DIST += id3/id3v1_genres.def id3/id3v1_genres_gen.awk diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service deleted file mode 100644 index 63b48ebf9..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Lightmediascanner (LMS) -After=run-agl-postinsts.service systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount -ConditionPathIsReadWrite=/var/volatile/tmp - -[Service] -Type=dbus -Restart=on-failure -RestartSec=0 -BusName=org.lightmediascanner -SmackProcessLabel=User::App::agl-service-mediascanner -ExecStart=/usr/bin/lightmediascannerd --startup-scan --db-path=/var/volatile/tmp/lightmediascannerd.db --directory=/media - -[Install] -WantedBy=multi-user.target -Alias=dbus-org.lightmediascanner.service diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch deleted file mode 100644 index 6a0b8ff93..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 3e66b97221440b17a184feb48692dce7e0561cac Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Wed, 8 Mar 2017 16:30:01 -0800 -Subject: [PATCH] plugin: ogg: fix chucksize issue - -There are some OGG files that have metadata chucks that go over the -hardcoded 10 * 4096 size due to album art. This patchset just parses -each chuck and continues till it runs out of valid chunks. - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - src/plugins/ogg/ogg.c | 11 ++--------- - 1 file changed, 2 insertions(+), 9 deletions(-) - -diff --git a/src/plugins/ogg/ogg.c b/src/plugins/ogg/ogg.c -index 1c0818e..c94dc38 100644 ---- a/src/plugins/ogg/ogg.c -+++ b/src/plugins/ogg/ogg.c -@@ -47,8 +47,6 @@ - int CHUNKSIZE = 4096; - #endif - --#define MAX_CHUNKS_PER_PAGE 10 -- - struct stream { - struct lms_stream base; - int serial; -@@ -122,10 +120,8 @@ _set_lms_info(struct lms_string_size *info, const char *tag) - - static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page) - { -- int i; -- -- for (i = 0; i < MAX_CHUNKS_PER_PAGE && ogg_sync_pageout(osync, page) != 1; -- i++) { -+ while(ogg_sync_pageout(osync, page) != 1) -+ { - lms_ogg_buffer_t buffer = lms_get_ogg_sync_buffer(osync, CHUNKSIZE); - int bytes = fread(buffer, 1, CHUNKSIZE, fp); - -@@ -136,9 +132,6 @@ static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page) - ogg_sync_wrote(osync, bytes); - } - -- if (i > MAX_CHUNKS_PER_PAGE) -- return false; -- - return true; - } - --- -2.7.4 - diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend deleted file mode 100644 index b47b2796c..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend +++ /dev/null @@ -1,42 +0,0 @@ -# Disable everything but the roygalty-free formats -PACKAGECONFIG = "ogg flac wave m3u pls jpeg png" - -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += "file://lightmediascanner.service \ - file://plugin-ogg-fix-chucksize-issue.patch \ - file://0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch \ - file://dbus-lightmediascanner.conf \ - " - -CFLAGS_append = " -D_FILE_OFFSET_BITS=64" - -inherit systemd - -SYSTEMD_PACKAGES = "${PN}" -SYSTEMD_SERVICE_${PN} = "lightmediascanner.service" -SYSTEMD_AUTO_ENABLE_${PN} = "enable" - -do_install_append() { - # Install LMS systemd service - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -d ${D}${systemd_system_unitdir} - install -m 644 -p -D ${WORKDIR}/lightmediascanner.service ${D}${systemd_system_unitdir}/lightmediascanner.service - fi - - install -d ${D}/etc/dbus-1/system.d - install -m 0644 ${WORKDIR}/dbus-lightmediascanner.conf ${D}/etc/dbus-1/system.d/org.lightmediascanner.conf -} - -FILES_${PN} += " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/lightmediascanner.service', '', d)} \ - " - -EXTRA_OECONF = "--enable-static --with-dbus-services=${datadir}/dbus-1/system-services" -PACKAGECONFIG[mp4] = "--enable-mp4,--disable-mp4,libmp4v2" - -# add support MP3 because of the format of music files for AGL CES/ALS2017 Demo -PACKAGECONFIG_append = " id3 mp4" - -# add required character sets for id3 tag scanning -RDEPENDS_${PN}_append = " glibc-gconv-utf-16 glibc-gconv-iso8859-1" diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb deleted file mode 100644 index f2158760f..000000000 --- a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb +++ /dev/null @@ -1,63 +0,0 @@ -SUMMARY = "Lightweight media scanner" -DESCRIPTION = "Lightweight media scanner meant to be used in not-so-powerful devices, like embedded systems or old machines." -SECTION = "libs/multimedia" - -LICENSE = "LGPLv2.1+" -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://src/lib/lightmediascanner.c;endline=21;md5=6d8889bccb4c6c27e8b786342a3eb267" - -DEPENDS = "file gawk glib-2.0 sqlite3" - -PV = "0.5.1+git${SRCPV}" -SRCREV = "adfddb3486276a5ed2f5008c9e43a811e1271cc9" -SRC_URI = "git://github.com/profusion/lightmediascanner.git \ - file://id3-plugin-support-out-of-tree-build.patch \ - file://0001-Define-comparison_fn_t-for-non-glibc-systems.patch \ - " - -S = "${WORKDIR}/git" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--enable-static --disable-mp4" - -PACKAGECONFIG ??= "ogg flac wave id3 m3u pls asf rm jpeg png" -PACKAGECONFIG[generic] = "--enable-generic,--disable-generic,libav" -PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg libvorbis libtheora" -PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac" -PACKAGECONFIG[wave] = "--enable-wave,--disable-wave" -PACKAGECONFIG[id3] = "--enable-id3,--disable-id3" -PACKAGECONFIG[m3u] = "--enable-m3u,--disable-m3u" -PACKAGECONFIG[pls] = "--enable-pls,--disable-pls" -PACKAGECONFIG[asf] = "--enable-asf,--disable-asf" -PACKAGECONFIG[rm] = "--enable-rm,--disable-rm" -PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg" -PACKAGECONFIG[png] = "--enable-png,--disable-png" - -do_install_append() { - # Install "test" binary for corresponding package - install -d ${D}/${bindir} - install -m 755 ${B}/src/bin/.libs/test ${D}/${bindir}/test-lms - # Remove .la files for loadable modules - rm -f ${D}/${libdir}/${PN}/plugins/*.la -} - -FILES_${PN} += "${datadir}/dbus-1" -FILES_${PN}-dbg += "${libdir}/${PN}/plugins/.debug" - -PACKAGES_prepend = "${PN}-test " -FILES_${PN}-test_prepend = "${bindir}/test-lms " - -PACKAGES += "${PN}-meta" -ALLOW_EMPTY_${PN}-meta = "1" - -PACKAGES_DYNAMIC = "${PN}-plugin-*" - -python populate_packages_prepend () { - lms_libdir = d.expand('${libdir}/${PN}') - pkgs = [] - - pkgs += do_split_packages(d, oe.path.join(lms_libdir, "plugins"), '^(.*)\.so$', d.expand('${PN}-plugin-%s'), 'LightMediaScanner plugin for %s', prepend=True, extra_depends=d.expand('${PN}')) - metapkg = d.getVar('PN') + '-meta' - d.setVar('RDEPENDS_' + metapkg, ' '.join(pkgs)) -} diff --git a/meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf b/meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf deleted file mode 100644 index a7486d055..000000000 --- a/meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf +++ /dev/null @@ -1,8 +0,0 @@ -<!DOCTYPE busconfig PUBLIC - "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - <policy user="root"> - <allow receive_type="signal" receive_interface="org.freedesktop.GeoClue2.Client" /> - </policy> -</busconfig> diff --git a/meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend b/meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend deleted file mode 100644 index 40a3b46a0..000000000 --- a/meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend +++ /dev/null @@ -1,11 +0,0 @@ -inherit gobject-introspection - -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" -SRC_URI_append = "file://org.freedesktop.GeoClue2.Client.conf" - -PACKAGECONFIG = "nmea lib" - -do_install_append() { - install -d ${D}/etc/dbus-1/system.d - install -m 0644 ${WORKDIR}/org.freedesktop.GeoClue2.Client.conf ${D}/etc/dbus-1/system.d/org.freedesktop.GeoClue2.Client.conf -} diff --git a/meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend b/meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend deleted file mode 100644 index da434e08e..000000000 --- a/meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend +++ /dev/null @@ -1,16 +0,0 @@ -SYSTEMD_SERVICE_${PN} += " gpsdctl@.service" - -RPROVIDES_${PN}-conf += "virtual/gpsd-conf" - -do_install_append() { - # use the systemd compatible gpsd.rules - install -d ${D}/${sysconfdir}/udev/rules.d - install -m 0644 ${S}/gpsd.rules ${D}/${sysconfdir}/udev/rules.d/60-gpsd.rules - - #support for systemd - install -d ${D}${systemd_unitdir}/system/ - install -m 0644 ${S}/systemd/gpsdctl@.service ${D}${systemd_unitdir}/system - - #autoprobe usb gps devices - echo 'USBAUTO="true"' >> ${D}${sysconfdir}/default/gpsd.default -} diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc deleted file mode 100644 index 71812943c..000000000 --- a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc +++ /dev/null @@ -1,18 +0,0 @@ -IMAGE_FEATURES_append = " dev-pkgs" -IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" - -# Always include the test widgets -IMAGE_FEATURES_append = " agl-test-wgt" - -# Required dependencies for app and test builds -TOOLCHAIN_HOST_TASK += " \ - nativesdk-lua \ - " - -# Required dependencies for app and test builds -TOOLCHAIN_TARGET_TASK += " \ - lua-dev \ - lua-staticdev \ - libafb-helpers-staticdev \ - libappcontroller-staticdev \ - " diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb deleted file mode 100644 index 2fd31d148..000000000 --- a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb +++ /dev/null @@ -1,14 +0,0 @@ -DESCRIPTION = "The minimal set of packages for AGL core Connectivity Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-core-services \ - " - -RDEPENDS_${PN} += "\ - agl-service-data-persistence \ - agl-service-network \ - agl-service-platform-info \ - " diff --git a/meta-agl-profile-core/recipes-support/curl/curl_%.bbappend b/meta-agl-profile-core/recipes-support/curl/curl_%.bbappend deleted file mode 100644 index fc24cea15..000000000 --- a/meta-agl-profile-core/recipes-support/curl/curl_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -# Cannot just append to PACKAGECONFIG, as nghttp2's dependencies do not build -# for native/nativesdk, and appending class-target does not work because of -# the weak definition of PACKAGECONFIG in the recipe, so need to copy the -# definition to add nghttp2... -PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls libidn proxy threaded-resolver verbose zlib nghttp2" diff --git a/meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend b/meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend deleted file mode 100644 index 8656abf09..000000000 --- a/meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend +++ /dev/null @@ -1 +0,0 @@ -PACKAGECONFIG ?= "jpeg png v4l libv4l gstreamer" diff --git a/meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules b/meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules deleted file mode 100644 index 996e43439..000000000 --- a/meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules +++ /dev/null @@ -1,5 +0,0 @@ -# UDISKS_FILESYSTEM_SHARED -# ==1: mount filesystem to a shared directory (/media/VolumeName) -# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName) -# See udisks(8) -ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1" diff --git a/meta-agl-profile-core/recipes-support/udisks/files/automount.service b/meta-agl-profile-core/recipes-support/udisks/files/automount.service deleted file mode 100644 index b16515196..000000000 --- a/meta-agl-profile-core/recipes-support/udisks/files/automount.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Automount Disk Manager -After=udisks2.service - -[Service] -ExecStart=/usr/libexec/automount.sh - -[Install] -WantedBy=multi-user.target diff --git a/meta-agl-profile-core/recipes-support/udisks/files/automount.sh b/meta-agl-profile-core/recipes-support/udisks/files/automount.sh deleted file mode 100644 index 236791910..000000000 --- a/meta-agl-profile-core/recipes-support/udisks/files/automount.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh - -MOUNT_OPTIONS_DEFAULT="ro,noexec" -MOUNT_OPTIONS_VFAT="umask=0022" -MOUNT_OPTIONS_EXT="" -MOUNT_OPTIONS_NTFS="" -MOUNT_OPTIONS_ISO9660="" - -VERBOSE=false - -# Source a configuration file that can override mount options if exists -[ -f /etc/automount.conf ] && . /etc/automount.conf - -mount_device() { - MOUNT_OPTIONS="" - FSTYPE="$( udevadm info "${1}" "${2}" | awk -v FS== '/ID_FS_TYPE/ {print $2}' )" - DEVNAME="$( udevadm info "${1}" "${2}" | awk -v FS== '/DEVNAME/ {print $2}' )" - case $FSTYPE in - vfat) - MOUNT_OPTIONS="${MOUNT_OPTIONS_VFAT}" - ;; - ext[2-4]) - MOUNT_OPTIONS="${MOUNT_OPTIONS_EXT}" - ;; - ntfs) - MOUNT_OPTIONS="${MOUNT_OPTIONS_NTFS}" - ;; - iso9660) - MOUNT_OPTIONS="${MOUNT_OPTIONS_ISO9660}" - ;; - "") - if $VERBOSE; then - echo "[INFO][${DEVNAME}] Not a partition with a filesystem!" - fi - return - ;; - *) - echo "[WARNING][${DEVNAME}] The filesystem '${FSTYPE}' is not supported!" - return - ;; - esac - - if [ -n "${MOUNT_OPTIONS_DEFAULT}" ]; then - if [ -z "${MOUNT_OPTIONS}" ]; then - MOUNT_OPTIONS="${MOUNT_OPTIONS_DEFAULT}" - else - MOUNT_OPTIONS="${MOUNT_OPTIONS_DEFAULT},${MOUNT_OPTIONS}" - fi - fi - if $VERBOSE; then - echo "[INFO][${DEVNAME}] Mounting a ${FSTYPE}'s filesystem with options: ${MOUNT_OPTIONS}" - fi - - if command -v udisksctl > /dev/null 2>&1; then - if [ -n "${MOUNT_OPTIONS}" ]; then - MOUNT_OPTIONS="-o ${MOUNT_OPTIONS}" - fi - udisksctl mount -t "${FSTYPE}" -b "${DEVNAME}" ${MOUNT_OPTIONS} - elif command -v udisks >/dev/null 2>&1; then - if [ -n "${MOUNT_OPTIONS}" ]; then - MOUNT_OPTIONS="--mount-options ${MOUNT_OPTIONS}" - fi - udisks --mount-fstype "${FSTYPE}" --mount "${DEVNAME}" ${MOUNT_OPTIONS} - else - echo "[ERROR] Unable to find binary for mounting ${DEVNAME}" >&2 - return - fi - if [ "$?" -ne "0" ]; then - echo "[ERROR] Failed to mount the device ${DEVNAME} of type ${FSTYPE} with options ${MOUNT_OPTIONS}" >&2 - fi -} - -# At startup, remove empty directories that may exists -rmdir /media/* > /dev/null 2>&1 - -# Mount already plugged devices -for DEVICE in $( lsblk -dn | cut -d' ' -f1 ); do - REMOVABLE=$( cat "/sys/block/${DEVICE}/removable" ) - if [ "${REMOVABLE}" -eq "1" ]; then - for PART in "/dev/${DEVICE}"*; do - mount_device -n "${PART}" - done - fi -done - -# Wait for plug events and mount devices -stdbuf -oL -- udevadm monitor --udev -s block | -while read -r -- _ _ EVENT DEVPATH _ -do - if [ "${EVENT}" = "add" ]; then - mount_device -p "/sys/${DEVPATH}" - fi -done diff --git a/meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend b/meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend deleted file mode 100644 index 34756f480..000000000 --- a/meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend +++ /dev/null @@ -1,26 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += "file://automount.service \ - file://automount.sh \ - file://99-udisks2.rules \ -" - -SYSTEMD_AUTO_ENABLE = "enable" -SYSTEMD_SERVICE_${PN} += "automount.service" - -do_install_append () { - sed -i 's/^WantedBy=.*/WantedBy=multi-user.target/' ${D}${systemd_unitdir}/system/udisks2.service - - install -d ${D}${base_libdir}/systemd/system - install -m 0644 ${WORKDIR}/automount.service ${D}${systemd_unitdir}/system - - install -d ${D}${libexecdir} - install -m 0755 ${WORKDIR}/automount.sh ${D}${libexecdir}/automount.sh - - install -d ${D}${sysconfdir}/udev/rules.d - install -m 0644 ${WORKDIR}/99-udisks2.rules ${D}${sysconfdir}/udev/rules.d -} - -FILES_${PN} += "${base_libdir}/systemd/system/automount.service \ - ${libexecdir}/automount.sh \ -" diff --git a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper b/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper deleted file mode 100644 index 12580237d..000000000 --- a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper +++ /dev/null @@ -1,320 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2020 Konsulko Group -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# -# gcovr wrapper for generating coverage reports against AGL bindings -# on target. With a given binding name or coverage widget file, the -# coverage version will be installed, and the pyagl tests for the -# binding run before generating a report with gcovr. The afm-test -# test widget or a user-supplied command may be run instead of the -# pyagl tests, see usage below, or run with "--help". -# - -usage() { - cat <<-EOF - Usage: - $(basename $0) [options] <binding name | widget file> - - Options: - -h, --help - Print this help and exit - - -k, --keep - Do not remove temporary files/directories - - -o, --gcovr-options - Additional gcovr options, multiple options should be quoted - - -w, --workdir - gcov/gcovr temporary working directory, defaults to /tmp/gcov - The directory will be removed after running without --keep if it - is empty, use caution if specifying existing system directories! - - --pyagl - Run pyagl tests for binding, enabled by default - - --afm-test - Run afm-test test widget tests for binding. - If specified, disables pyagl tests; note that the last argument in - the command-line will take precedence. - - -c, --command - Test command to use in place of pyagl or afm-test, should be quote - If specified, disables pyagl and afm-test tests. - - EOF -} - -# Helper to validate widget install dir -check_wgt_install() { - if [ ! \( -d $1 -o -f $1/config.xml \) ]; then - echo "ERROR: No widget install at $1" - exit 1 - elif [ ! -d $1/src ]; then - echo "ERROR: No source in $1/src" - exit 1 - fi -} - -# Helper to run gcovr inside mount namespace environment -gcovr_runner() { - wgt_install_dir=/var/local/lib/afm/applications/$1 - check_wgt_install ${wgt_install_dir} - - if [ ! -d $workdir/$1 ]; then - echo "ERROR: No coverage data in $workdir/$1" - exit 1 - fi - - # Get original source path - gcno=$(cd $workdir/$1 && find -name '*.gcno' | head -n 1 | cut -d/ -f2-) - if [ -z "$gcno" ]; then - echo "ERROR: no gcno file found in $workdir/$1" - exit 1 - fi - srcfile=$(strings $workdir/$1/${gcno} | grep "$(basename ${gcno%.gcno})$" | uniq) - srcdir=$(echo $srcfile | sed "s|/${gcno%%/*}/.*$||") - - # Set up mounts for chroot to run gcovr in - # NOTE: We do not unmount these later, as we assume we are in a - # private mount namespace and they will go away on exit from - # it. - echo "Setting up mounts" - tmpdir=$(mktemp -d) - echo $tmpdir > $workdir/.runner_tmpdir - mkdir -p $tmpdir/{lower,upper,work,merged} - # NOTE: Could potentially use rbind here, but explicitly mounting - # just what we need seems safer - mount --bind / $tmpdir/lower - mount -t overlay -o lowerdir=$tmpdir/lower,upperdir=$tmpdir/upper,workdir=$tmpdir/work overlay $tmpdir/merged - mount --bind /proc $tmpdir/merged/proc - mount --bind /sys $tmpdir/merged/sys - mount --bind /dev $tmpdir/merged/dev - mount --bind /tmp $tmpdir/merged/tmp - # Bind in the data files - # NOTE: $workdir is bound instead of specifically just $workdir/$1, - # so that e.g. html output to another directory in /tmp will - # work as expected. A determined user may be able to shoot - # themselves in the foot, but for now the trade off seems - # acceptable. - mkdir -p $tmpdir/merged/$workdir - mount --bind $workdir $tmpdir/merged/$workdir - # Bind the source files to their expected location - mkdir -p $tmpdir/merged/$srcdir - mount --bind ${wgt_install_dir}/src $tmpdir/merged/$srcdir - - echo "Entering chroot" - echo - exec chroot $tmpdir/merged \ - /usr/bin/gcovr -r $srcdir --object-directory $workdir/$1 --gcov-filter-source-errors -s ${GCOV_RUNNER_GCOVR_OPTIONS} -} - -# Helper to clean up after runner -gcovr_runner_cleanup() { - rm -rf $workdir/$1 - if [ -f $workdir/.runner_tmpdir ]; then - tmpdir=$(cat $workdir/.runner_tmpdir) - rm -rf $tmpdir - rm -f $workdir/.runner_tmpdir - fi - if [ "$workdir" != "/tmp" ]; then - rmdir $workdir 2>/dev/null || true - fi -} - -# Parse arguments -OPTS=$(getopt -o +hko:pw:c: --longoptions gcovr-runner,afm-test,command:,help,keep,gcovr-options:,pyagl,workdir: -n "$(basename $0)" -- "$@") -if [ $? -ne 0 ]; then - exit 1 -fi -eval set -- "$OPTS" - -runner=false -keep=false -wgt="" -cmd="" -options="" -afmtest=false -pyagl=true -workdir="/tmp/gcov" - -while true; do - case "$1" in - --gcovr-runner) runner=true; shift;; - --afm-test) afmtest=true; pyagl=false; shift;; - -c|--command) cmd="$2"; shift; shift;; - -h|--help) usage; exit 0;; - -k|--keep) keep=true; shift;; - -o|--gcovr-options) options="$2"; shift; shift;; - -p|--pyagl) pyagl=true; afmtest=false; shift;; - -w|--workdir) workdir="$2"; shift; shift;; - --) shift; break;; - *) break;; - esac -done - -# Encode the assumption that a specified command means it runs instead -# of any other tests. -if [ -s "$cmd" ]; then - pyagl=false - afmtest=false -fi - -if [ $# -ne 1 ]; then - # Always expect widget name as single non-option argument - usage - exit 1 -fi - -# Rationalize workdir just in case -workdir=$(realpath "$workdir") - -if [ "$runner" = "true" ]; then - if [ "${GCOV_RUNNER_READY}" != "true" ]; then - echo "ERROR: gcovr environment not ready!" - exit 1 - fi - gcovr_runner $1 - # If we get here, it'd be an error, so return 1 - exit 1 -fi - -binding=$1 -if [ "${1%.wgt}" != "$1" ]; then - # User has specified path to a widget file - wgt=$(realpath $1) - binding=$(basename "${1%-coverage.wgt}") -else - wgt=/usr/AGL/apps/coverage/${binding}-coverage.wgt -fi -if [ ! -f $wgt ]; then - echo "ERROR: No widget $wgt" - exit 1 -elif [ "$afmtest" = "true" -a ! -f /usr/AGL/apps/test/${binding}-test.wgt ]; then - echo "ERROR: No test widget for $binding" - exit 1 -fi - -# Determine starting systemd unit name -service=$(systemctl --all |grep afm-service-$binding |sed 's/^[ *] \([^ ]*\).*/\1/') -if [ -z "$service" ]; then - echo "ERROR: Could not determine systemd service unit for $binding" - exit 1 -fi - -# Install coverage widget -echo "Removing $binding widget" -systemctl stop $service -afm-util remove $binding -echo -echo "Installing $binding coverage widget" -afm-util install $wgt -echo - -wgt_install_dir=/var/local/lib/afm/applications/$binding -check_wgt_install ${wgt_install_dir} -gcov_src=${wgt_install_dir}/coverage -if [ ! -d ${gcov_src} ]; then - echo "ERROR: No coverage information in ${gcov_src}" - exit 1 -elif [ ! -f ${gcov_src}/gcov.env ]; then - echo "ERROR: No gcov environment file at ${gcov_src}/gcov.env" - exit 1 -fi - -# -# NOTE: In theory, the coverage data collection could be done inside -# the mount namespace / chroot, but the potential for issues -# when doing that seems higher than just running gcovr there, -# so a conservative approach is taken. -# - -# Set up things for the binary to write out gcda data files -# -# Having the matching build directory hierarchy in place and -# writeable by the target binary before any restart and testing is -# key to things working. -# -# As well, the environment file with the GCOV_PREFIX and -# GCOV_PREFIX_STRIP values needs to be present before running so the -# gcda files will get written into the relocated build hierarchy. -# -echo "Installing coverage information for $binding" -mkdir -p $workdir -rm -rf $workdir/$binding -cp -dr ${gcov_src} $workdir/$binding -chsmack -r -a System::Log $workdir -chmod -R go+w $workdir - -# Install the gcov environment file -mkdir -p /etc/afm/widget.env.d/$binding -if [ "${workdir}" = "/tmp/gcov" ]; then - cp ${gcov_src}/gcov.env /etc/afm/widget.env.d/$binding/gcov -else - # Update GCOV_PREFIX to point into workdir - sed "s|^GCOV_PREFIX=.*|GCOV_PREFIX=${workdir}/$binding|" ${gcov_src}/gcov.env > /etc/afm/widget.env.d/$binding/gcov -fi -chsmack -r -a _ /etc/afm/widget.env.d/$binding - -# Determine new systemd unit name (version may now be different) -service=$(systemctl --all |grep afm-service-$binding |sed 's/^[ *] \([^ ]*\).*/\1/') -if [ -z "$service" ]; then - echo "ERROR: Could not determine systemd service unit for $binding" - exit 1 -fi - -# Restart the binding -systemctl start $service -echo - -# Run tests or given command -if [ -n "$cmd" ]; then - echo "Running command: $cmd" - export AGL_AVAILABLE_INTERFACES=${AGL_AVAILABLE_INTERFACES:-ethernet} - eval $cmd -elif [ "$pyagl" = "true" ]; then - echo "Running $binding pyagl tests" - export AGL_AVAILABLE_INTERFACES=${AGL_AVAILABLE_INTERFACES:-ethernet} - pytest -k "${binding#agl-service-} and not hwrequired" /usr/lib/python3.?/site-packages/pyagl -else - echo "Running $binding test widget" - # NOTE: su to agl-driver is required here to avoid fallout from - # the "afm-util run" in afm-test seemingly triggering the - # start of other per-user bindings for the root user. - su -l -c "/usr/bin/afm-test /usr/AGL/apps/test/${binding}-test.wgt" agl-driver -fi - -# Restart again to trigger data file writing -systemctl restart $service -echo - -# Run ourselves in gcovr runner mode inside a private mount namespace -export GCOV_RUNNER_READY=true -# NOTE: Passing gcovr options in the environment to avoid quoting hassles -export GCOV_RUNNER_GCOVR_OPTIONS="$options" -runner_options="--workdir ${workdir}" -unshare -m $0 --gcovr-runner ${runner_options} $binding -rc=$? - -if [ "$keep" != "true" ]; then - # Clean up after ourselves - gcovr_runner_cleanup $1 - rm -f /etc/afm/widget.env.d/$1/gcov - rmdir /etc/afm/widget.env.d/$1 2>/dev/null || true -fi - -exit $rc - diff --git a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb b/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb deleted file mode 100644 index 2ff39b211..000000000 --- a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "AGL gcovr wrapper" -DESCRIPTION = "This wrapper script enables running gcovr against a \ -AGL binding to generate a coverage report of running pyagl tests, \ -the afm-test test widget, or a user-supplied command." - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI += "file://gcovr-wrapper" - -inherit allarch - -do_install() { - install -D -m 0755 ${WORKDIR}/gcovr-wrapper ${D}${bindir}/gcovr-wrapper -} - -RDEPENDS_${PN} = "bash gcovr" diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch b/meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch deleted file mode 100644 index be1dcf829..000000000 --- a/meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch +++ /dev/null @@ -1,68 +0,0 @@ -Add option to filter gcov source errors - -Add "--gcov-filter-source-errors" to apply filters to the source -files in the errors from gcov. If all source files in the errors -are filtered, then the error is ignored so that the file will be -processed. This enables the usecase of running on a target where -only the source tree for a binary is available, but not all of the -external source headers are. - -Upstream-Status: pending - -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/gcovr/configuration.py b/gcovr/configuration.py -index 1356097..083532c 100644 ---- a/gcovr/configuration.py -+++ b/gcovr/configuration.py -@@ -915,6 +915,14 @@ GCOVR_CONFIG_OPTIONS = [ - "Default: {default!s}.", - action="store_true", - ), -+ GcovrConfigOption( -+ "gcov_filter_source_errors", ['--gcov-filter-source-errors'], -+ group="gcov_options", -+ help="Apply filters to missing source file errors in GCOV files " -+ "instead of exiting with an error. " -+ "Default: {default!s}.", -+ action="store_true", -+ ), - GcovrConfigOption( - "objdir", ['--object-directory'], - group="gcov_options", -diff --git a/gcovr/gcov.py b/gcovr/gcov.py -index de79215..171d68d 100644 ---- a/gcovr/gcov.py -+++ b/gcovr/gcov.py -@@ -667,11 +667,27 @@ def run_gcov_and_process_files( - chdir=chdir, - tempdir=tempdir) - -+ skip = False - if source_re.search(err): -- # gcov tossed errors: try the next potential_wd -- error(err) -- done = False -- else: -+ ignore = False -+ if options.gcov_filter_source_errors: -+ # Check if errors are all from source that is filtered -+ ignore = True -+ for line in err.splitlines(): -+ src_fname = line.split()[-1] -+ filtered, excluded = apply_filter_include_exclude( -+ src_fname, options.filter, options.exclude) -+ if not (filtered or excluded): -+ ignore = False -+ break -+ -+ if not ignore: -+ # gcov tossed errors: try the next potential_wd -+ error(err) -+ skip = True -+ -+ done = False -+ if not skip: - # Process *.gcov files - for fname in active_gcov_files: - process_gcov_data(fname, covdata, abs_filename, options) diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend b/meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend deleted file mode 100644 index 699aea214..000000000 --- a/meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -# Add not yet upstreamed patch that enables on target gcov usage -SRC_URI += "file://0001-add-gcov-filter-source-errors-option.patch" diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb b/meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb deleted file mode 100644 index 6da04cc53..000000000 --- a/meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "Generate GCC code coverage reports" -DESCRIPTION = "Gcovr provides a utility for managing the use of the GNU gcov \ -utility and generating summarized code coverage results." -HOMEPAGE = "https://gcovr.com" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=221e634a1ceafe02ef74462cbff2fb16" - -PV = "4.2+git${SRCPV}" -SRC_URI = "git://github.com/gcovr/gcovr.git;protocol=https" -SRCREV = "1bc72e3bb59b9296e962b350691732ddafbd3195" - -S = "${WORKDIR}/git" - -inherit setuptools3 - -RDEPENDS_${PN} += " \ - python3-compression \ - python3-core \ - python3-crypt \ - python3-datetime \ - python3-difflib \ - python3-io \ - python3-jinja2 \ - python3-json \ - python3-lxml \ - python3-multiprocessing \ - python3-pygments \ - python3-pytest \ - python3-shell \ - python3-threading \ - python3-typing \ -" diff --git a/meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb b/meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb deleted file mode 100644 index 821a1de7a..000000000 --- a/meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb +++ /dev/null @@ -1,33 +0,0 @@ -SUMMARY = "Python bindings and tests for Automotive Grade Linux services" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/pyagl" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/pyagl;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "dcc2f91e5ab3b70202e78ec7164a8e9d7501d70c" -PV = "${AGL_BRANCH}+git${SRCPV}" - -S = "${WORKDIR}/git" - -inherit setuptools3 - -do_install_append() { - install -D -m 0755 ${S}/pyagl/scripts/pyagl ${D}${bindir}/pyagl -} - -RDEPENDS_${PN} += " \ - python3-asyncio \ - python3-asyncssh \ - python3-core \ - python3-json \ - python3-logging \ - python3-math \ - python3-parse \ - python3-pprint \ - python3-pytest \ - python3-pytest-asyncio \ - python3-pytest-dependency \ - python3-pytest-reverse \ - python3-typing \ - python3-websockets \ -" diff --git a/meta-agl-profile-graphical-html5/conf/layer.conf b/meta-agl-profile-graphical-html5/conf/layer.conf deleted file mode 100644 index d499dd173..000000000 --- a/meta-agl-profile-graphical-html5/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH .= ":${LAYERDIR}" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "html5-framework" -BBFILE_PATTERN_html5-framework = "^${LAYERDIR}/" -BBFILE_PRIORITY_html5-framework = "80" - -LAYERSERIES_COMPAT_html5-framework = "dunfell" diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend deleted file mode 100644 index 2c5201aa8..000000000 --- a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend +++ /dev/null @@ -1,12 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI_remove = " \ - file://hdmi-a-1-270.cfg \ - file://hdmi-a-1-90.cfg \ - file://virtual.cfg \ -" - -SRC_URI += " \ - file://hdmi-a-1-180.cfg \ - file://virtual-landscape.cfg \ -" diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg deleted file mode 100644 index 59e2c2db8..000000000 --- a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg +++ /dev/null @@ -1,4 +0,0 @@ -# A display is connected to HDMI-A-1 -[output] -name=HDMI-A-1 -transform=0 diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg deleted file mode 100644 index d69253639..000000000 --- a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[output] -name=Virtual-1 -mode=1920x1080 diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb deleted file mode 100644 index 0ec6829ed..000000000 --- a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb +++ /dev/null @@ -1,10 +0,0 @@ -SUMMARY = "An image containing all packages required to run web applications" - -require agl-image-graphical-html5.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - packagegroup-agl-profile-graphical-html5 \ - " - diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc deleted file mode 100644 index e943b9903..000000000 --- a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc +++ /dev/null @@ -1,9 +0,0 @@ -require recipes-platform/images/agl-image-minimal.inc - -IMAGE_FEATURES += "splash" - -IMAGE_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'ssh-server-dropbear' , '', d)}" - -inherit features_check - -REQUIRED_DISTRO_FEATURES = "wayland" diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb deleted file mode 100644 index cc9ed3d64..000000000 --- a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "AGL web runtime packages" -DESCRIPTION = "Specific packages for the AGL web runtime (minus profile-graphical)" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-html5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -# add packages for WAM -RDEPENDS_${PN} += " \ - chromium-browser-service \ - wam \ - " diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb deleted file mode 100644 index 202750140..000000000 --- a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "AGL web runtime profile" -DESCRIPTION = "The full set of packages required for AGL web runtime" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-graphical-html5 \ - profile-graphical-html5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-profile-graphical \ - packagegroup-agl-appfw-html5 \ -" - -RDEPENDS_${PN} += "\ - agl-login-manager \ - " - -RDEPENDS_profile-graphical-html5 = "${PN}" diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb deleted file mode 100644 index 90242d792..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Chromium browser widget" -DESCRIPTION = "Wgt packaging for running chromium installed browser" -HOMEPAGE = "https://webosose.org" -SECTION = "apps" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/chromium;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -#build-time dependencies -DEPENDS += "af-binder af-main-native chromium68" - -inherit cmake aglwgt - -RDEPENDS_${PN} += "chromium68-browser" diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch deleted file mode 100644 index 485766b02..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch +++ /dev/null @@ -1,40 +0,0 @@ -Upstream-Status: Inappropriate [embedder specific] - -The patch below makes the V8 binaries run during the build be invoked through -QEMU, as they are built for the target. - -Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> -Signed-off-by: Maksim Sisov <msisov@igalia.com> - -Index: git/src/tools/v8_context_snapshot/BUILD.gn -=================================================================== ---- git.orig/src/tools/v8_context_snapshot/BUILD.gn -+++ git/src/tools/v8_context_snapshot/BUILD.gn -@@ -62,6 +62,7 @@ if (use_v8_context_snapshot) { - output_path = rebase_path(output_file, root_build_dir) - - args = [ -+ "./v8-qemu-wrapper.sh", - "./" + rebase_path( - get_label_info( - ":v8_context_snapshot_generator($v8_snapshot_toolchain)", -Index: git/src/v8/BUILD.gn -=================================================================== ---- git.orig/src/v8/BUILD.gn -+++ git/src/v8/BUILD.gn -@@ -900,6 +900,7 @@ action("run_torque") { - } - - args = [ -+ "./v8-qemu-wrapper.sh", - "./" + rebase_path(get_label_info(":torque($v8_torque_toolchain)", - "root_out_dir") + "/torque", - root_build_dir), -@@ -977,6 +978,7 @@ template("run_mksnapshot") { - data = [] - - args = [ -+ "./v8-qemu-wrapper.sh", - "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)", - "root_out_dir") + "/mksnapshot", - root_build_dir), diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb deleted file mode 100644 index 4f545c145..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb +++ /dev/null @@ -1,404 +0,0 @@ -# Copyright (c) 2018 LG Electronics, Inc. - -SUMMARY = "Chromium webruntime for webOS" -AUTHOR = "Lokesh Kumar Goel <lokeshkumar.goel@lge.com>" -SECTION = "webos/apps" -LICENSE = "Apache-2.0 & BSD-3-Clause & LGPL-2.0 & LGPL-2.1" -LIC_FILES_CHKSUM = "\ - file://src/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \ - file://src/third_party/blink/renderer/core/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \ - file://src/third_party/blink/renderer/core/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \ -" - -require gn-utils.inc - -inherit gettext qemu pythonnative - -DEPENDS = "virtual/gettext wayland wayland-native pixman freetype glib-2.0 fontconfig openssl pango cairo icu libxkbcommon libexif dbus pciutils udev libcap alsa-lib virtual/egl elfutils-native libdrm atk gperf-native gconf nss nss-native nspr nspr-native bison-native qemu-native" - -PROVIDES = "${BROWSER_APPLICATION}" - -SRC_URI = "\ - git://github.com/igalia/${BPN};branch=WIP@39.agl.compositor;protocol=https;rev=${SRCREV_chromium68};name=chromium68 \ - git://github.com/webosose/v8;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8 \ - file://v8-qemu-wrapper.patch \ -" -SRCREV_chromium68 = "61e96d1ee5dfc2461697457d287bf922d8a03d9a" -SRCREV_v8 = "1e3af71f1ff3735e8a5b639c48dfca63a7b8a647" - -# we don't include SRCPV in PV, so we have to manually include SRCREVs in do_fetch vardeps -do_fetch[vardeps] += "SRCREV_v8" -SRCREV_FORMAT = "main_v8" - -S = "${WORKDIR}/git" - -SRC_DIR = "${S}/src" -OUT_DIR = "${WORKDIR}/build" -BUILD_TYPE = "Release" - -B = "${OUT_DIR}/${BUILD_TYPE}" - -WEBRUNTIME_BUILD_TARGET = "webos:weboswebruntime" -BROWSER_APP_BUILD_TARGET = "chrome" -BROWSER_APPLICATION = "chromium68-browser" -BROWSER_APPLICATION_DIR = "/opt/chromium68" - -TARGET = "${WEBRUNTIME_BUILD_TARGET} ${BROWSER_APP_BUILD_TARGET}" - -# Skip do_install_append of webos_system_bus. It is not compatible with this component. -WEBOS_SYSTEM_BUS_FILES_LOCATION = "${S}/files/sysbus" - -PACKAGECONFIG ?= "jumbo use-upstream-wayland" - -# Options to enable debug-webcore build. -# Add the following line to local.conf (or local.dev.inc) to enable them: -# PACKAGECONFIG_append_pn-chromium68 = " debug-webcore" -# Other debug options are controlled by sections later in this file -PACKAGECONFIG[debug-webcore] = "remove_webcore_debug_symbols=false,remove_webcore_debug_symbols=true" - -# Set a default value for jumbo file merge of 8. This should be good for build -# servers and workstations with a big number of cores. In case build is -# happening in a machine with less cores but still enough RAM a good value could -# be 50. -JUMBO_FILE_MERGE_LIMIT="8" -PACKAGECONFIG[jumbo] = "use_jumbo_build=true jumbo_file_merge_limit=${JUMBO_FILE_MERGE_LIMIT}, use_jumbo_build=false" - -PACKAGECONFIG[lttng] = "use_lttng=true,use_lttng=false,lttng-ust,lttng-tools lttng-modules babeltrace" - -# Chromium can use v4l2 device for hardware accelerated video decoding on such boards as Renesas R-car M3, for example. -# In case of R-car m3, additional patches are required for gstreamer and v4l2apps. -# See https://github.com/igel-oss/meta-browser-hwdecode/tree/igalia-chromium71. -PACKAGECONFIG[use-linux-v4l2] = "use_v4l2_codec=true use_v4lplugin=true use_linux_v4l2_only=true" - -PACKAGECONFIG[use-upstream-wayland] = " \ - ozone_platform_wayland_external=false ozone_platform_wayland=true \ - use_system_minigbm=true, \ - ozone_platform_wayland_external=true ozone_platform_wayland=false \ -" - -GN_ARGS = "\ - enable_memorymanager_webapi=false\ - ffmpeg_branding=\"Chrome\"\ - host_os=\"linux\"\ - ozone_auto_platforms=false\ - proprietary_codecs=true\ - target_os=\"linux\"\ - treat_warnings_as_errors=false\ - is_agl=true\ - use_cbe=true\ - is_chrome_cbe=true\ - use_cups=false\ - use_custom_libcxx=false\ - use_kerberos=false\ - use_neva_media=false\ - use_ozone=true\ - use_xkbcommon=true\ - use_pmlog=false\ - use_system_debugger_abort=true\ - use_webos_gpu_info_collector=false\ - ${PACKAGECONFIG_CONFARGS}\ -" - -# From Chromium's BUILDCONFIG.gn: -# Set to enable the official build level of optimization. This has nothing -# to do with branding, but enables an additional level of optimization above -# release (!is_debug). This might be better expressed as a tri-state -# (debug, release, official) but for historical reasons there are two -# separate flags. -# See also: https://groups.google.com/a/chromium.org/d/msg/chromium-dev/hkcb6AOX5gE/PPT1ukWoBwAJ -GN_ARGS += "is_debug=false is_official_build=true" - -# is_cfi default value is true for x86-64 builds with is_official_build=true. -# As of M63, we explicitly need to set it to false, otherwise we fail the -# following assertion in //build/config/sanitizers/sanitizers.gni: -# assert(!is_cfi || is_clang, -# "is_cfi requires setting is_clang = true in 'gn args'") -GN_ARGS += "is_cfi=false" - -# By default, passing is_official_build=true to GN causes its symbol_level -# variable to be set to "2". This means the compiler will be passed "-g2" and -# we will end up with a very large chrome binary (around 5Gb as of M58) -# regardless of whether DEBUG_BUILD has been set or not. In addition, binutils, -# file and other utilities are unable to read a 32-bit binary this size, which -# causes it not to be stripped. -# The solution is two-fold: -# 1. Make sure -g is not passed on 32-bit architectures via DEBUG_FLAGS. -g is -# the same as -g2. -g1 generates an 800MB binary, which is a lot more -# manageable. -# 2. Explicitly pass symbol_level=0 to GN. This causes -g0 to be passed -# instead, so that if DEBUG_BUILD is not set GN will not create a huge debug -# binary anyway. Since our compiler flags are passed after GN's, -g0 does -# not cause any issues if DEBUG_BUILD is set, as -g1 will be passed later. -DEBUG_FLAGS_remove_arm = "-g" -DEBUG_FLAGS_append_arm = "-g1" -DEBUG_FLAGS_remove_x86 = "-g" -DEBUG_FLAGS_append_x86 = "-g1" -GN_ARGS += "symbol_level=0" - -# We do not want to use Chromium's own Debian-based sysroots, it is easier to -# just let Chromium's build system assume we are not using a sysroot at all and -# let Yocto handle everything. -GN_ARGS += "use_sysroot=false" - -# Toolchains we will use for the build. We need to point to the toolchain file -# we've created, set the right target architecture and make sure we are not -# using Chromium's toolchain (bundled clang, bundled binutils etc). -GN_ARGS += "\ - custom_toolchain=\"//build/toolchain/yocto:yocto_target\" \ - gold_path=\"\" \ - host_toolchain=\"//build/toolchain/yocto:yocto_native\" \ - is_clang=${@is_default_cc_clang(d)} \ - clang_base_path=\"${@clang_install_path(d)}\" \ - clang_use_chrome_plugins=false \ - linux_use_bundled_binutils=false \ - target_cpu=\"${@gn_target_arch_name(d)}\" \ - v8_snapshot_toolchain=\"//build/toolchain/yocto:yocto_target\" \ -" - -# ARM builds need special additional flags (see ${S}/build/config/arm.gni). -# If we do not pass |arm_arch| and friends to GN, it will deduce a value that -# will then conflict with TUNE_CCARGS and CC. -# Note that as of M61 in some corner cases parts of the build system disable -# the "compiler_arm_fpu" GN config, whereas -mfpu is always passed via ${CC}. -# We might want to rework that if there are issues in the future. -def get_compiler_flag(params, param_name, d): - """Given a sequence of compiler arguments in |params|, returns the value of - an option |param_name| or an empty string if the option is not present.""" - for param in params: - if param.startswith(param_name): - return param.split('=')[1] - return '' - -ARM_FLOAT_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d)}" -ARM_FPU = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mfpu', d)}" -ARM_TUNE = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mcpu', d)}" -ARM_VERSION_aarch64 = "8" -ARM_VERSION_armv7a = "7" -ARM_VERSION_armv7ve = "7" -ARM_VERSION_armv6 = "6" - -# GN computes and defaults to it automatically where needed -# forcing it from cmdline breaks build on places where it ends up -# overriding what GN wants -TUNE_CCARGS_remove = "-mthumb" - -GN_ARGS_append_arm = " \ - arm_float_abi=\"${ARM_FLOAT_ABI}\" \ - arm_fpu=\"${ARM_FPU}\" \ - arm_tune=\"${ARM_TUNE}\" \ - arm_version=${ARM_VERSION} \ -" -# tcmalloc's atomicops-internals-arm-v6plus.h uses the "dmb" instruction that -# is not available on (some?) ARMv6 models, which causes the build to fail. -GN_ARGS_append_armv6 += 'use_allocator="none"' -# The WebRTC code fails to build on ARMv6 when NEON is enabled. -# https://bugs.chromium.org/p/webrtc/issues/detail?id=6574 -GN_ARGS_append_armv6 += 'arm_use_neon=false' - -# Disable glibc shims on musl -# tcmalloc does not play well with musl as of M62 (and possibly earlier). -# https://github.com/gperftools/gperftools/issues/693 -GN_ARGS_append_libc-musl = ' use_allocator_shim=false' - -# V8's JIT infrastructure requires binaries such as mksnapshot and -# mkpeephole to be run in the host during the build. However, these -# binaries must have the same bit-width as the target (e.g. a x86_64 -# host targeting ARMv6 needs to produce a 32-bit binary). Instead of -# depending on a third Yocto toolchain, we just build those binaries -# for the target and run them on the host with QEMU. -python do_create_v8_qemu_wrapper () { - """Creates a small wrapper that invokes QEMU to run some target V8 binaries - on the host.""" - qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'), - d.expand('${STAGING_DIR_HOST}${base_libdir}')] - qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True), - qemu_libdirs) - wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh') - with open(wrapper_path, 'w') as wrapper_file: - wrapper_file.write("""#!/bin/sh - -# This file has been generated automatically. -# It invokes QEMU to run binaries built for the target in the host during the -# build process. - -%s "$@" -""" % qemu_cmd) - os.chmod(wrapper_path, 0o755) -} -do_create_v8_qemu_wrapper[dirs] = "${B}" -addtask create_v8_qemu_wrapper after do_patch before do_configure - -python do_write_toolchain_file () { - """Writes a BUILD.gn file for Yocto detailing its toolchains.""" - toolchain_dir = d.expand("${S}/src/build/toolchain/yocto") - bb.utils.mkdirhier(toolchain_dir) - toolchain_file = os.path.join(toolchain_dir, "BUILD.gn") - write_toolchain_file(d, toolchain_file) -} -addtask write_toolchain_file after do_patch before do_configure - -# More options to speed up the build -GN_ARGS += "\ - enable_nacl=false\ - disable_ftp_support=true\ - enable_print_preview=false\ - enable_remoting=false\ - use_glib=true\ - use_gnome_keyring=false\ - use_pulseaudio=false\ -" - -# Respect ld-is-gold in DISTRO_FEATURES when enabling gold -# Similar patch applied in meta-browser -# http://patchwork.openembedded.org/patch/77755/ -EXTRA_OEGN_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'use_gold=true', 'use_gold=false', d)}" -GN_ARGS += "${EXTRA_OEGN_GOLD}" - -# Doesn't build for armv[45]* -COMPATIBLE_MACHINE = "(-)" -COMPATIBLE_MACHINE_aarch64 = "(.*)" -COMPATIBLE_MACHINE_armv6 = "(.*)" -COMPATIBLE_MACHINE_armv7a = "(.*)" -COMPATIBLE_MACHINE_armv7ve = "(.*)" -COMPATIBLE_MACHINE_x86 = "(.*)" -COMPATIBLE_MACHINE_x86-64 = "(.*)" - -#CHROMIUM_PLUGINS_PATH = "${libdir}" -CBE_DATA_PATH = "${libdir}/cbe" -CBE_DATA_LOCALES_PATH = "${CBE_DATA_PATH}/locales" - -# The text relocations are intentional -- see comments in [GF-52468] -# TODO: check if we need INSANE_SKIP on ldflags -INSANE_SKIP_${PN} = "textrel ldflags" - - -do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" -do_compile() { - if [ ! -f ${OUT_DIR}/${BUILD_TYPE}/build.ninja ]; then - do_configure - fi - - export PATH="${S}/depot_tools:$PATH" - ${S}/depot_tools/ninja -v -C ${OUT_DIR}/${BUILD_TYPE} ${TARGET} -} - -do_configure() { - configure_env -} - -configure_env() { - export GYP_CHROMIUM_NO_ACTION=1 - export PATH="${S}/depot_tools:$PATH" - - GN_ARGS="${GN_ARGS}" - echo GN_ARGS is ${GN_ARGS} - echo BUILD_TARGETS are ${TARGET} - cd ${SRC_DIR} - gn gen ${OUT_DIR}/${BUILD_TYPE} --args="${GN_ARGS}" -} - -WINDOW_SIZE ?= "1920,1080" - -configure_browser_settings() { - USER_AGENT="Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/${CHROMIUM_VERSION} Safari/537.31" - echo "${USER_AGENT}" > ${D_DIR}/user_agent_conf - #We can replace below WINDOW_SIZE values from build configuration if available - #echo "${WINDOW_SIZE}" > ${D_DIR}/window_size_conf -} - -install_chromium_browser() { - D_DIR=${D}${BROWSER_APPLICATION_DIR} - install -d ${D_DIR} - - # Install browser files - if [ -e "${SRC_DIR}/webos/install" ]; then - cd ${OUT_DIR}/${BUILD_TYPE} - xargs --arg-file=${SRC_DIR}/webos/install/default_browser/binary.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR} - cd ${SRC_DIR} - xargs --arg-file=${SRC_DIR}/webos/install/default_browser/runtime.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR} - fi - - # AGL does not have PMLOG - sed -i.bak s/PmLogCtl.*// ${D_DIR}/run_webbrowser - - # To execute chromium in JAILER, Security Part needs permissions change - # run_webbrowser: Script file for launching chromium - chmod -v 755 ${D_DIR}/chrome - chmod -v 755 ${D_DIR}/kill_webbrowser - chmod -v 755 ${D_DIR}/run_webbrowser - - configure_browser_settings -} - -install_webruntime() { - install -d ${D}${libdir} - install -d ${D}${includedir}/${BPN} - install -d ${D}${CBE_DATA_PATH} - install -d ${D}${CBE_DATA_LOCALES_PATH} - - # Install webos webview files - if [ -e "${SRC_DIR}/webos/install" ]; then - cd ${SRC_DIR} - xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/staging_inc.list cp --parents --target-directory=${D}${includedir}/${BPN} - - cd ${OUT_DIR}/${BUILD_TYPE} - - cp libcbe.so ${D}${libdir}/ - if [ "${WEBOS_LTTNG_ENABLED}" = "1" ]; then - # use bindir if building non-cbe - cp libchromium_lttng_provider.so ${D}${libdir}/ - fi - xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/binary.list cp --parents --target-directory=${D}${CBE_DATA_PATH} - cat ${SRC_DIR}/webos/install/weboswebruntime/data_locales.list | xargs -I{} install -m 755 -p {} ${D}${CBE_DATA_LOCALES_PATH} - fi - - # move this to separate mksnapshot-cross recipe once we figure out how to build just cross mksnapshot from chromium repository - install -d ${D}${bindir_cross} - gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${bindir_cross}/${HOST_SYS}-mksnapshot.gz -} - -do_install() { - install_webruntime - install_chromium_browser -} - -WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION = " \ - ${webos_sysbus_prvservicesdir}/${BROWSER_APPLICATION}.service \ - ${webos_sysbus_pubservicesdir}/${BROWSER_APPLICATION}.service \ - ${webos_sysbus_prvrolesdir}/${BROWSER_APPLICATION}.json \ - ${webos_sysbus_pubrolesdir}/${BROWSER_APPLICATION}.json \ -" - -SYSROOT_DIRS_append = " ${bindir_cross}" - -PACKAGES_prepend = " \ - ${PN}-cross-mksnapshot \ - ${BROWSER_APPLICATION} \ -" - -FILES_${BROWSER_APPLICATION} += " \ - ${BROWSER_APPLICATION_DIR} \ - ${WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION} \ -" - -RDEPENDS_${BROWSER_APPLICATION} += "${PN}" - -VIRTUAL-RUNTIME_gpu-libs ?= "" -RDEPENDS_${PN} += "${VIRTUAL-RUNTIME_gpu-libs}" - -# The text relocations are intentional -- see comments in [GF-52468] -# TODO: check if we need INSANE_SKIP on ldflags -INSANE_SKIP_${BROWSER_APPLICATION} += "libdir ldflags textrel" - -FILES_${PN} = " \ - ${libdir}/*.so \ - ${CBE_DATA_PATH}/* \ - ${libdir}/${BPN}/*.so \ - ${WEBOS_SYSTEM_BUS_DIRS} \ -" - -FILES_${PN}-dev = " \ - ${includedir} \ -" - -FILES_${PN}-cross-mksnapshot = "${bindir_cross}/${HOST_SYS}-mksnapshot.gz" diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc b/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc deleted file mode 100644 index 0fd55a638..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc +++ /dev/null @@ -1,157 +0,0 @@ -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -# GN host architecture helpers. -# -# BUILD_ARCH's value corresponds to what uname returns as the machine name. -# The mapping in gn_host_arch_name() tries to match several possible values -# returned by the Linux kernel in uname(2) into the corresponding values GN -# understands. -def gn_host_arch_name(d): - """Returns a GN architecture name corresponding to the build host's machine - architecture.""" - import re - arch_translations = { - r'aarch64.*': 'arm64', - r'arm.*': 'arm', - r'i[3456]86$': 'x86', - r'x86_64$': 'x64', - } - build_arch = d.getVar("BUILD_ARCH") - for arch_regexp, gn_arch_name in arch_translations.items(): - if re.match(arch_regexp, build_arch): - return gn_arch_name - bb.fatal('Unsuported BUILD_ARCH value: "%s"' % build_arch) - -# GN target architecture helpers. -# -# Determining the target architecture is more difficult, as there are many -# different values we can use on the Yocto side (e.g. TUNE_ARCH, TARGET_ARCH, -# MACHINEOVERRIDES etc). What we do is define the mapping with regular, -# non-Python variables with overrides that are generic enough (i.e. "x86" -# instead of "i586") and then use gn_target_arch_name() to return the right -# value with some validation. -GN_TARGET_ARCH_NAME_aarch64 = "arm64" -GN_TARGET_ARCH_NAME_arm = "arm" -GN_TARGET_ARCH_NAME_x86 = "x86" -GN_TARGET_ARCH_NAME_x86-64 = "x64" - -BUILD_CC_toolchain-clang = "clang" -BUILD_CXX_toolchain-clang = "clang++" -BUILD_LD_toolchain-clang = "clang" - -# knob for clang, when using meta-clang to provide clang and case where -# clang happens to be default compiler for OE we should let it use clang -def is_default_cc_clang(d): - """Return true if clang is default cross compiler.""" - toolchain = d.getVar("TOOLCHAIN") - overrides = d.getVar("OVERRIDES") - if toolchain == "clang" and "toolchain-clang" in overrides.split(":"): - return "true" - return "false" - -def clang_install_path(d): - """Return clang compiler install path.""" - return d.getVar("STAGING_BINDIR_NATIVE") - -def gn_target_arch_name(d): - """Returns a GN architecture name corresponding to the target machine's - architecture.""" - name = d.getVar("GN_TARGET_ARCH_NAME") - if name is None: - bb.fatal('Unsupported target architecture. A valid override for the ' - 'GN_TARGET_ARCH_NAME variable could not be found.') - return name - -def write_toolchain_file(d, file_path): - """Creates a complete GN toolchain file in |file_path|.""" - import string - gcc_toolchain_tmpl = string.Template( - 'gcc_toolchain("${toolchain_name}") {\n' - ' cc = "${cc}"\n' - ' cxx = "${cxx}"\n' - ' ar = "${ar}"\n' - ' ld = cxx # GN expects a compiler, not a linker.\n' - ' nm = "${nm}"\n' - ' readelf = "${readelf}"\n' - ' extra_cflags = "${extra_cflags}"\n' - ' extra_cppflags = "${extra_cppflags}"\n' - ' extra_cxxflags = "${extra_cxxflags}"\n' - ' extra_ldflags = "${extra_ldflags}"\n' - ' toolchain_args = {\n' - ' current_cpu = "${current_cpu}"\n' - ' current_os = "linux"\n' - ' is_clang = false\n' - ' }\n' - '}\n' - ) - clang_toolchain_tmpl = string.Template( - 'clang_toolchain("clang_${toolchain_name}") {\n' - ' extra_cflags = "${extra_cflags}"\n' - ' extra_cppflags = "${extra_cppflags}"\n' - ' extra_cxxflags = "${extra_cxxflags}"\n' - ' extra_ldflags = "${extra_ldflags}"\n' - ' toolchain_args = {\n' - ' current_cpu = "${current_cpu}"\n' - ' current_os = "linux"\n' - ' is_clang = true\n' - ' use_gold = true\n' - ' }\n' - '}\n' - ) - - native_toolchain = { - 'toolchain_name': 'yocto_native', - 'current_cpu': gn_host_arch_name(d), - 'cc': d.expand('${BUILD_CC}'), - 'cxx': d.expand('${BUILD_CXX}'), - 'ar': d.expand('${BUILD_AR}'), - 'nm': d.expand('${BUILD_NM}'), - 'readelf': d.expand('${BUILD_PREFIX}readelf'), - 'extra_cflags': d.expand('${BUILD_CFLAGS}'), - 'extra_cppflags': d.expand('${BUILD_CPPFLAGS}'), - 'extra_cxxflags': d.expand('${BUILD_CXXFLAGS}'), - 'extra_ldflags': d.expand('${BUILD_LDFLAGS}'), - } - target_toolchain = { - 'toolchain_name': 'yocto_target', - 'current_cpu': gn_target_arch_name(d), - 'cc': d.expand('${CC}'), - 'cxx': d.expand('${CXX}'), - 'ar': d.expand('${AR}'), - 'nm': d.expand('${NM}'), - 'readelf': d.expand('${TARGET_PREFIX}readelf'), - 'extra_cflags': d.expand('${TARGET_CFLAGS}'), - 'extra_cppflags': d.expand('${TARGET_CPPFLAGS}'), - 'extra_cxxflags': d.expand('${TARGET_CXXFLAGS}'), - 'extra_ldflags': d.expand('${TARGET_LDFLAGS}'), - 'strip': '', - } - - with open(file_path, 'w') as toolchain_file: - toolchain_file.write( - '# This file has been generated automatically.\n' - '\n' - 'import("//build/config/sysroot.gni")\n' - 'import("//build/toolchain/gcc_toolchain.gni")\n' - '\n' - ) - toolchain_file.write(gcc_toolchain_tmpl.substitute(native_toolchain)) - toolchain_file.write(gcc_toolchain_tmpl.substitute(target_toolchain)) - toolchain_file.write(clang_toolchain_tmpl.substitute(native_toolchain)) - toolchain_file.write(clang_toolchain_tmpl.substitute(target_toolchain)) diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env deleted file mode 100644 index c8ddc5173..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env +++ /dev/null @@ -1,202 +0,0 @@ -##### AGL: not set in WebAppMgr@.service -#XDG_SESSION_ID="c2" - -##### AGL: set by WebAppMgr@.service (depends on user) -#XDG_RUNTIME_DIR="/run/user/%i" - -# Set wam executable file path -HOOK_SEGV=NO -WAM_EXE_PATH="/usr/bin/WebAppMgr" - -# Set wam name for user-agent -WAM_NAME="WebAppManager" - -# Only allow UTF8 encoding for luna-service messages. -LS_ENABLE_UTF8=1 - -# Set effective userid and groupid -#WAM_UID="wam" -#WAM_GID="compositor" - -# Set location of error page (will follow localization rules based on this path) -#WAM_ERROR_PAGE="file:///usr/share/localization/wam/loaderror.html" - -# suspending javascript execution delay for page visibility -WAM_SUSPEND_DELAY_IN_MS=250 - -#if [ -e "etc/wam/make_shm.sh" ] ; then -# /etc/wam/make_shm.sh -#fi - -# Set user data directory for WebAppMgr -##### AGL: set by WebAppMgr@.service (depends on user) -#WAM_DATA_PATH="/home/%i/wamdata" - -# ensure that wam data directories exist -#mkdir -p ${WAM_DATA_PATH} - -# set directories permission -#chown ${WAM_UID}:${WAM_GID} ${WAM_DATA_PATH} - -# setup 50 Mb maximum for ApplicationCache -WAM_APPCACHE_MAXSIZE=52428800 - -# setup 10 Mb maximum for ApplicationCache per domain -WAM_APPCACHE_DOMAINLIMIT=10485760 - -# setup 50 Mb maximum for DiskCache -WAM_DISKCACHE_MAXSIZE=52428800 - -# setup 256 Kb maximum for resource buffer allocation -WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE=262144 - -# setup 1 Mb for resource buffer -WAM_RESOURCE_BUFFER_SIZE=1048576 - -# setup 200 seconds for watchdog timeout of render process -WATCHDOG_RENDER_TIMEOUT=200 - -# setup nubmer of raster threads to 1 -BLINK_NUM_RASTER_THREADS=2 - -# use default tile width if not sed by recipe -#if [ "$BLINK_NUM_RASTER_THREADS" = "WEBOS${BLINK_NUM_RASTER_THREADS#WEBOS}" ]; then -BLINK_NUM_RASTER_THREADS=1 -#fi - -# setup 6 Mb maximum for the program GPU cache -GPU_PROGRAM_CACHE_SIZE=6144 - -# disable using enyo system app specfic optimization -# currently used optimizations : inline caching off -#USE_SYSTEM_APP_OPTIMIZATION="0" - -# Set location of NaCl modules -#CHROMIUM_PATH="/usr/palm/applications/com.lge.app.chromium" -#NACL_PLUGIN=${CHROMIUM_PATH}"/libppGoogleNaClPluginChrome.so" -#NACL_IRT_LIBRARY=${CHROMIUM_PATH}"/nacl_irt_arm.nexe" -#NACL_HELPER=${CHROMIUM_PATH}"/nacl_helper" -#NACL_HELPER_BOOTSTRAP=${CHROMIUM_PATH}"/nacl_helper_bootstrap" - -# Set location of NPAPI plugins for all Apps including default Apps -# This is for the flash plugin of Signage, webOS TV doesn't use it. -#PRIVILEGED_PLUGIN_PATH="" - -# Set location of NPAPI plugins for NetCast Apps -# NetCast Apps should access only the plugins in this path -#NETCAST_PLUGIN_PATH="/usr/lib/BrowserPlugins" - -# Set location of NPAPI plugins for HbbTV app. -#HBBTV_PLUGIN_PATH="/usr/lib/HbbtvPlugins" - -# Set InetTV player stored path -#INETTV_HTML_PLAYER_PATH="/usr/share/inettv/inettv_player/index.html" - -# Set location of extra libraries -#CDM_LIB_PATH="/usr/lib" - -# Set location of all NPAPI plugins -NPAPI_PLUGIN_PATH=${HBBTV_PLUGIN_PATH}":"${NETCAST_PLUGIN_PATH}":"${PRIVILEGED_PLUGIN_PATH} - -#if [ -e "etc/wam/make_shm.sh" ] ; then -# /etc/wam/make_shm.sh -#fi - -# setup 8 Mb minimum codecache capacity -JSC_minGlobalCodeCacheCapacity=8388608 - -# Enable more explicit logging of timing with regards to rendering -# export WAM2_ENABLE_DEBUG_RENDER_TIMING=1 - -# enable Web Inspector and Tellurium if in developer mode -TELLURIUM_NUB_PATH=/usr/palm/tellurium/telluriumnub.js -ENABLE_INSPECTOR=1 - -# Enable cursor by default -ENABLE_CURSOR_BY_DEFAULT=1 - -# Enable launch optimization -ENABLE_LAUNCH_OPTIMIZATION=1 - -# Set the duration(seconds) passed from last network activity (e.g. FMP Detector) -# If set to a positive value, adjust a custom timeout for a network stable timer in FMPDetector -NETWORK_STABLE_TIMEOUT=3 - -# please keep it in alphabetical order -#WAM_EXTRA_FLAGS="" -#WAM_JS_FLAGS="" -#WAM_COMMON_SWITCHES=" \ -# --application-cache-domain-limit=$WAM_APPCACHE_DOMAINLIMIT \ -# --application-cache-size=$WAM_APPCACHE_MAXSIZE \ -# --browser-subprocess-path=$WAM_EXE_PATH \ -# --disable-direct-npapi-requests \ -# --disable-extensions \ -# --disable-low-res-tiling \ -# --disable-new-video-renderer \ -# --disk-cache-size=$WAM_DISKCACHE_MAXSIZE \ -# --enable-aggressive-release-policy \ -# --enable-accelerated-plugin-rendering \ -# --accelerated-plugin-rendering-blacklist=device;drmAgent;sound;service \ -# --enable-gpu-rasterization \ -# --disable-gpu-rasterization-for-first-frame \ -# --enable-key-event-throttling \ -# --enable-threaded-compositing \ -# --enable-watchdog \ -# --hide-selection-handles \ -# --ignore-gpu-blacklist \ -# --ignore-netif=p2p \ -# --in-process-gpu \ -# --max-unused-resource-memory-usage-percentage=0 \ -# --network-stable-timeout=$NETWORK_STABLE_TIMEOUT \ -# --noerrdialogs \ -# --num-raster-threads=$BLINK_NUM_RASTER_THREADS \ -# --ozone-platform=wayland \ -# --remote-debugging-port=9998 \ -# --resource-buffer-max-allocation-size=$WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE \ -# --resource-buffer-size=$WAM_RESOURCE_BUFFER_SIZE \ -# --touch-events=disabled \ -# --ui-disable-opaque-shader-program \ -# --user-agent-suffix=SmartTV \ -# --user-data-dir=$WAM_DATA_PATH \ -# --enable-devtools-experiments \ -# --webos-wam \ " - -#WAM_LITE_SWITCHES=" --in-process-zygote " - -#export WAM_WEBOS_LITE=NO -#if [ "${WAM_WEBOS_LITE}" = "YES" ] ; then -# export WAM_SWITCHES=${WAM_COMMON_SWITCHES}${WAM_LITE_SWITCHES} -# export SKIA_FONT_CACHE_SIZE=1 -# export SKIA_IMAGE_CACHE_SIZE=40 -# export SKIA_BACKGROUND_FONT_CACHE_SIZE=0 -#else -# export WAM_SWITCHES=${WAM_COMMON_SWITCHES} -# export SKIA_FONT_CACHE_SIZE=8 -# export SKIA_IMAGE_CACHE_SIZE=80 -# export SKIA_BACKGROUND_FONT_CACHE_SIZE=512 -#fi - -#export WAM_EXTRA_SKIA_CACHE_SWITCHES=" \ -# --skia-font-cache-size-mb=$SKIA_FONT_CACHE_SIZE \ -# --skia-image-cache-size-mb=$SKIA_IMAGE_CACHE_SIZE \ -# --skia-background-font-cache-size-kb=$SKIA_BACKGROUND_FONT_CACHE_SIZE \ -# " - -#export WAM_EXTRA_GPU_TUNING_SWITCHES=" \ -# --gpu-program-cache-size-kb=$GPU_PROGRAM_CACHE_SIZE \ -# " -#export WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES=" \ -# --watchdog-render-timeout=$WATCHDOG_RENDER_TIMEOUT \ -# " - -#WEBOS_LOAD_ACCESSIBILITY_PLUGIN=1 - -#WAM_V8_CODE_CACHE_SWITCHES=" --enable-local-resource-code-cache --disallow-code-cache-from-file-uris-with-query-string " - -# Load any special configuration from plugins -#if [ -e "/etc/wam/plugins/conf.sh" ] ; then -# . /etc/wam/plugins/conf.sh || true -#fi - -#exec $WAM_EXE_PATH $WAM_SWITCHES $WAM_EXTRA_SKIA_CACHE_SWITCHES $WAM_EXTRA_GPU_TUNING_SWITCHES $WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES $WAM_EXTRA_FLAGS $WAM_V8_CODE_CACHE_SWITCHES --js-flags="$WAM_JS_FLAGS" - diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service deleted file mode 100644 index a855bf9f5..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service +++ /dev/null @@ -1,37 +0,0 @@ -# @@@LICENSE -# -# Copyright (c) 2017-2018 LG Electronics, Inc. -# -# Confidential computer software. Valid license from LG required for -# possession, use or copying. Consistent with FAR 12.211 and 12.212, -# Commercial Computer Software, Computer Software Documentation, and -# Technical Data for Commercial Items are licensed to the U.S. Government -# under vendor's standard commercial license. -# -# LICENSE@@@ - -[Unit] -Description="WebAppMgr is responsible for running web apps and manage their lifecycle" -After=afm-service-homescreen-service--0.1--main@%i.service weston@display.service -Wants=afm-service-homescreen-service--0.1--main@%i.service -BindsTo=weston@display.service - -[Service] -Type=simple -User=%i -Slice=user-%i.slice -SmackProcessLabel=System -SupplementaryGroups=audio display -UMask=0077 -CapabilityBoundingSet= -OOMScoreAdjust=-1000 -EnvironmentFile=-/etc/default/WebAppMgr.env -Environment=XDG_RUNTIME_DIR=/run/user/%i -Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus -Environment=WAM_DATA_PATH="/home/%i/wamdata" -ExecStart=/usr/bin/WebAppMgr --no-sandbox --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam -Restart=on-failure -RestartSec=50 - -[Install] -WantedBy=default.target diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch deleted file mode 100644 index 829abe07f..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch +++ /dev/null @@ -1,56 +0,0 @@ -From f31e93261f34abaa3dcdc4959963f5b5a8983002 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org> -Date: Thu, 25 Jun 2020 19:47:24 +0200 -Subject: [PATCH] Set webapp roles that are max 12 characters long. - -From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com> - -This is a workaround for SPEC-3127. To prevent repeated roles as much -as possible, I'm using the appid as a basis instead of "Webapp-" + -host + port, which has many chances to be redundant in the first 12 -chars. - -Bug-AGL: SPEC-3127 - ---- - src/agl/WebRuntimeAGL.cpp | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/src/agl/WebRuntimeAGL.cpp b/src/agl/WebRuntimeAGL.cpp -index aed928b..efd2ee4 100644 ---- a/src/agl/WebRuntimeAGL.cpp -+++ b/src/agl/WebRuntimeAGL.cpp -@@ -274,7 +274,6 @@ int WebAppLauncherRuntime::run(int argc, const char** argv) { - - m_id = getAppId(args); - m_url = getAppUrl(args); -- m_role = "WebApp"; - - setup_signals(); - -@@ -326,15 +325,9 @@ bool WebAppLauncherRuntime::init() { - if (n != std::string::npos) { - std::string sport = authority.substr(n+1); - m_host = authority.substr(0, n); -- m_role.push_back('-'); -- m_role.append(m_host); -- m_role.push_back('-'); -- m_role.append(sport); - m_port = stringTo<int>(sport); - } else { - m_host = authority; -- m_role.push_back('-'); -- m_role.append(m_host); - } - } - -@@ -375,6 +368,9 @@ bool WebAppLauncherRuntime::init() { - m_role = "homescreen"; - else if (m_id.rfind("webapps-homescreen", 0) == 0) - m_role = "homescreen"; -+ else { -+ m_role = m_id.substr(0,12); -+ } - - LOG_DEBUG("id=[%s], name=[%s], role=[%s], url=[%s], host=[%s], port=%d, token=[%s], width=[%s], height[%s], surface_type[%d], panel_type[%d]", - m_id.c_str(), m_name.c_str(), m_role.c_str(), m_url.c_str(), diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb b/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb deleted file mode 100644 index d50a14fa0..000000000 --- a/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb +++ /dev/null @@ -1,51 +0,0 @@ -SUMMARY = "WAM" -AUTHOR = "Jani Hautakangas <jani.hautakangas@lge.com>" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit cmake - -DEPENDS = "glib-2.0 jsoncpp boost chromium68 wayland-ivi-extension libhomescreen" - -EXTRA_OECMAKE = "\ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=${prefix} \ - -DPLATFORM_NAME=${@'${DISTRO}'.upper().replace('-', '_')} \ - -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium68" - -PR="r0" - -PROVIDES += "virtual/webruntime" -RPROVIDES_${PN} += "virtual/webruntime" - -SRC_URI = "\ - git://github.com/igalia/${BPN}.git;branch=WIP@6.agl.compositor;protocol=https \ - file://WebAppMgr@.service \ - file://WebAppMgr.env \ - file://trunc-webapp-roles.patch \ -" -S = "${WORKDIR}/git" -SRCREV = "bd650046b688eb1593ae68c16ba3912837507d08" - -do_install_append() { - install -d ${D}${sysconfdir}/wam - install -v -m 644 ${S}/files/launch/security_policy.conf ${D}${sysconfdir}/wam/security_policy.conf - install -d ${D}${systemd_system_unitdir} - install -v -m 644 ${WORKDIR}/WebAppMgr@.service ${D}${systemd_system_unitdir}/WebAppMgr@.service - install -d ${D}${sysconfdir}/default/ - install -v -m 644 ${WORKDIR}/WebAppMgr.env ${D}${sysconfdir}/default/WebAppMgr.env - ln -snf WebAppMgr ${D}${bindir}/web-runtime - install -d ${D}${systemd_system_unitdir}/afm-user-session@.target.wants - ln -sf ../WebAppMgr@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/ -} - -FILES_${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_system_unitdir}" - -CXXFLAGS_append_agl-devel = " -DAGL_DEVEL" - -do_install_append_agl-devel() { - # Enable remote inspector and dev mode - install -d ${D}${localstatedir}/agl-devel/preferences - touch ${D}${localstatedir}/agl-devel/preferences/debug_system_apps - touch ${D}${localstatedir}/agl-devel/preferences/devmode_enabled -} diff --git a/meta-agl-profile-graphical-qt5/LICENSE b/meta-agl-profile-graphical-qt5/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-graphical-qt5/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only b/meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical-qt5/LICENSE.MIT b/meta-agl-profile-graphical-qt5/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-graphical-qt5/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical-qt5/conf/layer.conf b/meta-agl-profile-graphical-qt5/conf/layer.conf deleted file mode 100644 index ef39630d8..000000000 --- a/meta-agl-profile-graphical-qt5/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofilegraphicalqt5" -BBFILE_PATTERN_aglprofilegraphicalqt5 = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofilegraphicalqt5 = "70" - -LAYERSERIES_COMPAT_aglprofilegraphicalqt5 = "dunfell" diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb deleted file mode 100755 index 5147ea44a..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Cross SDK of Full AGL Distribution for IVI profile" - -DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ -It includes the full meta-toolchain, plus developement headers and libraries \ -to form a standalone cross SDK." - -require agl-image-graphical-qt5.bb - -LICENSE = "MIT" - -require agl-image-graphical-qt5-crosssdk.inc - -inherit populate_sdk populate_sdk_qt5 - -# Task do_populate_sdk and do_rootfs can't be exec simultaneously. -# Both exec "createrepo" on the same directory, and so one of them -# can failed (randomly). -addtask do_populate_sdk after do_rootfs diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc deleted file mode 100644 index f43bb07d7..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc +++ /dev/null @@ -1,14 +0,0 @@ -require recipes-platform/images/agl-image-minimal-crosssdk.inc - -TOOLCHAIN_TARGET_TASK += "libafb-helpers-qt-staticdev" - -# Add wayland-scanner to SDK (SPEC-945) -# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup -# wayland-scanner is in nativesdk-wayland-dev ! -# option: add also nativesdk-qtwayland-tools -TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev" - -TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " - -# Add qtwaylandscanner to the SDK -TOOLCHAIN_HOST_TASK_append = " nativesdk-qtwayland-tools " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb deleted file mode 100644 index bcfd724fa..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb +++ /dev/null @@ -1,5 +0,0 @@ -SUMMARY = "A very basic Wayland image with a terminal" - -require agl-image-graphical-qt5.inc - -LICENSE = "MIT" diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc deleted file mode 100644 index 114d06a07..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc +++ /dev/null @@ -1 +0,0 @@ -require recipes-platform/images/agl-image-weston.inc diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb deleted file mode 100644 index a05d69f53..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "Qt5 for native GUI framework of AGL IVI profile" -DESCRIPTION = "A set of Qt5 packages which required by Native App Fw Subsystem" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-appfw-native-qt5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - qtbase \ - qtbase-dev \ - qtbase-plugins \ - qtbase-staticdev \ - qtbase-tools \ - qtdeclarative \ - qtdeclarative-qmlplugins \ - qtdeclarative-tools \ - qtcharts \ - qtwayland \ - qtwayland-plugins \ - qtwayland-tools \ - qtgraphicaleffects-qmlplugins \ - qtvirtualkeyboard \ - " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb deleted file mode 100644 index adebabe76..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "The examples to test Qt5 on AGL Demo Platform" -DESCRIPTION = "A set of packages which contains Qt5 examples" - -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-demo-qt-examples \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - qt3d-examples \ - qtbase-examples \ - qtconnectivity-examples \ - qtdeclarative-examples \ - qtlocation-examples \ - qtmultimedia-examples \ - qtsensors-examples \ - qtsystems-examples \ - qttools-examples \ - qtwayland-examples \ - qtxmlpatterns-examples \ - " diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb deleted file mode 100644 index 74b35f70a..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "The middlewares for AGL IVI profile" -DESCRIPTION = "The set of packages required for AGL Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-graphical-qt5 \ - profile-graphical-qt5 \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-profile-graphical \ - packagegroup-agl-appfw-native-qt5 \ -" - -RDEPENDS_${PN} += "\ - agl-login-manager \ - " - -RDEPENDS_profile-graphical-qt5 = "${PN}" diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend deleted file mode 100644 index 08afa6c7f..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend +++ /dev/null @@ -1,18 +0,0 @@ -# add missing dependencies for SDK - -RDEPENDS_${PN} += " \ - qttools-plugins \ - qtquickcontrols-dev \ - qtquickcontrols-qmlplugins \ - qtquickcontrols2-dev \ - qtquickcontrols2-mkspecs \ - qtquickcontrols2-qmlplugins \ -" - -# remove dependency on qtwebkit (still added to SDK by packagegroup-qt5-toolchain-target) -# see SPEC-1159 -RDEPENDS_${PN}_remove = " \ - qtwebkit-dev \ - qtwebkit-mkspecs \ - qtwebkit-qmlplugins \ -" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb deleted file mode 100644 index 09a262eb7..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb +++ /dev/null @@ -1,13 +0,0 @@ -SUMMARY = "A wrapper library of libhomescreen for Qt Application in AGL" -SECTION = "libs" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93" - -DEPENDS = "qtbase libhomescreen" -RDEPENDS_${PN} = "libhomescreen" - -inherit qmake5 - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libqthomescreen.git;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "b218476402bceda7eb42d41064552a7261ff3205" -S = "${WORKDIR}/git" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb deleted file mode 100644 index dbeda2d11..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Execute Script QML plugin" -DESCRIPTION = "This provides a simple QML plugin able to execute script file." - -LICENSE = "CLOSED" - -DEPENDS = "qtbase-native qtdeclarative" - -SRC_URI = "git://github.com/ntanibata/qml-execscript-plugin.git;protocol=git;" -SRCREV = "1f05c44cccd8aef485d8df8206c8df4e5ad6f310" -S = "${WORKDIR}/git" - -inherit qmake5 - -EXTRA_OECONF = "--with-moc-dir=${STAGING_BINDIR_NATIVE}/qt5" -QML_LIBDIR = "${libdir}/qt5/qml" - -do_install() { - install -d ${D}${libdir}/qt5/qml/execScript/ - install -m 0755 execScript/*.so ${D}${libdir}/qt5/qml/execScript/ - install -m 0644 ../git/execScript/qmldir ${D}${libdir}/qt5/qml/execScript/ -} - -FILES_${PN} += "${QML_LIBDIR}/execScript/libexecscriptplugin.so" -FILES_${PN} += "${QML_LIBDIR}/execScript/qmldir" -FILES_${PN}-dbg += "${QML_LIBDIR}/execScript/.debug" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend deleted file mode 100644 index b7cfe8dce..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -# Backport this fix from meta-qt5: -# https://github.com/meta-qt5/meta-qt5/commit/bf7cdd963008f2d61bc4c324fff2bfafe511fb5f -SRC_URI_remove = "file://0012-qdbuscpp2xml.pro-do-not-build-with-bootstrapped-depe.patch" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch deleted file mode 100644 index 10a1ddd88..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a4943bb5c7fdf5eb297223d2c3bb02d2271bea48 Mon Sep 17 00:00:00 2001 -From: Risto Avila <risto.avila@theqtcompany.com> -Date: Thu, 17 Dec 2015 04:22:53 +0200 -Subject: [PATCH] Force qdbus to make introspect for every findMetaObject - ---- - src/dbus/qdbusintegrator.cpp | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index cce8b9c..ae2a9dc 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -2512,8 +2512,11 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa - if (!interface.isEmpty()) { - QDBusReadLocker locker(FindMetaObject1Action, this); - QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0); -- if (mo) -- return mo; -+ if (mo) { -+ // service is not unique. Remove cached object to force introspect -+ cachedMetaObjects.remove(interface); -+ delete mo; -+ } - } - - // introspect the target object --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend deleted file mode 100644 index e939fa35a..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend +++ /dev/null @@ -1,12 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -PACKAGECONFIG_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}" -PACKAGECONFIG_GL = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}" -PACKAGECONFIG_append = " ${PACKAGECONFIG_WAYLAND} icu accessibility" -PACKAGECONFIG_append = " fontconfig" -PACKAGECONFIG_append = " sql-sqlite" - -EXTRA_OECONF_append = "" - -# '-qpa wayland-egl' set wayland-egl as default of platform plagins -PACKAGECONFIG[wayland]="-qpa wayland-egl -no-qpa-platform-guard" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch deleted file mode 100644 index ba8a991ed..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 58197439eade86e7efc6fe98116c0092ea429d29 Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Tue, 10 Mar 2020 13:59:58 -0700 -Subject: [PATCH] mapbox: update API url to match new schema - ---- - src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp | 7 ++++--- - src/plugins/geoservices/mapbox/qmapboxcommon.h | 2 +- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp -index 0b128556..bd2be6b6 100644 ---- a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp -+++ b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp -@@ -88,12 +88,13 @@ QGeoTiledMapReply *QGeoTileFetcherMapbox::getTileImage(const QGeoTileSpec &spec) - request.setRawHeader("User-Agent", m_userAgent); - - request.setUrl(QUrl(mapboxTilesApiPath + -- ((spec.mapId() >= m_mapIds.size()) ? QStringLiteral("mapbox.streets") : m_mapIds[spec.mapId() - 1]) + QLatin1Char('/') + -+ m_mapIds[m_mapIds.size() - 1] + -+ QStringLiteral("/tiles/256/") + - QString::number(spec.zoom()) + QLatin1Char('/') + - QString::number(spec.x()) + QLatin1Char('/') + - QString::number(spec.y()) + -- ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x.")) : QLatin1String(".")) + -- m_format + QLatin1Char('?') + -+ ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x")) : QLatin1String("")) + -+ QLatin1Char('?') + - QStringLiteral("access_token=") + m_accessToken)); - - QNetworkReply *reply = m_networkManager->get(request); -diff --git a/src/plugins/geoservices/mapbox/qmapboxcommon.h b/src/plugins/geoservices/mapbox/qmapboxcommon.h -index e60c4e83..4b2ea98d 100644 ---- a/src/plugins/geoservices/mapbox/qmapboxcommon.h -+++ b/src/plugins/geoservices/mapbox/qmapboxcommon.h -@@ -46,7 +46,7 @@ - - QT_BEGIN_NAMESPACE - --static const QString mapboxTilesApiPath = QStringLiteral("http://api.tiles.mapbox.com/v4/"); -+static const QString mapboxTilesApiPath = QStringLiteral("https://api.mapbox.com/"); - - // https://www.mapbox.com/api-documentation/#geocoding - static const QString mapboxGeocodingApiPath = QStringLiteral("https://api.mapbox.com/geocoding/v5/mapbox.places/"); --- -2.25.0 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend deleted file mode 100644 index bcda6a1e5..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend +++ /dev/null @@ -1,14 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI += "\ - file://0001-mapbox-update-API-url-to-match-new-schema.patch \ - " - -# Need to explicitly enable the various plugins -PACKAGECONFIG += " \ - geoservices_osm \ - geoservices_here \ - geoservices_itemsoverlay \ - geoservices_mapbox \ - geoservices_mapboxgl \ -" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch deleted file mode 100644 index 007e46763..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch +++ /dev/null @@ -1,80 +0,0 @@ -From ed61f1d932c5c6d38458fcd2e1d5d154383f017e Mon Sep 17 00:00:00 2001 -From: Tasuku Suzuki <tasuku.suzuki@qt.io> -Date: Mon, 12 Dec 2016 16:32:47 +0900 -Subject: [PATCH] metadata image support with the "data" URL scheme for QtQuick - -add posterImage, coverArtImage and thumbnailImage to metadata - -Change-Id: I10b9bae10c219ffa41506d6e6b345020790217a6 ---- - .../multimedia/qdeclarativemediametadata_p.h | 33 ++++++++++++++++++++++ - 1 file changed, 33 insertions(+) - -diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h -index ede7f87..6a6a815 100644 ---- a/src/imports/multimedia/qdeclarativemediametadata_p.h -+++ b/src/imports/multimedia/qdeclarativemediametadata_p.h -@@ -51,6 +51,9 @@ - // We mean it. - // - -+#include <QtCore/QBuffer> -+#include <QtGui/QImage> -+#include <QtGui/QImageWriter> - #include <QtQml/qqml.h> - #include <QtMultimedia/qmediametadata.h> - #include <QtMultimedia/qmediaservice.h> -@@ -153,6 +156,9 @@ class QDeclarativeMediaMetaData : public QObject - Q_PROPERTY(QVariant gpsProcessingMethod READ gpsProcessingMethod WRITE setGPSProcessingMethod NOTIFY metaDataChanged) - Q_PROPERTY(QVariant gpsAreaInformation READ gpsAreaInformation WRITE setGPSAreaInformation NOTIFY metaDataChanged) - -+ Q_PROPERTY(QVariant posterImage READ posterImage NOTIFY metaDataChanged) -+ Q_PROPERTY(QVariant coverArtImage READ coverArtImage NOTIFY metaDataChanged) -+ Q_PROPERTY(QVariant thumbnailImage READ thumbnailImage NOTIFY metaDataChanged) - public: - QDeclarativeMediaMetaData(QMediaObject *player, QObject *parent = 0) - : QObject(parent) -@@ -425,6 +431,16 @@ QT_WARNING_POP - void setGPSAreaInformation(const QVariant &information) { - setMetaData(QMediaMetaData::GPSAreaInformation, information); } - -+ QVariant posterImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::PosterImage)); -+ } -+ QVariant coverArtImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::CoverArtImage)); -+ } -+ QVariant thumbnailImage() const { -+ return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::ThumbnailImage)); -+ } -+ - Q_SIGNALS: - void metaDataChanged(); - -@@ -440,6 +456,23 @@ private: - m_writerControl->setMetaData(key, value); - } - -+ QUrl convertImageToUrl(const QVariant &variant) const -+ { -+ if (variant.type() != QVariant::Image) -+ return QUrl(); -+ -+ QImage image = variant.value<QImage>(); -+ QByteArray data; -+ QBuffer buffer(&data); -+ buffer.open(QBuffer::WriteOnly); -+ QImageWriter png(&buffer, "png"); -+ if (!png.write(image)) { -+ return QUrl(); -+ } -+ buffer.close(); -+ return QUrl(QStringLiteral("data:image/png;base64,") + data.toBase64()); -+ } -+ - QMediaObject *m_mediaObject; - QMetaDataWriterControl *m_writerControl; - bool m_requestedWriterControl; --- -2.7.4 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend deleted file mode 100644 index a06ac2d89..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -PACKAGECONFIG_append = " gstreamer" - -SRC_URI_append = " \ - file://0001-metadata-image-support-with-the-data-URL-scheme-for-.patch \ - " diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend deleted file mode 100644 index 550c58d05..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -DEPENDS_remove = "bluez4" -# currently Qt5 does not support bluez5 "Nothing PROVIDES 'gconfbluez5'" -#DEPENDS_append = "bluez5" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland deleted file mode 100644 index a371c6c4e..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland +++ /dev/null @@ -1,12 +0,0 @@ -QT_WAYLAND_SHELL_INTEGRATION=@QT_WAYLAND_DEFAULT_SHELL@ -# The following might be necessary when multiple/split surfaces are created. -# Without this, QtWayland will sometimes maintain the same/old size even if the -# split surface is destroyed. -# We keep it disabled by default as it causes an additional repaint of the -# surface until the compositor sends a configure event to scale the window to -# the actual area. Typical windows will, by default, have an initial size set -# by qtwayland when starting-up (without an explicit size specified by the -# application). -# Note that QtWayland will only test the presence of the environment variable -# so it will be enabled even if set to 0 -# QT_WAYLAND_RESIZE_AFTER_SWAP=1 diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb deleted file mode 100644 index ae7c956d4..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "QtWayland config file." -DESCRIPTION = "Config file for qtwayland." -SECTION = "apps" -LICENSE = "MIT" - -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -SRC_URI = "file://qtwayland" - -inherit allarch - -QTWAYLAND_DEFAULT_SHELL ?= "xdg-shell" - -do_compile[noexec] = "1" - -do_install () { - install -D -m 644 ${WORKDIR}/qtwayland ${D}${sysconfdir}/afm/unit.env.d/qtwayland - sed -i -e 's/@QT_WAYLAND_DEFAULT_SHELL@/${QTWAYLAND_DEFAULT_SHELL}/' ${D}${sysconfdir}/afm/unit.env.d/qtwayland -} - -RPROVIDES_${PN} += "virtual/qtwayland-config" diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch deleted file mode 100644 index c91e11704..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001 -From: Holger Behrens <holger.behrens@windriver.com> -Date: Tue, 3 Feb 2015 09:52:52 +0100 -Subject: [meta-ivi-demo][PATCH 1/2] protocol: update 3rd party ivi-application - protocol - -Signed-off-by: Holger Behrens <holger.behrens@windriver.com> ---- - src/3rdparty/protocol/ivi-application.xml | 31 +++---------------------------- - 1 file changed, 3 insertions(+), 28 deletions(-) - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -index 833fd38..b06ae6c 100644 ---- a/src/3rdparty/protocol/ivi-application.xml -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -42,34 +42,9 @@ - <arg name="visibility" type="int"/> - </event> - -- <enum name="warning_code"> -- <description summary="possible warning codes returned by ivi compositor"> -- These define all possible warning codes returned by ivi compositor on server-side warnings. -- invalid_wl_surface: -- - wl_surface already has a another role. -- - wl_surface is destroyed before the ivi_surface is destroyed. -- ivi_id_in_use: ivi_id is already assigned by another application. -- </description> -- <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/> -- <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/> -- </enum> -- -- <event name="warning"> -- <description summary="server-side warning detected"> -- The ivi compositor encountered warning while processing a request by this -- application. The warning is defined by argument warning_code and optional -- warning_text. If the warning is detected, client shall destroy the ivi_surface -- object. -- -- When a warning event is sent, the compositor turns the ivi_surface object inert. -- The ivi_surface will not deliver further events, all requests on it are ignored -- except 'destroy', and the association to the ivi_id is removed. The client -- should destroy the ivi_surface object. If an inert ivi_surface object is used as -- an argument to any other object's request, that request will [produce a fatal -- error / produce a warning / be ignored]. -- </description> -- <arg name="warning_code" type="int"/> -- <arg name="warning_text" type="string" allow-null="true"/> -+ <event name="configure"> -+ <arg name="width" type="int"/> -+ <arg name="height" type="int"/> - </event> - - </interface> --- -2.2.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch deleted file mode 100644 index 591ef71c5..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001 -From: Holger Behrens <holger.behrens@windriver.com> -Date: Tue, 3 Feb 2015 09:53:43 +0100 -Subject: [meta-ivi-demo][PATCH 2/2] qwaylandwindow: add support for - IVI-Surface-ID property - -Signed-off-by: Holger Behrens <holger.behrens@windriver.com> ---- - src/client/qwaylandwindow.cpp | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 45a58f2..781081a 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -100,7 +100,14 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { - if (mDisplay->shellIvi()) { -- mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ unsigned int id = 0; -+ QVariant value = window->property("IVI-Surface-ID"); -+ if (value.isValid()) { -+ id = value.toUInt(); -+ } else { -+ id = IVI_SURFACE_ID + getpid(); -+ } -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(id, object()), this); - } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); --- -2.2.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch deleted file mode 100644 index 39296c769..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch +++ /dev/null @@ -1,33 +0,0 @@ -Add qt5wayland.manifest. Removed specfile change from patch. - -Adapted from: - -From 424c23191d81b072255bd7f178ad0ee2c2ea091a Mon Sep 17 00:00:00 2001 -From: Tomasz Olszak <olszak.tomasz@gmail.com> -Date: Fri, 25 Apr 2014 14:32:22 +0200 -Subject: [PATCH 10/21] Added manifest file according to smack 3-domain model. - -Bug-Tizen:TIVI-2416 - -Change-Id: I414e245a5c8847bec32ef6a97569d0f06221e1db -Signed-off-by: Tomasz Olszak <olszak.tomasz@gmail.com> ---- - packaging/qt5-qtwayland.manifest | 5 +++++ - packaging/qt5-qtwayland.spec | 4 ++++ - 2 files changed, 9 insertions(+) - create mode 100644 packaging/qt5-qtwayland.manifest - -diff --git a/packaging/qt5-qtwayland.manifest b/packaging/qt5-qtwayland.manifest -new file mode 100644 -index 0000000..75b0fa5 ---- /dev/null -+++ b/packaging/qt5-qtwayland.manifest -@@ -0,0 +1,5 @@ -+<manifest> -+ <request> -+ <domain name="_"/> -+ </request> -+</manifest> --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch deleted file mode 100644 index 6bea62621..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch +++ /dev/null @@ -1,468 +0,0 @@ -From 5cd43dc7519f54f9786fb6c686a2ce1e682d4366 Mon Sep 17 00:00:00 2001 -From: Philippe Coval <philippe.coval@open.eurogiciel.org> -Date: Fri, 25 Apr 2014 10:31:42 +0200 -Subject: [PATCH 16/21] xdg-shell: Add xdg-shell protocol file version 1.4.0 - -Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.4.0 - -This file will need to be refreshed on protocol update -until xdg-shell land in wayland's public headers - -Task-number: QTBUG-38633/part/1of2 -Change-Id: I397d863dcfc2223ac6eb234c37dbcd7449ecffff -Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com> -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/c2a22eea6716e073875474adf624d8463eba836c -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org> ---- - src/3rdparty/protocol/xdg-shell.xml | 438 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 438 insertions(+) - create mode 100644 src/3rdparty/protocol/xdg-shell.xml - -diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml -new file mode 100644 -index 0000000..4e5cff8 ---- /dev/null -+++ b/src/3rdparty/protocol/xdg-shell.xml -@@ -0,0 +1,438 @@ -+<?xml version="1.0" encoding="UTF-8"?> -+<protocol name="xdg_shell"> -+ -+ <copyright> -+ Copyright © 2008-2013 Kristian Høgsberg -+ Copyright © 2013 Rafael Antognolli -+ Copyright © 2013 Jasper St. Pierre -+ Copyright © 2010-2013 Intel Corporation -+ -+ Permission to use, copy, modify, distribute, and sell this -+ software and its documentation for any purpose is hereby granted -+ without fee, provided that the above copyright notice appear in -+ all copies and that both that copyright notice and this permission -+ notice appear in supporting documentation, and that the name of -+ the copyright holders not be used in advertising or publicity -+ pertaining to distribution of the software without specific, -+ written prior permission. The copyright holders make no -+ representations about the suitability of this software for any -+ purpose. It is provided "as is" without express or implied -+ warranty. -+ -+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN -+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -+ THIS SOFTWARE. -+ </copyright> -+ -+ <interface name="xdg_shell" version="1"> -+ <description summary="create desktop-style surfaces"> -+ This interface is implemented by servers that provide -+ desktop-style user interfaces. -+ -+ It allows clients to associate a xdg_surface with -+ a basic surface. -+ </description> -+ -+ <enum name="version"> -+ <description summary="latest protocol version"> -+ Use this enum to check the protocol version, and it will be updated -+ automatically. -+ </description> -+ <entry name="current" value="1" summary="Always the latest version"/> -+ </enum> -+ -+ -+ <request name="use_unstable_version"> -+ <description summary="enable use of this unstable version"> -+ Use this request in order to enable use of this interface. -+ -+ Understand and agree that one is using an unstable interface, -+ that will likely change in the future, breaking the API. -+ </description> -+ <arg name="version" type="int"/> -+ </request> -+ -+ <request name="get_xdg_surface"> -+ <description summary="create a shell surface from a surface"> -+ Create a shell surface for an existing surface. -+ -+ Only one shell or popup surface can be associated with a given -+ surface. -+ </description> -+ <arg name="id" type="new_id" interface="xdg_surface"/> -+ <arg name="surface" type="object" interface="wl_surface"/> -+ </request> -+ -+ <request name="get_xdg_popup"> -+ <description summary="create a shell surface from a surface"> -+ Create a popup surface for an existing surface. -+ -+ Only one shell or popup surface can be associated with a given -+ surface. -+ </description> -+ <arg name="id" type="new_id" interface="xdg_popup"/> -+ <arg name="surface" type="object" interface="wl_surface"/> -+ <arg name="parent" type="object" interface="wl_surface"/> -+ <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/> -+ <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/> -+ <arg name="x" type="int"/> -+ <arg name="y" type="int"/> -+ <arg name="flags" type="uint"/> -+ </request> -+ </interface> -+ -+ <interface name="xdg_surface" version="1"> -+ -+ <description summary="desktop-style metadata interface"> -+ An interface that may be implemented by a wl_surface, for -+ implementations that provide a desktop-style user interface. -+ -+ It provides requests to treat surfaces like windows, allowing to set -+ properties like maximized, fullscreen, minimized, and to move and resize -+ them, and associate metadata like title and app id. -+ -+ On the server side the object is automatically destroyed when -+ the related wl_surface is destroyed. On client side, -+ xdg_surface.destroy() must be called before destroying -+ the wl_surface object. -+ </description> -+ -+ <request name="destroy" type="destructor"> -+ <description summary="remove xdg_surface interface"> -+ The xdg_surface interface is removed from the wl_surface object -+ that was turned into a xdg_surface with -+ xdg_shell.get_xdg_surface request. The xdg_surface properties, -+ like maximized and fullscreen, are lost. The wl_surface loses -+ its role as a xdg_surface. The wl_surface is unmapped. -+ </description> -+ </request> -+ -+ <request name="set_transient_for"> -+ <description summary="surface is a child of another surface"> -+ Setting a surface as transient of another means that it is child -+ of another surface. -+ -+ Child surfaces are stacked above their parents, and will be -+ unmapped if the parent is unmapped too. They should not appear -+ on task bars and alt+tab. -+ </description> -+ <arg name="parent" type="object" interface="wl_surface" allow-null="true"/> -+ </request> -+ -+ <request name="set_title"> -+ <description summary="set surface title"> -+ Set a short title for the surface. -+ -+ This string may be used to identify the surface in a task bar, -+ window list, or other user interface elements provided by the -+ compositor. -+ -+ The string must be encoded in UTF-8. -+ </description> -+ <arg name="title" type="string"/> -+ </request> -+ -+ <request name="set_app_id"> -+ <description summary="set surface class"> -+ Set an id for the surface. -+ -+ The app id identifies the general class of applications to which -+ the surface belongs. -+ -+ It should be the ID that appears in the new desktop entry -+ specification, the interface name. -+ </description> -+ <arg name="app_id" type="string"/> -+ </request> -+ -+ <request name="pong"> -+ <description summary="respond to a ping event"> -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ </description> -+ <arg name="serial" type="uint" summary="serial of the ping event"/> -+ </request> -+ -+ <event name="ping"> -+ <description summary="ping client"> -+ Ping a client to check if it is receiving events and sending -+ requests. A client is expected to reply with a pong request. -+ </description> -+ <arg name="serial" type="uint"/> -+ </event> -+ -+ <request name="move"> -+ <description summary="start an interactive move"> -+ Start a pointer-driven move of the surface. -+ -+ This request must be used in response to a button press event. -+ The server may ignore move requests depending on the state of -+ the surface (e.g. fullscreen or maximized). -+ </description> -+ <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/> -+ <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/> -+ </request> -+ -+ <enum name="resize_edge"> -+ <description summary="edge values for resizing"> -+ These values are used to indicate which edge of a surface -+ is being dragged in a resize operation. The server may -+ use this information to adapt its behavior, e.g. choose -+ an appropriate cursor image. -+ </description> -+ <entry name="none" value="0"/> -+ <entry name="top" value="1"/> -+ <entry name="bottom" value="2"/> -+ <entry name="left" value="4"/> -+ <entry name="top_left" value="5"/> -+ <entry name="bottom_left" value="6"/> -+ <entry name="right" value="8"/> -+ <entry name="top_right" value="9"/> -+ <entry name="bottom_right" value="10"/> -+ </enum> -+ -+ <request name="resize"> -+ <description summary="start an interactive resize"> -+ Start a pointer-driven resizing of the surface. -+ -+ This request must be used in response to a button press event. -+ The server may ignore resize requests depending on the state of -+ the surface (e.g. fullscreen or maximized). -+ </description> -+ <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/> -+ <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/> -+ <arg name="edges" type="uint" summary="which edge or corner is being dragged"/> -+ </request> -+ -+ <event name="configure"> -+ <description summary="suggest resize"> -+ The configure event asks the client to resize its surface. -+ -+ The size is a hint, in the sense that the client is free to -+ ignore it if it doesn't resize, pick a smaller size (to -+ satisfy aspect ratio or resize in steps of NxM pixels). -+ -+ The edges parameter provides a hint about how the surface -+ was resized. The client may use this information to decide -+ how to adjust its content to the new size (e.g. a scrolling -+ area might adjust its content position to leave the viewable -+ content unmoved). Valid edge values are from resize_edge enum. -+ -+ The client is free to dismiss all but the last configure -+ event it received. -+ -+ The width and height arguments specify the size of the window -+ in surface local coordinates. -+ </description> -+ -+ <arg name="edges" type="uint"/> -+ <arg name="width" type="int"/> -+ <arg name="height" type="int"/> -+ </event> -+ -+ <request name="set_output"> -+ <description summary="set the default output used by this surface"> -+ Set the default output used by this surface when it is first mapped. -+ -+ If this value is NULL (default), it's up to the compositor to choose -+ which display will be used to map this surface. -+ -+ When fullscreen or maximized state are set on this surface, and it -+ wasn't mapped yet, the output set with this method will be used. -+ Otherwise, the output where the surface is currently mapped will be -+ used. -+ </description> -+ <arg name="output" type="object" interface="wl_output" allow-null="true"/> -+ </request> -+ -+ <event name="request_set_fullscreen"> -+ <description summary="server requests that the client set fullscreen"> -+ Event sent from the compositor to the client requesting that the client -+ goes to a fullscreen state. It's the client job to call set_fullscreen -+ and really trigger the fullscreen state. -+ </description> -+ </event> -+ -+ <event name="request_unset_fullscreen"> -+ <description summary="server requests that the client unset fullscreen"> -+ Event sent from the compositor to the client requesting that the client -+ leaves the fullscreen state. It's the client job to call -+ unset_fullscreen and really leave the fullscreen state. -+ </description> -+ </event> -+ -+ <request name="set_fullscreen"> -+ <description summary="set the surface state as fullscreen"> -+ Set the surface as fullscreen. -+ -+ After this request, the compositor should send a configure event -+ informing the output size. -+ -+ This request informs the compositor that the next attached buffer -+ committed will be in a fullscreen state. The buffer size should be the -+ same size as the size informed in the configure event, if the client -+ doesn't want to leave any empty area. -+ -+ In other words: the next attached buffer after set_maximized is the new -+ maximized buffer. And the surface will be positioned at the maximized -+ position on commit. -+ -+ A simple way to synchronize and wait for the correct configure event is -+ to use a wl_display.sync request right after the set_fullscreen -+ request. When the sync callback returns, the last configure event -+ received just before it will be the correct one, and should contain the -+ right size for the surface to maximize. -+ -+ Setting one state won't unset another state. Use -+ xdg_surface.unset_fullscreen for unsetting it. -+ </description> -+ </request> -+ -+ <request name="unset_fullscreen"> -+ <description summary="unset the surface state as fullscreen"> -+ Unset the surface fullscreen state. -+ -+ Same negotiation as set_fullscreen must be used. -+ </description> -+ </request> -+ -+ <event name="request_set_maximized"> -+ <description summary="server requests that the client set maximized"> -+ Event sent from the compositor to the client requesting that the client -+ goes to a maximized state. It's the client job to call set_maximized -+ and really trigger the maximized state. -+ </description> -+ </event> -+ -+ <event name="request_unset_maximized"> -+ <description summary="server requests that the client unset maximized"> -+ Event sent from the compositor to the client requesting that the client -+ leaves the maximized state. It's the client job to call unset_maximized -+ and really leave the maximized state. -+ </description> -+ </event> -+ -+ <request name="set_maximized"> -+ <description summary="set the surface state as maximized"> -+ Set the surface as maximized. -+ -+ After this request, the compositor will send a configure event -+ informing the output size minus panel and other MW decorations. -+ -+ This request informs the compositor that the next attached buffer -+ committed will be in a maximized state. The buffer size should be the -+ same size as the size informed in the configure event, if the client -+ doesn't want to leave any empty area. -+ -+ In other words: the next attached buffer after set_maximized is the new -+ maximized buffer. And the surface will be positioned at the maximized -+ position on commit. -+ -+ A simple way to synchronize and wait for the correct configure event is -+ to use a wl_display.sync request right after the set_maximized request. -+ When the sync callback returns, the last configure event received just -+ before it will be the correct one, and should contain the right size -+ for the surface to maximize. -+ -+ Setting one state won't unset another state. Use -+ xdg_surface.unset_maximized for unsetting it. -+ </description> -+ </request> -+ -+ <request name="unset_maximized"> -+ <description summary="unset the surface state as maximized"> -+ Unset the surface maximized state. -+ -+ Same negotiation as set_maximized must be used. -+ </description> -+ </request> -+ -+ <request name="set_minimized"> -+ <description summary="set the surface state as minimized"> -+ Set the surface minimized state. -+ -+ Setting one state won't unset another state. -+ </description> -+ </request> -+ -+ <event name="focused_set"> -+ <description summary="surface was focused"> -+ The focused_set event is sent when this surface has been -+ activated. Window decorations should be updated accordingly. -+ </description> -+ </event> -+ -+ <event name="focused_unset"> -+ <description summary="surface was unfocused"> -+ The focused_unset event is sent when this surface has been -+ deactivated, because another surface has been activated. Window -+ decorations should be updated accordingly. -+ </description> -+ </event> -+ </interface> -+ -+ <interface name="xdg_popup" version="1"> -+ <description summary="desktop-style metadata interface"> -+ An interface that may be implemented by a wl_surface, for -+ implementations that provide a desktop-style popups/menus. A popup -+ surface is a transient surface with an added pointer grab. -+ -+ An existing implicit grab will be changed to owner-events mode, -+ and the popup grab will continue after the implicit grab ends -+ (i.e. releasing the mouse button does not cause the popup to be -+ unmapped). -+ -+ The popup grab continues until the window is destroyed or a mouse -+ button is pressed in any other clients window. A click in any of -+ the clients surfaces is reported as normal, however, clicks in -+ other clients surfaces will be discarded and trigger the callback. -+ -+ The x and y arguments specify the locations of the upper left -+ corner of the surface relative to the upper left corner of the -+ parent surface, in surface local coordinates. -+ -+ xdg_popup surfaces are always transient for another surface. -+ </description> -+ -+ <request name="destroy" type="destructor"> -+ <description summary="remove xdg_surface interface"> -+ The xdg_surface interface is removed from the wl_surface object -+ that was turned into a xdg_surface with -+ xdg_shell.get_xdg_surface request. The xdg_surface properties, -+ like maximized and fullscreen, are lost. The wl_surface loses -+ its role as a xdg_surface. The wl_surface is unmapped. -+ </description> -+ </request> -+ -+ <request name="pong"> -+ <description summary="respond to a ping event"> -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ </description> -+ <arg name="serial" type="uint" summary="serial of the ping event"/> -+ </request> -+ -+ <event name="ping"> -+ <description summary="ping client"> -+ Ping a client to check if it is receiving events and sending -+ requests. A client is expected to reply with a pong request. -+ </description> -+ <arg name="serial" type="uint"/> -+ </event> -+ -+ <event name="popup_done"> -+ <description summary="popup interaction is done"> -+ The popup_done event is sent out when a popup grab is broken, -+ that is, when the users clicks a surface that doesn't belong -+ to the client owning the popup surface. -+ </description> -+ <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/> -+ </event> -+ -+ </interface> -+</protocol> --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch deleted file mode 100644 index fe1bb50e8..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch +++ /dev/null @@ -1,1029 +0,0 @@ -From 0edba039247ce888dbb7ff0a93c7b9ec01bac46e Mon Sep 17 00:00:00 2001 -From: Philippe Coval <philippe.coval@open.eurogiciel.org> -Date: Wed, 26 Mar 2014 10:16:01 +0100 -Subject: [PATCH 17/21] xdg-shell: Add minimize feature to QWindow using - wayland's xdg-shell - -The feature is disabled by default, -and can be enabled at runtime -by exporting QT_WAYLAND_USE_XDG_SHELL env variable. - -This patch relies on presence of protocol file -which has been imported from weston-1.4.0 sources, -until the xdg-shell is merge into wayland itself. - -Because xdg-shell is experimental, -code fallback to WaylandShell if no XdgShell -but keep in mind those shells are exclusive. - -Since xdg-shell and wayland-shell share most of the API, -some factorization is done by an (empty) abstraction class -to keep the code more readable. - -Despite xdg-shell introduces new popups concept, -they're not used on this change for maitainance purpose. - -Notes: - -* This change depends on presence of xdg-shell protocol file. - -* You can check a demo video - (qt-tizen-cinematic-experience-20140430-rzr) - of the test case at : - https://www.youtube.com/watch?v=pY_XXvKc_0E# - -* Use Super+Tab to show window again if hidden - -Task-number: QTBUG-38633/part/2of2 -Change-Id: I2d7ed85bea1847d82439fdfc893a3dbb2581ffff -Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com> -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/768484daaa64bea965bef981a16f59be8db0c190 -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org> ---- - src/client/client.pro | 5 + - src/client/qwaylanddisplay.cpp | 5 + - src/client/qwaylanddisplay_p.h | 4 + - src/client/qwaylandshellsurface.cpp | 134 ------------------------ - src/client/qwaylandshellsurface_p.h | 40 +++----- - src/client/qwaylandwindow.cpp | 40 ++++++-- - src/client/qwaylandwlshellsurface.cpp | 186 ++++++++++++++++++++++++++++++++++ - src/client/qwaylandwlshellsurface_p.h | 101 ++++++++++++++++++ - src/client/qwaylandxdgsurface.cpp | 173 +++++++++++++++++++++++++++++++ - src/client/qwaylandxdgsurface_p.h | 105 +++++++++++++++++++ - 10 files changed, 625 insertions(+), 168 deletions(-) - create mode 100644 src/client/qwaylandwlshellsurface.cpp - create mode 100644 src/client/qwaylandwlshellsurface_p.h - create mode 100644 src/client/qwaylandxdgsurface.cpp - create mode 100644 src/client/qwaylandxdgsurface_p.h - -diff --git a/src/client/client.pro b/src/client/client.pro -index 10cbd31..9ecf82f 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -41,6 +41,7 @@ WAYLANDCLIENTSOURCES += \ - ../extensions/qtkey-extension.xml \ - ../extensions/windowmanager.xml \ - ../3rdparty/protocol/text.xml \ -+ ../3rdparty/protocol/xdg-shell.xml \ - - SOURCES += qwaylandintegration.cpp \ - qwaylandnativeinterface.cpp \ -@@ -57,6 +58,8 @@ SOURCES += qwaylandintegration.cpp \ - qwaylanddatadevicemanager.cpp \ - qwaylanddatasource.cpp \ - qwaylandshellsurface.cpp \ -+ qwaylandwlshellsurface.cpp \ -+ qwaylandxdgsurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ - qwaylandsubsurface.cpp \ -@@ -85,6 +88,8 @@ HEADERS += qwaylandintegration_p.h \ - qwaylanddatadevicemanager_p.h \ - qwaylanddatasource_p.h \ - qwaylandshellsurface_p.h \ -+ qwaylandwlshellsurface_p.h \ -+ qwaylandxdgsurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ - qwaylandsubsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 0b715c0..7f953ad 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -61,6 +61,7 @@ - #include "qwaylandqtkey_p.h" - - #include <QtWaylandClient/private/qwayland-text.h> -+#include <QtWaylandClient/private/qwayland-xdg-shell.h> - - #include <QtCore/QAbstractEventDispatcher> - #include <QtGui/private/qguiapplication_p.h> -@@ -206,6 +207,10 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mCompositor.init(registry, id); - } else if (interface == QStringLiteral("wl_shm")) { - mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1)); -+ } else if (interface == QStringLiteral("xdg_shell") -+ && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { -+ mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); -+ mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); - } else if (interface == QStringLiteral("wl_shell")){ - mShell.reset(new QtWayland::wl_shell(registry, id)); - } else if (interface == QStringLiteral("wl_seat")) { -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index 40cb2b2..cf5dfc2 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -51,6 +51,7 @@ - - #include <QtWaylandClient/private/qwayland-wayland.h> - #include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include <QtWaylandClient/private/qwayland-xdg-shell.h> - - struct wl_cursor_image; - -@@ -78,6 +79,7 @@ namespace QtWayland { - class qt_sub_surface_extension; - class qt_surface_extension; - class wl_text_input_manager; -+ class xdg_shell; - } - - typedef void (*RegistryListener)(void *data, -@@ -113,6 +115,7 @@ public: - QtWayland::wl_compositor *compositor() { return &mCompositor; } - - QtWayland::wl_shell *shell() { return mShell.data(); } -+ QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } - - QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -168,6 +171,7 @@ private: - QThread *mEventThread; - QWaylandEventThread *mEventThreadObject; - QScopedPointer<QtWayland::wl_shell> mShell; -+ QScopedPointer<QtWayland::xdg_shell> mShellXdg; - QList<QPlatformScreen *> mScreens; - QList<QWaylandInputDevice *> mInputDevices; - QList<Listener> mRegistryListeners; -diff --git a/src/client/qwaylandshellsurface.cpp b/src/client/qwaylandshellsurface.cpp -index b7a819f..80e509b 100644 ---- a/src/client/qwaylandshellsurface.cpp -+++ b/src/client/qwaylandshellsurface.cpp -@@ -40,137 +40,3 @@ - ****************************************************************************/ - - #include "qwaylandshellsurface_p.h" -- --#include "qwaylanddisplay_p.h" --#include "qwaylandwindow_p.h" --#include "qwaylandinputdevice_p.h" --#include "qwaylanddecoration_p.h" --#include "qwaylandscreen_p.h" -- --#include <QtCore/QDebug> -- --QT_BEGIN_NAMESPACE -- --QWaylandShellSurface::QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) -- : QtWayland::wl_shell_surface(shell_surface) -- , m_window(window) -- , m_maximized(false) -- , m_fullscreen(false) --{ --} -- --QWaylandShellSurface::~QWaylandShellSurface() --{ -- wl_shell_surface_destroy(object()); --} -- --void QWaylandShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) --{ -- resize(inputDevice->wl_seat(), -- inputDevice->serial(), -- edges); --} -- --void QWaylandShellSurface::move(QWaylandInputDevice *inputDevice) --{ -- move(inputDevice->wl_seat(), -- inputDevice->serial()); --} -- --void QWaylandShellSurface::setMaximized() --{ -- m_maximized = true; -- m_size = m_window->window()->geometry().size(); -- set_maximized(0); --} -- --void QWaylandShellSurface::setFullscreen() --{ -- m_fullscreen = true; -- m_size = m_window->window()->geometry().size(); -- set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); --} -- --void QWaylandShellSurface::setNormal() --{ -- if (m_fullscreen || m_maximized) { -- m_fullscreen = m_maximized = false; -- setTopLevel(); -- QMargins m = m_window->frameMargins(); -- m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -- } --} -- --void QWaylandShellSurface::setMinimized() --{ -- // TODO: There's no wl_shell_surface API for this --} -- --void QWaylandShellSurface::setTopLevel() --{ -- set_toplevel(); --} -- --void QWaylandShellSurface::updateTransientParent(QWindow *parent) --{ -- QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle()); -- if (!parent_wayland_window) -- return; -- -- // set_transient expects a position relative to the parent -- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -- QWindow *parentWin = m_window->window()->transientParent(); -- transientPos -= parentWin->geometry().topLeft(); -- if (parent_wayland_window->decoration()) { -- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -- } -- -- uint32_t flags = 0; -- Qt::WindowFlags wf = m_window->window()->flags(); -- if (wf.testFlag(Qt::ToolTip) -- || wf.testFlag(Qt::WindowTransparentForInput)) -- flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; -- -- set_transient(parent_wayland_window->object(), -- transientPos.x(), -- transientPos.y(), -- flags); --} -- --void QWaylandShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) --{ -- QWaylandWindow *parent_wayland_window = parent; -- if (!parent_wayland_window) -- return; -- -- // set_popup expects a position relative to the parent -- QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -- transientPos -= parent_wayland_window->geometry().topLeft(); -- if (parent_wayland_window->decoration()) { -- transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -- transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -- } -- -- set_popup(device->wl_seat(), serial, parent_wayland_window->object(), -- transientPos.x(), transientPos.y(), 0); --} -- --void QWaylandShellSurface::shell_surface_ping(uint32_t serial) --{ -- pong(serial); --} -- --void QWaylandShellSurface::shell_surface_configure(uint32_t edges, -- int32_t width, -- int32_t height) --{ -- m_window->configure(edges, width, height); --} -- --void QWaylandShellSurface::shell_surface_popup_done() --{ -- QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); --} -- --QT_END_NAMESPACE -diff --git a/src/client/qwaylandshellsurface_p.h b/src/client/qwaylandshellsurface_p.h -index 2477c3f..2f59f60 100644 ---- a/src/client/qwaylandshellsurface_p.h -+++ b/src/client/qwaylandshellsurface_p.h -@@ -55,39 +55,25 @@ class QWaylandWindow; - class QWaylandInputDevice; - class QWindow; - --class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface : public QtWayland::wl_shell_surface -+class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface - { - public: -- QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); -- ~QWaylandShellSurface(); -+ virtual ~QWaylandShellSurface() {} -+ virtual void resize(QWaylandInputDevice * /*inputDevice*/, enum wl_shell_surface_resize /*edges*/) -+ {} - -- using QtWayland::wl_shell_surface::resize; -- void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges); -- -- using QtWayland::wl_shell_surface::move; -- void move(QWaylandInputDevice *inputDevice); -+ virtual void move(QWaylandInputDevice * /*inputDevice*/) {} -+ virtual void setTitle(const QString & /*title*/) {} -+ virtual void setAppId(const QString & /*appId*/) {} - - private: -- void setMaximized(); -- void setFullscreen(); -- void setNormal(); -- void setMinimized(); -- -- void setTopLevel(); -- void updateTransientParent(QWindow *parent); -- void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); -- -- QWaylandWindow *m_window; -- bool m_maximized; -- bool m_fullscreen; -- QSize m_size; -- -- void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -- void shell_surface_configure(uint32_t edges, -- int32_t width, -- int32_t height) Q_DECL_OVERRIDE; -- void shell_surface_popup_done() Q_DECL_OVERRIDE; -+ virtual void setMaximized() {} -+ virtual void setFullscreen() {} -+ virtual void setNormal() {} -+ virtual void setMinimized() {} - -+ virtual void setTopLevel() {} -+ virtual void updateTransientParent(QWindow * /*parent*/) {} - friend class QWaylandWindow; - }; - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 920c977..3fb3a49 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -46,6 +46,8 @@ - #include "qwaylandinputdevice_p.h" - #include "qwaylandscreen_p.h" - #include "qwaylandshellsurface_p.h" -+#include "qwaylandwlshellsurface_p.h" -+#include "qwaylandxdgsurface_p.h" - #include "qwaylandextendedsurface_p.h" - #include "qwaylandsubsurface_p.h" - #include "qwaylanddecoration_p.h" -@@ -92,8 +94,16 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - static WId id = 1; - mWindowId = id++; - -- if (mDisplay->shell() && window->type() & Qt::Window && !(window->flags() & Qt::BypassWindowManagerHint)) -- mShellSurface = new QWaylandShellSurface(mDisplay->shell()->get_shell_surface(object()), this); -+ if (!(window->flags() & Qt::BypassWindowManagerHint)) { -+ if (mDisplay->shellXdg()) { -+ if (window->type() & Qt::Window) { -+ mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); -+ } -+ } else if (mDisplay->shell() && window->type() & Qt::Window) { -+ mShellSurface = new QWaylandWlShellSurface(mDisplay->shell()->get_shell_surface(object()), this); -+ } -+ } -+ - if (mDisplay->windowExtension()) - mExtendedWindow = new QWaylandExtendedSurface(this, mDisplay->windowExtension()->get_extended_surface(object())); - if (mDisplay->subSurfaceExtension()) -@@ -101,12 +111,12 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - - if (mShellSurface) { - // Set initial surface title -- mShellSurface->set_title(window->title()); -+ mShellSurface->setTitle(window->title()); - - // Set surface class to the .desktop file name (obtained from executable name) - QFileInfo exeFileInfo(qApp->applicationFilePath()); - QString className = exeFileInfo.baseName() + QLatin1String(".desktop"); -- mShellSurface->set_class(className); -+ mShellSurface->setAppId(className); - } - - if (QPlatformWindow::parent() && mSubSurfaceWindow) { -@@ -170,7 +180,7 @@ void QWaylandWindow::setParent(const QPlatformWindow *parent) - void QWaylandWindow::setWindowTitle(const QString &title) - { - if (mShellSurface) { -- mShellSurface->set_title(title); -+ mShellSurface->setTitle(title); - } - - if (mWindowDecoration && window()->isVisible()) -@@ -212,8 +222,10 @@ void QWaylandWindow::setVisible(bool visible) - mMouseDevice = parent->mMouseDevice; - mMouseSerial = parent->mMouseSerial; - -- if (mMouseDevice) -- mShellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); -+ QWaylandWlShellSurface *wlshellSurface = dynamic_cast<QWaylandWlShellSurface*>(mShellSurface); -+ if (mMouseDevice && wlshellSurface) { -+ wlshellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial); -+ } - } - - if (!mSentInitialResize) { -@@ -428,6 +440,20 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags) - - bool QWaylandWindow::createDecoration() - { -+ // so far only xdg-shell support this "unminimize" trick, may be moved elsewhere -+ if (mState == Qt::WindowMinimized) { -+ QWaylandXdgSurface *xdgSurface = dynamic_cast<QWaylandXdgSurface *>(mShellSurface); -+ if ( xdgSurface ) { -+ if (xdgSurface->isFullscreen()) { -+ setWindowStateInternal(Qt::WindowFullScreen); -+ } else if (xdgSurface->isMaximized()) { -+ setWindowStateInternal(Qt::WindowMaximized); -+ } else { -+ setWindowStateInternal(Qt::WindowNoState); -+ } -+ } -+ } -+ - static bool disableWaylandDecorations = !qgetenv("QT_WAYLAND_DISABLE_WINDOWDECORATION").isEmpty(); - if (disableWaylandDecorations) - return false; -diff --git a/src/client/qwaylandwlshellsurface.cpp b/src/client/qwaylandwlshellsurface.cpp -new file mode 100644 -index 0000000..4b73ec2 ---- /dev/null -+++ b/src/client/qwaylandwlshellsurface.cpp -@@ -0,0 +1,186 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandwlshellsurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include <QtCore/QDebug> -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandWlShellSurface::QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window) -+ : QtWayland::wl_shell_surface(shell_surface) -+ , m_window(window) -+ , m_maximized(false) -+ , m_fullscreen(false) -+{ -+} -+ -+QWaylandWlShellSurface::~QWaylandWlShellSurface() -+{ -+ wl_shell_surface_destroy(object()); -+} -+ -+void QWaylandWlShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+ resize(inputDevice->wl_seat(), -+ inputDevice->serial(), -+ edges); -+} -+ -+void QWaylandWlShellSurface::move(QWaylandInputDevice *inputDevice) -+{ -+ move(inputDevice->wl_seat(), -+ inputDevice->serial()); -+} -+ -+void QWaylandWlShellSurface::setTitle(const QString & title) -+{ -+ return QtWayland::wl_shell_surface::set_title(title); -+} -+ -+void QWaylandWlShellSurface::setAppId(const QString & appId) -+{ -+ return QtWayland::wl_shell_surface::set_class(appId); -+} -+ -+void QWaylandWlShellSurface::setMaximized() -+{ -+ m_maximized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_maximized(0); -+} -+ -+void QWaylandWlShellSurface::setFullscreen() -+{ -+ m_fullscreen = true; -+ m_size = m_window->window()->geometry().size(); -+ set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0); -+} -+ -+void QWaylandWlShellSurface::setNormal() -+{ -+ if (m_fullscreen || m_maximized) { -+ m_fullscreen = m_maximized = false; -+ setTopLevel(); -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+} -+ -+void QWaylandWlShellSurface::setMinimized() -+{ -+ // TODO: There's no wl_shell_surface API for this -+} -+ -+void QWaylandWlShellSurface::setTopLevel() -+{ -+ set_toplevel(); -+} -+ -+void QWaylandWlShellSurface::updateTransientParent(QWindow *parent) -+{ -+ QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle()); -+ if (!parent_wayland_window) -+ return; -+ -+ // set_transient expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ QWindow *parentWin = m_window->window()->transientParent(); -+ transientPos -= parentWin->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ uint32_t flags = 0; -+ Qt::WindowFlags wf = m_window->window()->flags(); -+ if (wf.testFlag(Qt::ToolTip) -+ || wf.testFlag(Qt::WindowTransparentForInput)) -+ flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE; -+ -+ set_transient(parent_wayland_window->object(), -+ transientPos.x(), -+ transientPos.y(), -+ flags); -+} -+ -+void QWaylandWlShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial) -+{ -+ QWaylandWindow *parent_wayland_window = parent; -+ if (!parent_wayland_window) -+ return; -+ -+ // set_popup expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ transientPos -= parent_wayland_window->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ set_popup(device->wl_seat(), serial, parent_wayland_window->object(), -+ transientPos.x(), transientPos.y(), 0); -+} -+ -+void QWaylandWlShellSurface::shell_surface_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+void QWaylandWlShellSurface::shell_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) -+{ -+ m_window->configure(edges, width, height); -+} -+ -+void QWaylandWlShellSurface::shell_surface_popup_done() -+{ -+ QCoreApplication::postEvent(m_window->window(), new QCloseEvent()); -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandwlshellsurface_p.h b/src/client/qwaylandwlshellsurface_p.h -new file mode 100644 -index 0000000..d02bb7b ---- /dev/null -+++ b/src/client/qwaylandwlshellsurface_p.h -@@ -0,0 +1,101 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDWLSHELLSURFACE_H -+#define QWAYLANDWLSHELLSURFACE_H -+ -+#include <QtCore/QSize> -+ -+#include <wayland-client.h> -+ -+#include <QtWaylandClient/private/qwayland-wayland.h> -+#include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandWlShellSurface : public QtWayland::wl_shell_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandWlShellSurface(); -+ -+ using QtWayland::wl_shell_surface::resize; -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ -+ using QtWayland::wl_shell_surface::move; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString & title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial); -+ -+ QWaylandWindow *m_window; -+ bool m_maximized; -+ bool m_fullscreen; -+ QSize m_size; -+ -+ void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -+ void shell_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) Q_DECL_OVERRIDE; -+ void shell_surface_popup_done() Q_DECL_OVERRIDE; -+ -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDSHELLSURFACE_H -diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp -new file mode 100644 -index 0000000..1b8affa ---- /dev/null -+++ b/src/client/qwaylandxdgsurface.cpp -@@ -0,0 +1,173 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandxdgsurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include <QtCore/QDebug> -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandXdgSurface::QWaylandXdgSurface(struct ::xdg_surface *xdg_surface, QWaylandWindow *window) -+ : QtWayland::xdg_surface(xdg_surface) -+ , m_window(window) -+ , m_maximized(false) -+ , m_minimized(false) -+ , m_fullscreen(false) -+{ -+} -+ -+QWaylandXdgSurface::~QWaylandXdgSurface() -+{ -+ xdg_surface_destroy(object()); -+} -+ -+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+ // May need some conversion if types get incompatibles, ATM they're identical -+ enum resize_edge const * const arg = reinterpret_cast<enum resize_edge const * const>(&edges); -+ resize(inputDevice, *arg); -+} -+ -+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum resize_edge edges) -+{ -+ resize(inputDevice->wl_seat(), -+ inputDevice->serial(), -+ edges); -+} -+ -+void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) -+{ -+ move(inputDevice->wl_seat(), -+ inputDevice->serial()); -+} -+ -+void QWaylandXdgSurface::setMaximized() -+{ -+ m_maximized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_maximized(); -+} -+ -+void QWaylandXdgSurface::setFullscreen() -+{ -+ m_fullscreen = true; -+ m_size = m_window->window()->geometry().size(); -+ set_fullscreen(); -+} -+ -+void QWaylandXdgSurface::setNormal() -+{ -+ if (m_fullscreen || m_maximized || m_minimized) { -+ if (m_maximized) { unset_maximized(); } -+ if (m_fullscreen) { unset_fullscreen(); } -+ -+ m_fullscreen = m_maximized = m_minimized = false; -+ setTopLevel(); -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+} -+ -+void QWaylandXdgSurface::setMinimized() -+{ -+ m_minimized = true; -+ m_size = m_window->window()->geometry().size(); -+ set_minimized(); -+} -+ -+void QWaylandXdgSurface::setTopLevel() -+{ -+ // There's no xdg_shell_surface API for this, ignoring -+} -+ -+void QWaylandXdgSurface::updateTransientParent(QWindow *parent) -+{ -+ QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle()); -+ if (!parent_wayland_window) -+ return; -+ -+ // set_transient expects a position relative to the parent -+ QPoint transientPos = m_window->geometry().topLeft(); // this is absolute -+ QWindow *parentWin = m_window->window()->transientParent(); -+ transientPos -= parentWin->geometry().topLeft(); -+ if (parent_wayland_window->decoration()) { -+ transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left()); -+ transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top()); -+ } -+ -+ uint32_t flags = 0; -+ Qt::WindowFlags wf = m_window->window()->flags(); -+ if (wf.testFlag(Qt::ToolTip) -+ || wf.testFlag(Qt::WindowTransparentForInput)) -+ flags |= XDG_SURFACE_SET_TRANSIENT_FOR; -+ -+ set_transient_for(parent_wayland_window->object()); -+} -+ -+void QWaylandXdgSurface::setTitle(const QString & title) -+{ -+ return QtWayland::xdg_surface::set_title(title); -+} -+ -+void QWaylandXdgSurface::setAppId(const QString & appId) -+{ -+ return QtWayland::xdg_surface::set_app_id(appId); -+} -+ -+void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, -+ int32_t height) -+{ -+ m_window->configure(edges, width, height); -+} -+ -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h -new file mode 100644 -index 0000000..744d3f3 ---- /dev/null -+++ b/src/client/qwaylandxdgsurface_p.h -@@ -0,0 +1,105 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDXDGSURFACE_H -+#define QWAYLANDXDGSURFACE_H -+ -+#include <QtCore/QSize> -+ -+#include <wayland-client.h> -+ -+#include <QtWaylandClient/private/qwayland-xdg-shell.h> -+#include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurface : public QtWayland::xdg_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandXdgSurface(struct ::xdg_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandXdgSurface(); -+ -+ using QtWayland::xdg_surface::resize; -+ void resize(QWaylandInputDevice *inputDevice, enum resize_edge edges); -+ -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ -+ using QtWayland::xdg_surface::move; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString &title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+ bool isFullscreen() const { return m_fullscreen; } -+ bool isMaximized() const { return m_maximized; } -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ -+private: -+ QWaylandWindow *m_window; -+ bool m_maximized; -+ bool m_minimized; -+ bool m_fullscreen; -+ QSize m_size; -+ -+ void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -+ void xdg_surface_configure(uint32_t edges, -+ int32_t width, -+ int32_t height) Q_DECL_OVERRIDE; -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDXDGSURFACE_H --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch deleted file mode 100644 index 8f0425a76..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch +++ /dev/null @@ -1,772 +0,0 @@ -From c4219cca0febd7119e0bec776fdc2877b3448e0b Mon Sep 17 00:00:00 2001 -From: Philippe Coval <philippe.coval@open.eurogiciel.org> -Date: Tue, 10 Jun 2014 16:22:17 +0200 -Subject: [PATCH 19/21] xdg-shell: upgrade to support current version - (weston-1.5.0) - -The protocol file is a raw copy of - -Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.5.0 - -Task-number: QTBUG-38633/related -Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com> -Reviewed-by: Philippe Coval <rzr@gna.org> -Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/4bac130b97fbaa565aa9883eb302557ef0185d50 -Change-Id: I41ca2f89c09a8b6348ce2fbf6d59f44b4c81ffff ---- - src/3rdparty/protocol/xdg-shell.xml | 288 ++++++++++++++++++------------------ - src/client/client.pro | 2 + - src/client/qwaylanddisplay.cpp | 10 +- - src/client/qwaylanddisplay_p.h | 5 +- - src/client/qwaylandxdgshell.cpp | 77 ++++++++++ - src/client/qwaylandxdgshell_p.h | 73 +++++++++ - src/client/qwaylandxdgsurface.cpp | 60 ++++++-- - src/client/qwaylandxdgsurface_p.h | 11 +- - 8 files changed, 364 insertions(+), 162 deletions(-) - create mode 100644 src/client/qwaylandxdgshell.cpp - create mode 100644 src/client/qwaylandxdgshell_p.h - -diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml -index 4e5cff8..79a2831 100644 ---- a/src/3rdparty/protocol/xdg-shell.xml -+++ b/src/3rdparty/protocol/xdg-shell.xml -@@ -40,19 +40,22 @@ - - <enum name="version"> - <description summary="latest protocol version"> -- Use this enum to check the protocol version, and it will be updated -- automatically. -+ The 'current' member of this enum gives the version of the -+ protocol. Implementations can compare this to the version -+ they implement using static_assert to ensure the protocol and -+ implementation versions match. - </description> -- <entry name="current" value="1" summary="Always the latest version"/> -+ <entry name="current" value="3" summary="Always the latest version"/> - </enum> - - - <request name="use_unstable_version"> - <description summary="enable use of this unstable version"> -- Use this request in order to enable use of this interface. -- -- Understand and agree that one is using an unstable interface, -- that will likely change in the future, breaking the API. -+ Negotiate the unstable version of the interface. This -+ mechanism is in place to ensure client and server agree on the -+ unstable versions of the protocol that they speak or exit -+ cleanly if they don't agree. This request will go away once -+ the xdg-shell protocol is stable. - </description> - <arg name="version" type="int"/> - </request> -@@ -84,6 +87,28 @@ - <arg name="y" type="int"/> - <arg name="flags" type="uint"/> - </request> -+ -+ <event name="ping"> -+ <description summary="check if the client is alive"> -+ The ping event asks the client if it's still alive. Pass the -+ serial specified in the event back to the compositor by sending -+ a "pong" request back with the specified serial. -+ -+ Compositors can use this to determine if the client is still -+ alive. It's unspecified what will happen if the client doesn't -+ respond to the ping request, or in what timeframe. Clients should -+ try to respond in a reasonable amount of time. -+ </description> -+ <arg name="serial" type="uint" summary="pass this to the callback"/> -+ </event> -+ -+ <request name="pong"> -+ <description summary="respond to a ping event"> -+ A client must respond to a ping event with a pong request or -+ the client may be deemed unresponsive. -+ </description> -+ <arg name="serial" type="uint" summary="serial of the ping event"/> -+ </request> - </interface> - - <interface name="xdg_surface" version="1"> -@@ -124,6 +149,32 @@ - <arg name="parent" type="object" interface="wl_surface" allow-null="true"/> - </request> - -+ <request name="set_margin"> -+ <description summary="set the visible frame boundaries"> -+ This tells the compositor what the visible size of the window -+ should be, so it can use it to determine what borders to use for -+ constrainment and alignment. -+ -+ CSD often has invisible areas for decoration purposes, like drop -+ shadows. These "shadow" drawings need to be subtracted out of the -+ normal boundaries of the window when computing where to place -+ windows (e.g. to set this window so it's centered on top of another, -+ or to put it to the left or right of the screen.) -+ -+ This value should change as little as possible at runtime, to -+ prevent flicker. -+ -+ This value is also ignored when the window is maximized or -+ fullscreen, and assumed to be 0. -+ -+ If never called, this value is assumed to be 0. -+ </description> -+ <arg name="left_margin" type="int"/> -+ <arg name="right_margin" type="int"/> -+ <arg name="top_margin" type="int"/> -+ <arg name="bottom_margin" type="int"/> -+ </request> -+ - <request name="set_title"> - <description summary="set surface title"> - Set a short title for the surface. -@@ -150,22 +201,6 @@ - <arg name="app_id" type="string"/> - </request> - -- <request name="pong"> -- <description summary="respond to a ping event"> -- A client must respond to a ping event with a pong request or -- the client may be deemed unresponsive. -- </description> -- <arg name="serial" type="uint" summary="serial of the ping event"/> -- </request> -- -- <event name="ping"> -- <description summary="ping client"> -- Ping a client to check if it is receiving events and sending -- requests. A client is expected to reply with a pong request. -- </description> -- <arg name="serial" type="uint"/> -- </event> -- - <request name="move"> - <description summary="start an interactive move"> - Start a pointer-driven move of the surface. -@@ -217,12 +252,6 @@ - ignore it if it doesn't resize, pick a smaller size (to - satisfy aspect ratio or resize in steps of NxM pixels). - -- The edges parameter provides a hint about how the surface -- was resized. The client may use this information to decide -- how to adjust its content to the new size (e.g. a scrolling -- area might adjust its content position to leave the viewable -- content unmoved). Valid edge values are from resize_edge enum. -- - The client is free to dismiss all but the last configure - event it received. - -@@ -230,7 +259,6 @@ - in surface local coordinates. - </description> - -- <arg name="edges" type="uint"/> - <arg name="width" type="int"/> - <arg name="height" type="int"/> - </event> -@@ -250,128 +278,122 @@ - <arg name="output" type="object" interface="wl_output" allow-null="true"/> - </request> - -- <event name="request_set_fullscreen"> -- <description summary="server requests that the client set fullscreen"> -- Event sent from the compositor to the client requesting that the client -- goes to a fullscreen state. It's the client job to call set_fullscreen -- and really trigger the fullscreen state. -- </description> -- </event> -- -- <event name="request_unset_fullscreen"> -- <description summary="server requests that the client unset fullscreen"> -- Event sent from the compositor to the client requesting that the client -- leaves the fullscreen state. It's the client job to call -- unset_fullscreen and really leave the fullscreen state. -- </description> -- </event> -+ <enum name="state"> -+ <description summary="types of state on the surface"> -+ The different state values used on the surface. This is designed for -+ state values like maximized, fullscreen. It is paired with the -+ request_change_state event to ensure that both the client and the -+ compositor setting the state can be synchronized. - -- <request name="set_fullscreen"> -- <description summary="set the surface state as fullscreen"> -- Set the surface as fullscreen. -+ States set in this way are double-buffered. They will get applied on -+ the next commit. - -- After this request, the compositor should send a configure event -- informing the output size. -+ Desktop environments may extend this enum by taking up a range of -+ values and documenting the range they chose in this description. -+ They are not required to document the values for the range that they -+ chose. Ideally, any good extensions from a desktop environment should -+ make its way into standardization into this enum. - -- This request informs the compositor that the next attached buffer -- committed will be in a fullscreen state. The buffer size should be the -- same size as the size informed in the configure event, if the client -- doesn't want to leave any empty area. -+ The current reserved ranges are: - -- In other words: the next attached buffer after set_maximized is the new -- maximized buffer. And the surface will be positioned at the maximized -- position on commit. -- -- A simple way to synchronize and wait for the correct configure event is -- to use a wl_display.sync request right after the set_fullscreen -- request. When the sync callback returns, the last configure event -- received just before it will be the correct one, and should contain the -- right size for the surface to maximize. -- -- Setting one state won't unset another state. Use -- xdg_surface.unset_fullscreen for unsetting it. -+ 0x0000 - 0x0FFF: xdg-shell core values, documented below. -+ 0x1000 - 0x1FFF: GNOME - </description> -- </request> -+ <entry name="maximized" value="1" summary="the surface is maximized"> -+ A non-zero value indicates the surface is maximized. Otherwise, -+ the surface is unmaximized. -+ </entry> -+ <entry name="fullscreen" value="2" summary="the surface is fullscreen"> -+ A non-zero value indicates the surface is fullscreen. Otherwise, -+ the surface is not fullscreen. -+ </entry> -+ </enum> - -- <request name="unset_fullscreen"> -- <description summary="unset the surface state as fullscreen"> -- Unset the surface fullscreen state. -+ <request name="request_change_state"> -+ <description summary="client requests to change a surface's state"> -+ This asks the compositor to change the state. If the compositor wants -+ to change the state, it will send a change_state event with the same -+ state_type, value, and serial, and the event flow continues as if it -+ it was initiated by the compositor. - -- Same negotiation as set_fullscreen must be used. -+ If the compositor does not want to change the state, it will send a -+ change_state to the client with the old value of the state. - </description> -+ <arg name="state_type" type="uint" summary="the state to set"/> -+ <arg name="value" type="uint" summary="the value to change the state to"/> -+ <arg name="serial" type="uint" summary="an event serial"> -+ This serial is so the client can know which change_state event corresponds -+ to which request_change_state request it sent out. -+ </arg> - </request> - -- <event name="request_set_maximized"> -- <description summary="server requests that the client set maximized"> -- Event sent from the compositor to the client requesting that the client -- goes to a maximized state. It's the client job to call set_maximized -- and really trigger the maximized state. -+ <event name="change_state"> -+ <description summary="compositor wants to change a surface's state"> -+ This event tells the client to change a surface's state. The client -+ should respond with an ack_change_state request to the compositor to -+ guarantee that the compositor knows that the client has seen it. - </description> -- </event> - -- <event name="request_unset_maximized"> -- <description summary="server requests that the client unset maximized"> -- Event sent from the compositor to the client requesting that the client -- leaves the maximized state. It's the client job to call unset_maximized -- and really leave the maximized state. -- </description> -+ <arg name="state_type" type="uint" summary="the state to set"/> -+ <arg name="value" type="uint" summary="the value to change the state to"/> -+ <arg name="serial" type="uint" summary="a serial for the compositor's own tracking"/> - </event> - -- <request name="set_maximized"> -- <description summary="set the surface state as maximized"> -- Set the surface as maximized. -- -- After this request, the compositor will send a configure event -- informing the output size minus panel and other MW decorations. -- -- This request informs the compositor that the next attached buffer -- committed will be in a maximized state. The buffer size should be the -- same size as the size informed in the configure event, if the client -- doesn't want to leave any empty area. -+ <request name="ack_change_state"> -+ <description summary="ack a change_state event"> -+ When a change_state event is received, a client should then ack it -+ using the ack_change_state request to ensure that the compositor -+ knows the client has seen the event. - -- In other words: the next attached buffer after set_maximized is the new -- maximized buffer. And the surface will be positioned at the maximized -- position on commit. -+ By this point, the state is confirmed, and the next attach should -+ contain the buffer drawn for the new state value. - -- A simple way to synchronize and wait for the correct configure event is -- to use a wl_display.sync request right after the set_maximized request. -- When the sync callback returns, the last configure event received just -- before it will be the correct one, and should contain the right size -- for the surface to maximize. -- -- Setting one state won't unset another state. Use -- xdg_surface.unset_maximized for unsetting it. -+ The values here need to be the same as the values in the cooresponding -+ change_state event. - </description> -+ <arg name="state_type" type="uint" summary="the state to set"/> -+ <arg name="value" type="uint" summary="the value to change the state to"/> -+ <arg name="serial" type="uint" summary="a serial to pass to change_state"/> - </request> - -- <request name="unset_maximized"> -- <description summary="unset the surface state as maximized"> -- Unset the surface maximized state. -- -- Same negotiation as set_maximized must be used. -+ <request name="set_minimized"> -+ <description summary="minimize the surface"> -+ Minimize the surface. - </description> - </request> - -- <request name="set_minimized"> -- <description summary="set the surface state as minimized"> -- Set the surface minimized state. -- -- Setting one state won't unset another state. -+ <event name="activated"> -+ <description summary="surface was activated"> -+ The activated_set event is sent when this surface has been -+ activated, which means that the surface has user attention. -+ Window decorations should be updated accordingly. You should -+ not use this event for anything but the style of decorations -+ you display, use wl_keyboard.enter and wl_keyboard.leave for -+ determining keyboard focus. - </description> -- </request> -+ </event> - -- <event name="focused_set"> -- <description summary="surface was focused"> -- The focused_set event is sent when this surface has been -- activated. Window decorations should be updated accordingly. -+ <event name="deactivated"> -+ <description summary="surface was deactivated"> -+ The deactivate event is sent when this surface has been -+ deactivated, which means that the surface lost user attention. -+ Window decorations should be updated accordingly. You should -+ not use this event for anything but the style of decorations -+ you display, use wl_keyboard.enter and wl_keyboard.leave for -+ determining keyboard focus. - </description> - </event> - -- <event name="focused_unset"> -- <description summary="surface was unfocused"> -- The focused_unset event is sent when this surface has been -- deactivated, because another surface has been activated. Window -- decorations should be updated accordingly. -+ <event name="close"> -+ <description summary="surface wants to be closed"> -+ The close event is sent by the compositor when the user -+ wants the surface to be closed. This should be equivalent to -+ the user clicking the close button in client-side decorations, -+ if your application has any... -+ -+ This is only a request that the user intends to close your -+ window. The client may choose to ignore this request, or show -+ a dialog to ask the user to save their data... - </description> - </event> - </interface> -@@ -409,22 +431,6 @@ - </description> - </request> - -- <request name="pong"> -- <description summary="respond to a ping event"> -- A client must respond to a ping event with a pong request or -- the client may be deemed unresponsive. -- </description> -- <arg name="serial" type="uint" summary="serial of the ping event"/> -- </request> -- -- <event name="ping"> -- <description summary="ping client"> -- Ping a client to check if it is receiving events and sending -- requests. A client is expected to reply with a pong request. -- </description> -- <arg name="serial" type="uint"/> -- </event> -- - <event name="popup_done"> - <description summary="popup interaction is done"> - The popup_done event is sent out when a popup grab is broken, -diff --git a/src/client/client.pro b/src/client/client.pro -index 9ecf82f..73e3b7f 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -59,6 +59,7 @@ SOURCES += qwaylandintegration.cpp \ - qwaylanddatasource.cpp \ - qwaylandshellsurface.cpp \ - qwaylandwlshellsurface.cpp \ -+ qwaylandxdgshell.cpp \ - qwaylandxdgsurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ -@@ -89,6 +90,7 @@ HEADERS += qwaylandintegration_p.h \ - qwaylanddatasource_p.h \ - qwaylandshellsurface_p.h \ - qwaylandwlshellsurface_p.h \ -+ qwaylandxdgshell_p.h \ - qwaylandxdgsurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 7f953ad..2e25672 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -50,7 +50,7 @@ - #include "qwaylandclipboard_p.h" - #include "qwaylanddatadevicemanager_p.h" - #include "qwaylandhardwareintegration_p.h" -- -+#include "qwaylandxdgshell_p.h" - - #include "qwaylandwindowmanagerintegration_p.h" - -@@ -209,8 +209,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1)); - } else if (interface == QStringLiteral("xdg_shell") - && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { -- mShellXdg.reset(new QtWayland::xdg_shell(registry, id)); -- mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current); -+ mShellXdg.reset(new QWaylandXdgShell(registry,id)); - } else if (interface == QStringLiteral("wl_shell")){ - mShell.reset(new QtWayland::wl_shell(registry, id)); - } else if (interface == QStringLiteral("wl_seat")) { -@@ -275,4 +274,9 @@ void QWaylandDisplay::forceRoundTrip() - wl_display_roundtrip(mDisplay); - } - -+QtWayland::xdg_shell *QWaylandDisplay::shellXdg() -+{ -+ return mShellXdg.data(); -+} -+ - QT_END_NAMESPACE -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index cf5dfc2..f1b35a7 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -72,6 +72,7 @@ class QWaylandWindow; - class QWaylandEventThread; - class QWaylandIntegration; - class QWaylandHardwareIntegration; -+class QWaylandXdgShell; - - namespace QtWayland { - class qt_output_extension; -@@ -115,7 +116,7 @@ public: - QtWayland::wl_compositor *compositor() { return &mCompositor; } - - QtWayland::wl_shell *shell() { return mShell.data(); } -- QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); } -+ QtWayland::xdg_shell *shellXdg(); - - QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -171,7 +172,7 @@ private: - QThread *mEventThread; - QWaylandEventThread *mEventThreadObject; - QScopedPointer<QtWayland::wl_shell> mShell; -- QScopedPointer<QtWayland::xdg_shell> mShellXdg; -+ QScopedPointer<QWaylandXdgShell> mShellXdg; - QList<QPlatformScreen *> mScreens; - QList<QWaylandInputDevice *> mInputDevices; - QList<Listener> mRegistryListeners; -diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp -new file mode 100644 -index 0000000..eb9f91c ---- /dev/null -+++ b/src/client/qwaylandxdgshell.cpp -@@ -0,0 +1,77 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: <philippe.coval@eurogiciel.fr> -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandxdgshell_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include <QtCore/QDebug> -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandXdgShell::QWaylandXdgShell(struct ::xdg_shell *shell) -+ : QtWayland::xdg_shell(shell) -+{ -+} -+ -+QWaylandXdgShell::QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id) -+ : QtWayland::xdg_shell(registry, id) -+{ -+ use_unstable_version(QtWayland::xdg_shell::version_current); -+} -+ -+QWaylandXdgShell::~QWaylandXdgShell() -+{ -+ xdg_shell_destroy(object()); -+} -+ -+ -+void QWaylandXdgShell::xdg_shell_ping(uint32_t serial) -+{ -+ pong(serial); -+} -+ -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgshell_p.h b/src/client/qwaylandxdgshell_p.h -new file mode 100644 -index 0000000..6a396bd ---- /dev/null -+++ b/src/client/qwaylandxdgshell_p.h -@@ -0,0 +1,73 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: <philippe.coval@eurogiciel.fr> -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDXDGSHELL_H -+#define QWAYLANDXDGSHELL_H -+ -+#include <QtCore/QSize> -+ -+#include <wayland-client.h> -+ -+#include <QtWaylandClient/private/qwayland-xdg-shell.h> -+#include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShell : public QtWayland::xdg_shell -+{ -+public: -+ QWaylandXdgShell(struct ::xdg_shell *shell); -+ QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id); -+ -+ virtual ~QWaylandXdgShell(); -+ -+private: -+ void xdg_shell_ping(uint32_t serial) Q_DECL_OVERRIDE; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDXDGSHELL_H -diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp -index 1b8affa..5fb74d2 100644 ---- a/src/client/qwaylandxdgsurface.cpp -+++ b/src/client/qwaylandxdgsurface.cpp -@@ -87,23 +87,25 @@ void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice) - - void QWaylandXdgSurface::setMaximized() - { -- m_maximized = true; -- m_size = m_window->window()->geometry().size(); -- set_maximized(); -+ if (!m_maximized) -+ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, true, 0); - } - - void QWaylandXdgSurface::setFullscreen() - { -- m_fullscreen = true; -- m_size = m_window->window()->geometry().size(); -- set_fullscreen(); -+ if (!m_fullscreen) -+ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, true, 0); - } - - void QWaylandXdgSurface::setNormal() - { - if (m_fullscreen || m_maximized || m_minimized) { -- if (m_maximized) { unset_maximized(); } -- if (m_fullscreen) { unset_fullscreen(); } -+ if (m_maximized) { -+ request_change_state(XDG_SURFACE_STATE_MAXIMIZED, false, 0); -+ } -+ if (m_fullscreen) { -+ request_change_state(XDG_SURFACE_STATE_FULLSCREEN, false, 0); -+ } - - m_fullscreen = m_maximized = m_minimized = false; - setTopLevel(); -@@ -158,16 +160,48 @@ void QWaylandXdgSurface::setAppId(const QString & appId) - return QtWayland::xdg_surface::set_app_id(appId); - } - --void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial) -+void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height) - { -- pong(serial); -+ m_window->configure(0 , width, height); - } - --void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width, -- int32_t height) -+void QWaylandXdgSurface::xdg_surface_change_state(uint32_t state, -+ uint32_t value, -+ uint32_t serial) - { -- m_window->configure(edges, width, height); -+ -+ if (state == XDG_SURFACE_STATE_MAXIMIZED -+ || state == XDG_SURFACE_STATE_FULLSCREEN) { -+ if (value) { -+ m_size = m_window->window()->geometry().size(); -+ } else { -+ QMargins m = m_window->frameMargins(); -+ m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom()); -+ } -+ } -+ -+ switch (state) { -+ case XDG_SURFACE_STATE_MAXIMIZED: -+ m_maximized = value; -+ break; -+ case XDG_SURFACE_STATE_FULLSCREEN: -+ m_fullscreen = value; -+ break; -+ } -+ -+ xdg_surface_ack_change_state(object(), state, value, serial); - } - -+void QWaylandXdgSurface::xdg_surface_activated() -+{ -+} -+ -+void QWaylandXdgSurface::xdg_surface_deactivated() -+{ -+} -+ -+void QWaylandXdgSurface::xdg_surface_close() -+{ -+} - - QT_END_NAMESPACE -diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h -index 744d3f3..d2a154e 100644 ---- a/src/client/qwaylandxdgsurface_p.h -+++ b/src/client/qwaylandxdgsurface_p.h -@@ -93,10 +93,15 @@ private: - bool m_fullscreen; - QSize m_size; - -- void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE; -- void xdg_surface_configure(uint32_t edges, -- int32_t width, -+ void xdg_surface_configure(int32_t width, - int32_t height) Q_DECL_OVERRIDE; -+ void xdg_surface_change_state(uint32_t state, -+ uint32_t value, -+ uint32_t serial) Q_DECL_OVERRIDE; -+ void xdg_surface_activated() Q_DECL_OVERRIDE; -+ void xdg_surface_deactivated() Q_DECL_OVERRIDE; -+ void xdg_surface_close() Q_DECL_OVERRIDE; -+ - friend class QWaylandWindow; - }; - --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch deleted file mode 100644 index 413459fb6..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch +++ /dev/null @@ -1,128 +0,0 @@ -From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> -Date: Sun, 7 Sep 2014 08:19:30 +0200 -Subject: [PATCH 20/21] Add IVI-Shell protocol file version patch v6 - -Source : http://lists.freedesktop.org/archives/wayland-devel/2014-June/015617.html - -This file comes from the last proposed definition of the IVI-Shell protocol, -and will need to be refreshed on protocol update. - -Task-number: QTBUG-XXXXX/part/1of2 - -Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> ---- - src/3rdparty/protocol/ivi-application.xml | 101 ++++++++++++++++++++++++++++++ - 1 file changed, 101 insertions(+) - create mode 100644 src/3rdparty/protocol/ivi-application.xml - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -new file mode 100644 -index 0000000..833fd38 ---- /dev/null -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -0,0 +1,101 @@ -+<?xml version="1.0" encoding="UTF-8"?> -+<protocol name="ivi_application"> -+ -+ <copyright> -+ Copyright (C) 2013 DENSO CORPORATION -+ Copyright (c) 2013 BMW Car IT GmbH -+ -+ Permission is hereby granted, free of charge, to any person obtaining a copy -+ of this software and associated documentation files (the "Software"), to deal -+ in the Software without restriction, including without limitation the rights -+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+ copies of the Software, and to permit persons to whom the Software is -+ furnished to do so, subject to the following conditions: -+ -+ The above copyright notice and this permission notice shall be included in -+ all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -+ THE SOFTWARE. -+ </copyright> -+ -+ <interface name="ivi_surface" version="1"> -+ <description summary="application interface to surface in ivi compositor"/> -+ -+ <request name="destroy" type="destructor"> -+ <description summary="destroy ivi_surface"> -+ This removes link from ivi_id to wl_surface and destroys ivi_surface. -+ </description> -+ </request> -+ -+ <event name="visibility"> -+ <description summary="visibility of surface in ivi compositor has changed"> -+ The new visibility state is provided in argument visibility. -+ If visibility is 0, the surface has become invisible. -+ If visibility is not 0, the surface has become visible. -+ </description> -+ <arg name="visibility" type="int"/> -+ </event> -+ -+ <enum name="warning_code"> -+ <description summary="possible warning codes returned by ivi compositor"> -+ These define all possible warning codes returned by ivi compositor on server-side warnings. -+ invalid_wl_surface: -+ - wl_surface already has a another role. -+ - wl_surface is destroyed before the ivi_surface is destroyed. -+ ivi_id_in_use: ivi_id is already assigned by another application. -+ </description> -+ <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/> -+ <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/> -+ </enum> -+ -+ <event name="warning"> -+ <description summary="server-side warning detected"> -+ The ivi compositor encountered warning while processing a request by this -+ application. The warning is defined by argument warning_code and optional -+ warning_text. If the warning is detected, client shall destroy the ivi_surface -+ object. -+ -+ When a warning event is sent, the compositor turns the ivi_surface object inert. -+ The ivi_surface will not deliver further events, all requests on it are ignored -+ except 'destroy', and the association to the ivi_id is removed. The client -+ should destroy the ivi_surface object. If an inert ivi_surface object is used as -+ an argument to any other object's request, that request will [produce a fatal -+ error / produce a warning / be ignored]. -+ </description> -+ <arg name="warning_code" type="int"/> -+ <arg name="warning_text" type="string" allow-null="true"/> -+ </event> -+ -+ </interface> -+ -+ <interface name="ivi_application" version="1"> -+ <description summary="create ivi-style surfaces"> -+ This interface is implemented by servers that provide desktop-style user interfaces. -+ It allows clients to associate a ivi_surface with a basic surface. -+ </description> -+ -+ <request name="surface_create"> -+ <description summary="create ivi_surface with numeric ID in ivi compositor"> -+ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in -+ ivi compositor. These ivi_ids are defined as unique in the system to identify -+ it inside of ivi compositor. The ivi compositor implements business logic how to -+ set properties of the surface with ivi_id according to status of the system. -+ E.g. a unique ID for Car Navigation application is used for implementing special -+ logic of the application about where it shall be located. -+ if a wl_surface which already has another role is set, the server regards this as -+ error and disconnects the client. -+ </description> -+ <arg name="ivi_id" type="uint"/> -+ <arg name="surface" type="object" interface="wl_surface"/> -+ <arg name="id" type="new_id" interface="ivi_surface"/> -+ </request> -+ -+ </interface> -+ -+</protocol> --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch deleted file mode 100644 index 8723def26..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch +++ /dev/null @@ -1,539 +0,0 @@ -From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> -Date: Mon, 8 Sep 2014 11:38:01 +0200 -Subject: [PATCH 21/21] Implement initial IVI-Shell support - -IVI-Shell provides a shell interface for Weston, which maps the GENIVI API (http://www.genivi.org) for In-Vehicle Infotainment. - -This patch enables detecting the IVI-Shell interface at runtime, and creating compatible surfaces if found. - -Task-number: QTBUG-XXXXX/part/2of2 - -Change-Id: I1f6c11bf56b727a54fb48faab9c076b61d635440 -Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> ---- - src/client/client.pro | 5 ++ - src/client/qwaylanddisplay.cpp | 9 ++++ - src/client/qwaylanddisplay_p.h | 5 ++ - src/client/qwaylandivishell.cpp | 69 +++++++++++++++++++++++++ - src/client/qwaylandivishell_p.h | 70 +++++++++++++++++++++++++ - src/client/qwaylandivisurface.cpp | 105 ++++++++++++++++++++++++++++++++++++++ - src/client/qwaylandivisurface_p.h | 90 ++++++++++++++++++++++++++++++++ - src/client/qwaylandwindow.cpp | 8 ++- - 8 files changed, 360 insertions(+), 1 deletion(-) - create mode 100644 src/client/qwaylandivishell.cpp - create mode 100644 src/client/qwaylandivishell_p.h - create mode 100644 src/client/qwaylandivisurface.cpp - create mode 100644 src/client/qwaylandivisurface_p.h - -diff --git a/src/client/client.pro b/src/client/client.pro -index 73e3b7f..adb526d 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -42,6 +42,7 @@ WAYLANDCLIENTSOURCES += \ - ../extensions/windowmanager.xml \ - ../3rdparty/protocol/text.xml \ - ../3rdparty/protocol/xdg-shell.xml \ -+ ../3rdparty/protocol/ivi-application.xml \ - - SOURCES += qwaylandintegration.cpp \ - qwaylandnativeinterface.cpp \ -@@ -61,6 +62,8 @@ SOURCES += qwaylandintegration.cpp \ - qwaylandwlshellsurface.cpp \ - qwaylandxdgshell.cpp \ - qwaylandxdgsurface.cpp \ -+ qwaylandivishell.cpp \ -+ qwaylandivisurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ - qwaylandsubsurface.cpp \ -@@ -92,6 +95,8 @@ HEADERS += qwaylandintegration_p.h \ - qwaylandwlshellsurface_p.h \ - qwaylandxdgshell_p.h \ - qwaylandxdgsurface_p.h \ -+ qwaylandivishell_p.h \ -+ qwaylandivisurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ - qwaylandsubsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 2e25672..2a93db7 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -51,6 +51,7 @@ - #include "qwaylanddatadevicemanager_p.h" - #include "qwaylandhardwareintegration_p.h" - #include "qwaylandxdgshell_p.h" -+#include "qwaylandivishell_p.h" - - #include "qwaylandwindowmanagerintegration_p.h" - -@@ -62,6 +63,7 @@ - - #include <QtWaylandClient/private/qwayland-text.h> - #include <QtWaylandClient/private/qwayland-xdg-shell.h> -+#include <QtWaylandClient/private/qwayland-ivi-application.h> - - #include <QtCore/QAbstractEventDispatcher> - #include <QtGui/private/qguiapplication_p.h> -@@ -207,6 +209,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mCompositor.init(registry, id); - } else if (interface == QStringLiteral("wl_shm")) { - mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1)); -+ } else if (interface == QStringLiteral("ivi_application")) { -+ mShellIvi.reset(new QWaylandIviShell(registry,id)); - } else if (interface == QStringLiteral("xdg_shell") - && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { - mShellXdg.reset(new QWaylandXdgShell(registry,id)); -@@ -279,4 +283,9 @@ QtWayland::xdg_shell *QWaylandDisplay::shellXdg() - return mShellXdg.data(); - } - -+QtWayland::ivi_application *QWaylandDisplay::shellIvi() -+{ -+ return mShellIvi.data(); -+} -+ - QT_END_NAMESPACE -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index f1b35a7..b9c686c 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -52,6 +52,7 @@ - #include <QtWaylandClient/private/qwayland-wayland.h> - #include <QtWaylandClient/private/qwaylandclientexport_p.h> - #include <QtWaylandClient/private/qwayland-xdg-shell.h> -+#include <QtWaylandClient/private/qwayland-ivi-application.h> - - struct wl_cursor_image; - -@@ -72,6 +73,7 @@ class QWaylandWindow; - class QWaylandEventThread; - class QWaylandIntegration; - class QWaylandHardwareIntegration; -+class QWaylandIviShell; - class QWaylandXdgShell; - - namespace QtWayland { -@@ -81,6 +83,7 @@ namespace QtWayland { - class qt_surface_extension; - class wl_text_input_manager; - class xdg_shell; -+ class ivi_application; - } - - typedef void (*RegistryListener)(void *data, -@@ -117,6 +120,7 @@ public: - - QtWayland::wl_shell *shell() { return mShell.data(); } - QtWayland::xdg_shell *shellXdg(); -+ QtWayland::ivi_application *shellIvi(); - - QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -173,6 +177,7 @@ private: - QWaylandEventThread *mEventThreadObject; - QScopedPointer<QtWayland::wl_shell> mShell; - QScopedPointer<QWaylandXdgShell> mShellXdg; -+ QScopedPointer<QWaylandIviShell> mShellIvi; - QList<QPlatformScreen *> mScreens; - QList<QWaylandInputDevice *> mInputDevices; - QList<Listener> mRegistryListeners; -diff --git a/src/client/qwaylandivishell.cpp b/src/client/qwaylandivishell.cpp -new file mode 100644 -index 0000000..9d63d0d ---- /dev/null -+++ b/src/client/qwaylandivishell.cpp -@@ -0,0 +1,69 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: <manuel.bachmann@open.eurogiciel.org> -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivishell_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include <QtCore/QDebug> -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviShell::QWaylandIviShell(struct ::ivi_application *shell) -+ : QtWayland::ivi_application(shell) -+{ -+} -+ -+QWaylandIviShell::QWaylandIviShell(struct ::wl_registry *registry, uint32_t id) -+ : QtWayland::ivi_application(registry, id) -+{ -+} -+ -+QWaylandIviShell::~QWaylandIviShell() -+{ -+ ivi_application_destroy(object()); -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivishell_p.h b/src/client/qwaylandivishell_p.h -new file mode 100644 -index 0000000..f9f6983 ---- /dev/null -+++ b/src/client/qwaylandivishell_p.h -@@ -0,0 +1,70 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: <manuel.bachmann@open.eurogiciel.org> -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISHELL_H -+#define QWAYLANDIVISHELL_H -+ -+#include <QtCore/QSize> -+ -+#include <wayland-client.h> -+ -+#include <QtWaylandClient/private/qwayland-ivi-application.h> -+#include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShell : public QtWayland::ivi_application -+{ -+public: -+ QWaylandIviShell(struct ::ivi_application *shell); -+ QWaylandIviShell(struct ::wl_registry *registry, uint32_t id); -+ -+ virtual ~QWaylandIviShell(); -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISHELL_H -diff --git a/src/client/qwaylandivisurface.cpp b/src/client/qwaylandivisurface.cpp -new file mode 100644 -index 0000000..a12309e ---- /dev/null -+++ b/src/client/qwaylandivisurface.cpp -@@ -0,0 +1,105 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivisurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include <QtCore/QDebug> -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) -+ : QtWayland::ivi_surface(ivi_surface) -+ , m_window(window) -+{ -+} -+ -+QWaylandIviSurface::~QWaylandIviSurface() -+{ -+ ivi_surface_destroy(object()); -+} -+ -+void QWaylandIviSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+} -+ -+void QWaylandIviSurface::move(QWaylandInputDevice *inputDevice) -+{ -+} -+ -+void QWaylandIviSurface::setMaximized() -+{ -+} -+ -+void QWaylandIviSurface::setFullscreen() -+{ -+} -+ -+void QWaylandIviSurface::setNormal() -+{ -+} -+ -+void QWaylandIviSurface::setMinimized() -+{ -+} -+ -+void QWaylandIviSurface::setTopLevel() -+{ -+} -+ -+void QWaylandIviSurface::updateTransientParent(QWindow *parent) -+{ -+} -+ -+void QWaylandIviSurface::setTitle(const QString & title) -+{ -+} -+ -+void QWaylandIviSurface::setAppId(const QString & appId) -+{ -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivisurface_p.h b/src/client/qwaylandivisurface_p.h -new file mode 100644 -index 0000000..c6a7ce6 ---- /dev/null -+++ b/src/client/qwaylandivisurface_p.h -@@ -0,0 +1,90 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISURFACE_H -+#define QWAYLANDIVISURFACE_H -+ -+#include <QtCore/QSize> -+ -+#include <wayland-client.h> -+ -+#include <QtWaylandClient/private/qwayland-ivi-application.h> -+#include <QtWaylandClient/private/qwaylandclientexport_p.h> -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+class QWaylandExtendedSurface; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandIviSurface(); -+ -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString &title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ -+private: -+ QWaylandWindow *m_window; -+ -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISURFACE_H -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 3fb3a49..45a58f2 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -39,6 +39,8 @@ - ** - ****************************************************************************/ - -+#include <unistd.h> -+ - #include "qwaylandwindow_p.h" - - #include "qwaylandbuffer_p.h" -@@ -48,10 +50,12 @@ - #include "qwaylandshellsurface_p.h" - #include "qwaylandwlshellsurface_p.h" - #include "qwaylandxdgsurface_p.h" -+#include "qwaylandivisurface_p.h" - #include "qwaylandextendedsurface_p.h" - #include "qwaylandsubsurface_p.h" - #include "qwaylanddecoration_p.h" - #include "qwaylandwindowmanagerintegration_p.h" -+#define IVI_SURFACE_ID 8000 - - #include <QtCore/QFileInfo> - #include <QtGui/QWindow> -@@ -95,7 +99,9 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - mWindowId = id++; - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { -- if (mDisplay->shellXdg()) { -+ if (mDisplay->shellIvi()) { -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); - } --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch deleted file mode 100644 index 984ae8132..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/tests/auto/compositor/compositor/compositor.pro b/tests/auto/compositor/compositor/compositor.pro -index 2919fa4..d9acac3 100644 ---- a/tests/auto/compositor/compositor/compositor.pro -+++ b/tests/auto/compositor/compositor/compositor.pro -@@ -7,9 +7,6 @@ QT += core-private gui-private waylandcompositor waylandcompositor-private - - QMAKE_USE += wayland-client wayland-server - --qtConfig(xkbcommon-evdev): \ -- QMAKE_USE += xkbcommon_evdev -- - WAYLANDCLIENTSOURCES += \ - ../../../../src/3rdparty/protocol/xdg-shell.xml \ - ../../../../src/3rdparty/protocol/ivi-application.xml \ diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch deleted file mode 100644 index bca61b5db..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9617c349a212d5407087daf4f4a2386bce94ecc1 Mon Sep 17 00:00:00 2001 -From: Philippe Coval <philippe.coval@open.eurogiciel.org> -Date: Thu, 12 Jun 2014 11:55:29 +0200 -Subject: [PATCH 18/21] packaging: enable xdg-shell at runtime - -Change-Id: Iffbae496f1e09c8fa44a28d4eb515678e3bbb297 -Bug-Tizen: TIVI-3113/part -Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org> ---- - packaging/qt5-qtwayland.spec | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/packaging/qt5-qtwayland.spec b/packaging/qt5-qtwayland.spec -index cba18e2..ff32185 100644 ---- a/packaging/qt5-qtwayland.spec -+++ b/packaging/qt5-qtwayland.spec -@@ -97,6 +97,11 @@ rm -rf %{buildroot} - - %post - /sbin/ldconfig -+ -+f="/etc/profile.d/qt.sh" -+grep QT_WAYLAND_USE_XDG_SHELL $f \ -+ || echo "QT_WAYLAND_USE_XDG_SHELL='defined'; export QT_WAYLAND_USE_XDG_SHELL" >> $f -+ - %postun - /sbin/ldconfig - --- -1.9.1 - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend deleted file mode 100644 index 2f6072acd..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend +++ /dev/null @@ -1,26 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -# QT_MODULE_BRANCH = "5.4" - -# TODO: -# These patches for IVI-SHELL are tempolary disabled because of issues. And new -# patches are proposed. -# -# file://0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch \ -# file://0021-Implement-initial-IVI-Shell-support.patch \ -# file://0001-protocol-update-3rd-party-ivi-application-protocol.patch \ -# file://0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch \ -# -# The xdg-shell merged into upstream, so we don't need these patch anymore. -# But xdg-shell doesn't work well in current AGL Distro because of -# mismatch of protocol versions between server(weston) and client(Qt Apps). -# -# file://0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch \ -# file://0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch \ -# file://0019-xdg-shell-upgrade-to-support-current-version-weston-.patch \ -# - -SRC_URI_append = "\ - file://0010-Added-manifest-file-according-to-smack-3-domain-mode.patch \ - " - diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend deleted file mode 100644 index 0420578e1..000000000 --- a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -PACKAGECONFIG = "gstreamer qtlocation qtmultimedia qtsensors" diff --git a/meta-agl-profile-graphical/LICENSE b/meta-agl-profile-graphical/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-graphical/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical/LICENSE.GPL-2.0-only b/meta-agl-profile-graphical/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-graphical/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical/LICENSE.MIT b/meta-agl-profile-graphical/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-graphical/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-graphical/classes/agl-graphical.bbclass b/meta-agl-profile-graphical/classes/agl-graphical.bbclass deleted file mode 100644 index 65106db18..000000000 --- a/meta-agl-profile-graphical/classes/agl-graphical.bbclass +++ /dev/null @@ -1,6 +0,0 @@ -WESTONUSER ??= "display" -WESTONGROUP ??= "display" -WESTONARGS ?= "--idle-time=0 --tty=7" -WESTONLAUNCHARGS ??= "--tty /dev/tty7 --user ${WESTONUSER}" -DISPLAY_XDG_RUNTIME_DIR ??= "/run/platform/${WESTONUSER}" - diff --git a/meta-agl-profile-graphical/conf/layer.conf b/meta-agl-profile-graphical/conf/layer.conf deleted file mode 100644 index 0a6efea74..000000000 --- a/meta-agl-profile-graphical/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofilegraphical" -BBFILE_PATTERN_aglprofilegraphical = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofilegraphical = "70" - -LAYERSERIES_COMPAT_aglprofilegraphical = "dunfell" diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb deleted file mode 100644 index 7d2661bc0..000000000 --- a/meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "Homescreen binding and client library for application" -DESCRIPTION = "agl-service-homescreen is the binding library" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-homescreen" -SECTION = "HMI" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -DEPENDS = "dbus glib-2.0 af-binder json-c" - -inherit cmake aglwgt - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-homescreen;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" -S = "${WORKDIR}/git" diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb deleted file mode 100644 index 4f1757c7d..000000000 --- a/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Mediaplayer Service Binding" -DESCRIPTION = "AGL Mediaplayer Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediaplayer" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediaplayer;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c gstreamer1.0 gstreamer1.0-plugins-base" -RDEPENDS_${PN} = "agl-service-mediascanner agl-service-bluetooth gstreamer1.0-plugins-bad-waylandsink" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb deleted file mode 100644 index a46ce128c..000000000 --- a/meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Radio Service Binding" -DESCRIPTION = "AGL Radio Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-radio" -SECTION = "apps" -LICENSE = "Apache-2.0 & GPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ - file://LICENSE.GPL-2.0-only;md5=751419260aa954499f7abaabaa882bbe" - -PV = "1.0+git${SRCPV}" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-radio;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -S = "${WORKDIR}/git" - -# build-time dependencies -DEPENDS = "rtl-sdr glib-2.0 gstreamer1.0 libusb-compat" - -inherit cmake aglwgt pkgconfig diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb deleted file mode 100644 index 6c5a18107..000000000 --- a/meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Task Manager Service Binding" -DESCRIPTION = "AGL Task Manager Service Binding" -HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-taskmanager" -SECTION = "apps" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-taskmanager;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "${AGL_APP_REVISION}" - -PV = "1.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "json-c procps" - -inherit cmake aglwgt pkgconfig - diff --git a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug b/meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug deleted file mode 100644 index fee9573b7..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug +++ /dev/null @@ -1,8 +0,0 @@ -#You can select log level of HMI framework -#1 ERROR -#2 WARNING -#3 NOTICE -#4 INFO -#5 DEBUG -#If you want to output debug log about hmi-framework, please uncomment the following. -#USE_HMI_DEBUG=5 diff --git a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb b/meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb deleted file mode 100644 index 27fb60d66..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -DESCRIPTION = "Configurations for HMI framework" - -SECTION = "HMI" -LICENSE = "Apache-2.0" - -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = " \ - file://hmi-debug \ -" - -FILES_${PN} = " \ - ${sysconfdir}/afm/unit.env.d \ -" - -do_install() { - install -d ${D}${sysconfdir}/afm/unit.env.d - install -m 644 ${WORKDIR}/hmi-debug ${D}${sysconfdir}/afm/unit.env.d -} diff --git a/meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb b/meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb deleted file mode 100644 index da511c8a1..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "AGL Home Screen Library" -DESCRIPTION = "libhomescreen" -HOMEPAGE = "http://docs.automotivelinux.org" -LICENSE = "Apache-2.0" -SECTION = "libs" - -BBCLASSEXTEND = " nativesdk" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" - -DEPENDS = "af-binder json-c" - -inherit cmake - -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libhomescreen.git;protocol=https;branch=${AGL_BRANCH}" -SRCREV = "0d65d54ba63508c0ef545d02e94d5702f9c8ecb3" -S = "${WORKDIR}/git" - -RDEPENDS_${PN} = "agl-service-homescreen" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch deleted file mode 100644 index 7ea0b6e9b..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 48977cb77410247df547063d9d7bcd381fb13cde Mon Sep 17 00:00:00 2001 -From: Michael Teyfel <mteyfel@de.adit-jv.com> -Date: Fri, 12 Oct 2018 17:12:24 +0200 -Subject: [PATCH 1/3] Added ivi-id-agent to CMake - -Reworked for wayland-ivi-extension 2.2.0 by Scott Murray. - -Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com> -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7d0044a..988fc89 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -40,6 +40,7 @@ add_subdirectory(ivi-layermanagement-api/test) - add_subdirectory(ivi-layermanagement-examples) - add_subdirectory(ivi-layermanagement-api/ilmInput) - add_subdirectory(ivi-input-modules/ivi-input-controller) -+add_subdirectory(ivi-id-agent-modules/ivi-id-agent) - - - #============================================================================================= diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch deleted file mode 100644 index 9f1ab47b7..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch +++ /dev/null @@ -1,21 +0,0 @@ -LayerManagerControl: add error exit status - -Tweak to add a non-zero exit status on errors. This is useful for -scripting, and allows writing a simple loop to detect Weston readiness. - -Upstream-Status: Pending - -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp b/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp -index 8ee0546..210e21e 100644 ---- a/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp -+++ b/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp -@@ -45,6 +45,7 @@ int main(int argc, char* argv[]) - if (CommandSuccess != interpreter.interpretCommand(userCommand)) - { - cerr << "Interpreter error: " << interpreter.getLastError() << endl; -+ return 1; - } - - return 0; diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch deleted file mode 100644 index 0fe2abb35..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch +++ /dev/null @@ -1,530 +0,0 @@ -From 42fc715a430068cdb4484e2cb119418da8ac4e6f Mon Sep 17 00:00:00 2001 -From: Michael Teyfel <mteyfel@de.adit-jv.com> -Date: Fri, 12 Oct 2018 16:46:57 +0200 -Subject: [PATCH 2/3] ivi-id-agent: added ivi-id-agent - -This is a reference implementation of an ivi-id-agent plugin. It -creates surface-ids for desktop-surfaces depending on the configuration -provided in "weston.ini". For more please refer to the reference -implementation in this commit. - -The only public interface available is the "id_agent_module_init" -function. It is responsible for initialization of structs and reading -the configuration. - -In the reference "weston.ini" two types of configurations can be found: - -[desktop-app] is used to configure a particular application. Therefore -the desired surface-id must be provided. Moreover "app-title" is the -title that is provided by the desktop application (xdg-protocol). -"app-id" behaves accordingly. Although both parameters can be set, it -is not mandatory. Finally at least one has to be set. - -[desktop-app-default] enables the id-agent to generate generic -surface-ids for unconfigured applications, e.g. for development. This -tag is optional. To generate the id an interval starting from -"default-surface-id" to "default-surface-id-max" is used. The id is -incremented until the interval is exceeded. - -In the function "get_id" a surface-id is assigned by means of the -configuration. It can be adjusted, if another behavior is desired. -In this plugin the parameters, that are described above, are evaluated. - -To use these patches please also apply the dedicated patches for -weston: https://github.com/mtey/weston/tree/xdg_support_ivi_id_agent -Since libweston-desktop is used to introduce desktop-surface support, -xdg-protocol is supported. - -Reworked for wayland-ivi-extension 2.2.0 by Scott Murray. - -Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com> -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt -new file mode 100644 -index 0000000..7354a7e ---- /dev/null -+++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt -@@ -0,0 +1,69 @@ -+############################################################################### -+# -+# Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH -+# -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+# See the License for the specific language governing permissions and -+# limitations under the License. -+# -+############################################################################### -+ -+cmake_minimum_required (VERSION 2.6) -+ -+project(ivi-id-agent) -+ -+find_package(PkgConfig REQUIRED) -+pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED) -+pkg_check_modules(WESTON weston>=5.0.0 REQUIRED) -+pkg_check_modules(PIXMAN pixman-1 REQUIRED) -+pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-8 REQUIRED) -+ -+find_package(Threads REQUIRED) -+ -+include_directories( -+ src -+ ${WAYLAND_SERVER_INCLUDE_DIRS} -+ ${WESTON_INCLUDE_DIRS} -+ ${PIXMAN_INCLUDE_DIRS} -+) -+ -+link_directories( -+ ${WAYLAND_SERVER_LIBRARY_DIRS} -+ ${PIXMAN_LIBRARY_DIRS} -+) -+ -+ -+add_library(${PROJECT_NAME} MODULE -+ src/ivi-id-agent.c -+) -+ -+set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") -+ -+add_dependencies(${PROJECT_NAME} -+ ${WAYLAND_SERVER_LIBRARIES} -+ ${PIXMAN_LIBRARIES} -+) -+ -+set(LIBS -+ ${LIBS} -+ ${WAYLAND_SERVER_LIBRARIES} -+ ${LIBWESTON_DESKTOP_LIBRARIES} -+) -+ -+set(CMAKE_C_LDFLAGS "-module -avoid-version") -+ -+target_link_libraries(${PROJECT_NAME} ${LIBS}) -+ -+install ( -+ TARGETS ${PROJECT_NAME} -+ LIBRARY DESTINATION lib${LIB_SUFFIX}/weston -+) -diff --git a/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c -new file mode 100644 -index 0000000..9bc115d ---- /dev/null -+++ b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c -@@ -0,0 +1,381 @@ -+/* -+ * Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and -+ * its documentation for any purpose is hereby granted without fee, provided -+ * that the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of the copyright holders not be used in -+ * advertising or publicity pertaining to distribution of the software -+ * without specific, written prior permission. The copyright holders make -+ * no representations about the suitability of this software for any -+ * purpose. It is provided "as is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include <stdlib.h> -+#include <stdio.h> -+#include <string.h> -+#include <limits.h> -+ -+#include <weston.h> -+#include <libweston-desktop/libweston-desktop.h> -+#include "libweston/config-parser.h" -+#include <weston/ivi-layout-export.h> -+ -+#ifndef INVALID_ID -+#define INVALID_ID 0xFFFFFFFF -+#endif -+ -+struct db_elem -+{ -+ struct wl_list link; -+ uint32_t surface_id; -+ char *cfg_app_id; -+ char *cfg_title; -+ struct ivi_layout_surface *layout_surface; -+}; -+ -+struct ivi_id_agent -+{ -+ uint32_t default_behavior_set; -+ uint32_t default_surface_id; -+ uint32_t default_surface_id_max; -+ struct wl_list app_list; -+ struct weston_compositor *compositor; -+ const struct ivi_layout_interface *interface; -+ -+ struct wl_listener desktop_surface_configured; -+ struct wl_listener destroy_listener; -+ struct wl_listener surface_removed; -+}; -+ -+static int32_t -+check_config_parameter(char *cfg_val, char *val) -+{ -+ if (cfg_val == NULL) -+ return IVI_SUCCEEDED; -+ else if (val == NULL || strcmp(cfg_val, val) != 0) -+ return IVI_FAILED; -+ -+ return IVI_SUCCEEDED; -+} -+ -+static int32_t -+get_id_from_config(struct ivi_id_agent *ida, struct ivi_layout_surface -+ *layout_surface) { -+ struct db_elem *db_elem; -+ char *temp_app_id = NULL; -+ char *temp_title = NULL; -+ int ret = IVI_FAILED; -+ -+ struct weston_surface *weston_surface = -+ ida->interface->surface_get_weston_surface(layout_surface); -+ -+ /* Get app id and title */ -+ struct weston_desktop_surface *wds = weston_surface_get_desktop_surface( -+ weston_surface); -+ -+ if (weston_desktop_surface_get_app_id(wds) != NULL) -+ temp_app_id = strdup(weston_desktop_surface_get_app_id(wds)); -+ -+ if (weston_desktop_surface_get_title(wds) != NULL) -+ temp_title = strdup(weston_desktop_surface_get_title(wds)); -+ -+ /* -+ * Check for every config parameter to be fulfilled. This part must be -+ * extended, if additional attributes are desired to be checked. -+ */ -+ wl_list_for_each(db_elem, &ida->app_list, link) -+ { -+ if (check_config_parameter(db_elem->cfg_app_id, temp_app_id) == 0) { -+ if (check_config_parameter(db_elem->cfg_title, temp_title) == 0) { -+ /* Found configuration for application. */ -+ int res = ida->interface->surface_set_id(layout_surface, -+ db_elem->surface_id); -+ if (res) -+ continue; -+ -+ db_elem->layout_surface = layout_surface; -+ ret = IVI_SUCCEEDED; -+ -+ break; -+ } -+ } -+ } -+ -+ free(temp_app_id); -+ free(temp_title); -+ -+ return ret; -+} -+ -+/* -+ * This function generates the id of a surface in regard to the desired -+ * parameters. For implementation of different behavior in id generation please -+ * adjust this function. -+ * In this implementation the app_id and/or title of the application is used for -+ * identification. It is also possible to use the pid, uid or gid for example. -+ */ -+static int32_t -+get_id(struct ivi_id_agent *ida, struct ivi_layout_surface *layout_surface) -+{ -+ if (get_id_from_config(ida, layout_surface) == IVI_SUCCEEDED) -+ return IVI_SUCCEEDED; -+ -+ /* No default layer available */ -+ if (ida->default_behavior_set == 0) { -+ weston_log("ivi-id-agent: Could not find configuration for application\n"); -+ goto ivi_failed; -+ -+ /* Default behavior for unknown applications */ -+ } else if (ida->default_surface_id < ida->default_surface_id_max) { -+ weston_log("ivi-id-agent: No configuration for application adding to " -+ "default layer\n"); -+ -+ /* -+ * Check if ivi-shell application already created an application with -+ * desired surface_id -+ */ -+ struct ivi_layout_surface *temp_layout_surf = -+ ida->interface->get_surface_from_id( -+ ida->default_surface_id); -+ if ((temp_layout_surf != NULL) && (temp_layout_surf != layout_surface)) { -+ weston_log("ivi-id-agent: surface_id already used by an ivi-shell " -+ "application\n"); -+ goto ivi_failed; -+ } -+ -+ ida->interface->surface_set_id(layout_surface, -+ ida->default_surface_id); -+ ida->default_surface_id++; -+ -+ } else { -+ weston_log("ivi-id-agent: Interval for default surface_id generation " -+ "exceeded\n"); -+ goto ivi_failed; -+ } -+ -+ return IVI_SUCCEEDED; -+ -+ivi_failed: -+ return IVI_FAILED; -+} -+ -+static void -+desktop_surface_event_configure(struct wl_listener *listener, -+ void *data) -+{ -+ struct ivi_id_agent *ida = wl_container_of(listener, ida, -+ desktop_surface_configured); -+ -+ struct ivi_layout_surface *layout_surface = -+ (struct ivi_layout_surface *) data; -+ -+ if (get_id(ida, layout_surface) == IVI_FAILED) -+ weston_log("ivi-id-agent: Could not create surface_id for application\n"); -+} -+ -+static void -+surface_event_remove(struct wl_listener *listener, void *data) { -+ struct ivi_id_agent *ida = wl_container_of(listener, ida, -+ surface_removed); -+ struct ivi_layout_surface *layout_surface = -+ (struct ivi_layout_surface *) data; -+ struct db_elem *db_elem = NULL; -+ -+ wl_list_for_each(db_elem, &ida->app_list, link) -+ { -+ if(db_elem->layout_surface == layout_surface) { -+ db_elem->layout_surface = NULL; -+ break; -+ } -+ } -+} -+ -+static int32_t deinit(struct ivi_id_agent *ida); -+ -+static void -+id_agent_module_deinit(struct wl_listener *listener, void *data) { -+ (void)data; -+ struct ivi_id_agent *ida = wl_container_of(listener, ida, destroy_listener); -+ -+ deinit(ida); -+} -+ -+static int32_t -+check_config(struct db_elem *curr_db_elem, struct ivi_id_agent *ida) -+{ -+ struct db_elem *db_elem; -+ -+ if (ida->default_surface_id <= curr_db_elem->surface_id -+ && curr_db_elem->surface_id <= ida->default_surface_id_max) { -+ weston_log("ivi-id-agent: surface_id: %d in default id interval " -+ "[%d, %d] (CONFIG ERROR)\n", curr_db_elem->surface_id, -+ ida->default_surface_id, ida->default_surface_id_max); -+ goto ivi_failed; -+ } -+ -+ wl_list_for_each(db_elem, &ida->app_list, link) -+ { -+ if(curr_db_elem == db_elem) -+ continue; -+ -+ if (db_elem->surface_id == curr_db_elem->surface_id) { -+ weston_log("ivi-id-agent: Duplicate surface_id: %d (CONFIG ERROR)\n", -+ curr_db_elem->surface_id); -+ goto ivi_failed; -+ } -+ } -+ -+ return IVI_SUCCEEDED; -+ -+ivi_failed: -+ return IVI_FAILED; -+} -+ -+static int32_t -+read_config(struct ivi_id_agent *ida) -+{ -+ struct weston_config *config = NULL; -+ struct weston_config_section *section = NULL; -+ const char *name = NULL; -+ -+ config = wet_get_config(ida->compositor); -+ if (!config) -+ goto ivi_failed; -+ -+ section = weston_config_get_section(config, "desktop-app-default", NULL, -+ NULL); -+ -+ if (section) { -+ weston_log("ivi-id-agent: Default behavior for unknown applications is " -+ "set\n"); -+ ida->default_behavior_set = 1; -+ -+ weston_config_section_get_uint(section, "default-surface-id", -+ &ida->default_surface_id, INVALID_ID); -+ weston_config_section_get_uint(section, "default-surface-id-max", -+ &ida->default_surface_id_max, INVALID_ID); -+ -+ if (ida->default_surface_id == INVALID_ID || -+ ida->default_surface_id_max == INVALID_ID) { -+ weston_log("ivi-id-agent: Missing configuration for default " -+ "behavior\n"); -+ ida->default_behavior_set = 0; -+ } -+ } else { -+ ida->default_behavior_set = 0; -+ } -+ -+ section = NULL; -+ while (weston_config_next_section(config, §ion, &name)) { -+ struct db_elem *db_elem = NULL; -+ -+ if (strcmp(name, "desktop-app") != 0) -+ continue; -+ -+ db_elem = calloc(1, sizeof *db_elem); -+ if (db_elem == NULL) { -+ weston_log("ivi-id-agent: No memory to allocate\n"); -+ goto ivi_failed; -+ } -+ -+ wl_list_insert(&ida->app_list, &db_elem->link); -+ -+ weston_config_section_get_uint(section, "surface-id", -+ &db_elem->surface_id, INVALID_ID); -+ -+ if (db_elem->surface_id == INVALID_ID) { -+ weston_log("ivi-id-agent: surface-id is not set in configuration\n"); -+ goto ivi_failed; -+ } -+ -+ weston_config_section_get_string(section, "app-id", -+ &db_elem->cfg_app_id, NULL); -+ weston_config_section_get_string(section, "app-title", -+ &db_elem->cfg_title, NULL); -+ -+ if (db_elem->cfg_app_id == NULL && db_elem->cfg_title == NULL) { -+ weston_log("ivi-id-agent: Every parameter is NULL in app " -+ "configuration\n"); -+ goto ivi_failed; -+ } -+ -+ if (check_config(db_elem, ida) == IVI_FAILED) { -+ weston_log("ivi-id-agent: No valid config found, deinit...\n"); -+ goto ivi_failed; -+ } -+ } -+ -+ if(ida->default_behavior_set == 0 && wl_list_empty(&ida->app_list)) { -+ weston_log("ivi-id-agent: No valid config found, deinit...\n"); -+ goto ivi_failed; -+ } -+ -+ return IVI_SUCCEEDED; -+ -+ivi_failed: -+ return IVI_FAILED; -+} -+ -+WL_EXPORT int32_t -+id_agent_module_init(struct weston_compositor *compositor, -+ const struct ivi_layout_interface *interface) -+{ -+ struct ivi_id_agent *ida = NULL; -+ -+ ida = calloc(1, sizeof *ida); -+ if (ida == NULL) { -+ weston_log("failed to allocate ivi_id_agent\n"); -+ goto ivi_failed; -+ } -+ -+ ida->compositor = compositor; -+ ida->interface = interface; -+ ida->desktop_surface_configured.notify = desktop_surface_event_configure; -+ ida->destroy_listener.notify = id_agent_module_deinit; -+ ida->surface_removed.notify = surface_event_remove; -+ -+ wl_signal_add(&compositor->destroy_signal, &ida->destroy_listener); -+ ida->interface->add_listener_configure_desktop_surface( -+ &ida->desktop_surface_configured); -+ interface->add_listener_remove_surface(&ida->surface_removed); -+ -+ wl_list_init(&ida->app_list); -+ if(read_config(ida) != 0) { -+ weston_log("ivi-id-agent: Read config failed\n"); -+ deinit(ida); -+ goto ivi_failed; -+ } -+ -+ return IVI_SUCCEEDED; -+ -+ivi_failed: -+ return IVI_FAILED; -+} -+ -+static int32_t -+deinit(struct ivi_id_agent *ida) -+{ -+ struct db_elem *db_elem; -+ wl_list_for_each(db_elem, &ida->app_list, link) { -+ free(db_elem->cfg_app_id); -+ free(db_elem->cfg_title); -+ free(db_elem); -+ } -+ -+ wl_list_remove(&ida->desktop_surface_configured.link); -+ wl_list_remove(&ida->destroy_listener.link); -+ wl_list_remove(&ida->surface_removed.link); -+ free(ida); -+ -+ return IVI_SUCCEEDED; -+} -diff --git a/ivi-id-agent-modules/ivi-id-agent/weston.ini.in b/ivi-id-agent-modules/ivi-id-agent/weston.ini.in -new file mode 100644 -index 0000000..48a196c ---- /dev/null -+++ b/ivi-id-agent-modules/ivi-id-agent/weston.ini.in -@@ -0,0 +1,20 @@ -+[core] -+shell=ivi-shell.so -+require-input=false -+ -+[ivi-shell] -+ivi-module=ivi-controller.so -+ivi-input-module=ivi-input-controller.so -+ivi-id-agent-module=ivi-id-agent.so -+ -+[desktop-app] -+surface-id=111 -+app-title=Flower -+ -+[desktop-app] -+surface-id=251 -+app-title=Flower -+ -+[desktop-app-default] -+default-surface-id=2000000 -+default-surface-id-max=2001000 diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch deleted file mode 100644 index 8985879b0..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 5fed5c51ca8c1574804362bfdea4930c16457d34 Mon Sep 17 00:00:00 2001 -From: Michael Teyfel <mteyfel@de.adit-jv.com> -Date: Fri, 12 Oct 2018 16:57:24 +0200 -Subject: [PATCH 3/3] ivi-controller: load id-agent module - -Reworked for wayland-ivi-extension 2.2.0 by Scott Murray. - -Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com> -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c -index 8faec2a..8fa51f4 100644 ---- a/weston-ivi-shell/src/ivi-controller.c -+++ b/weston-ivi-shell/src/ivi-controller.c -@@ -2154,6 +2154,41 @@ load_input_module(struct ivishell *shell) - return 0; - } - -+static int load_id_agent_module(struct ivishell *shell) -+{ -+ struct weston_config *config = wet_get_config(shell->compositor); -+ struct weston_config_section *section; -+ char *id_agent_module = NULL; -+ -+ int (*id_agent_module_init)(struct weston_compositor *compositor, -+ const struct ivi_layout_interface *interface); -+ -+ section = weston_config_get_section(config, "ivi-shell", NULL, NULL); -+ -+ if (weston_config_section_get_string(section, "ivi-id-agent-module", -+ &id_agent_module, NULL) < 0) { -+ /* input events are handled by weston's default grabs */ -+ weston_log("ivi-controller: No ivi-id-agent-module set\n"); -+ return 0; -+ } -+ -+ id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init"); -+ if (!id_agent_module_init) { -+ free(id_agent_module); -+ return -1; -+ } -+ -+ if (id_agent_module_init(shell->compositor, shell->interface) != 0) { -+ weston_log("ivi-controller: Initialization of id-agent module failed\n"); -+ free(id_agent_module); -+ return -1; -+ } -+ -+ free(id_agent_module); -+ -+ return 0; -+} -+ - static void - launch_client_process(void *data) - { -@@ -2221,6 +2256,10 @@ wet_module_init(struct weston_compositor *compositor, - shell->destroy_listener.notify = ivi_shell_destroy; - wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener); - -+ if (load_id_agent_module(shell) < 0) { -+ weston_log("ivi-controller: id-agent module not loaded\n"); -+ } -+ - if (shell->bkgnd_surface_id && shell->ivi_client_name) { - loop = wl_display_get_event_loop(compositor->wl_display); - wl_event_loop_add_idle(loop, launch_client_process, shell); diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch deleted file mode 100644 index 05d1cc238..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/ivi-layermanagement-api/ilmCommon/include/ilm_types.h b/ivi-layermanagement-api/ilmCommon/include/ilm_types.h -index a88f2b0..12a2017 100644 ---- a/ivi-layermanagement-api/ilmCommon/include/ilm_types.h -+++ b/ivi-layermanagement-api/ilmCommon/include/ilm_types.h -@@ -245,6 +245,7 @@ typedef enum - ILM_NOTIFICATION_CONTENT_AVAILABLE = ILM_BIT(6), - ILM_NOTIFICATION_CONTENT_REMOVED = ILM_BIT(7), - ILM_NOTIFICATION_CONFIGURED = ILM_BIT(8), -+ ILM_NOTIFICATION_FOCUS = ILM_BIT(9), - ILM_NOTIFICATION_ALL = 0xffff - } t_ilm_notification_mask; - -diff --git a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c -index a912e50..5166839 100644 ---- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c -+++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c -@@ -819,6 +819,12 @@ input_listener_input_focus(void *data, - surf_ctx->prop.focus |= device; - else - surf_ctx->prop.focus &= ~device; -+ -+ if (surf_ctx->notification != NULL) { -+ surf_ctx->notification(surf_ctx->id_surface, -+ &surf_ctx->prop, -+ ILM_NOTIFICATION_FOCUS); -+ } - } - } - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch deleted file mode 100644 index 21028d58a..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch +++ /dev/null @@ -1,22 +0,0 @@ -Disable EGLWLMockNavigation example build - -The EGLWLMockNavigation example code has build issues on TI platforms. -To avoid needing to patch it just for those platforms, just disable -building it since there are no known users inside AGL. - -Upstream-Status: Inappropriate [disable feature] - -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - -diff --git a/ivi-layermanagement-examples/CMakeLists.txt b/ivi-layermanagement-examples/CMakeLists.txt -index 1eab8e9..48bdffd 100644 ---- a/ivi-layermanagement-examples/CMakeLists.txt -+++ b/ivi-layermanagement-examples/CMakeLists.txt -@@ -24,7 +24,6 @@ project (ivi-layermanagement-examples) - # cmake configuration - #=========================================================================================================== - add_subdirectory(LayerManagerControl) --add_subdirectory(EGLWLMockNavigation) - add_subdirectory(EGLWLInputEventExample) - add_subdirectory(layer-add-surfaces) - add_subdirectory(multi-touch-viewer) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch deleted file mode 100644 index dddbfd370..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -index a0bfc48..257a1dc 100644 ---- a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -+++ b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c -@@ -31,7 +31,7 @@ - #include <fcntl.h> - #include <unistd.h> - --#include "plugin-registry.h" -+#include <libweston/plugin-registry.h> - #include "ilm_types.h" - - #include "ivi-input-server-protocol.h" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch deleted file mode 100644 index 86b448be1..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3610fa9..8b4614d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -34,7 +34,7 @@ add_subdirectory(ivi-layermanagement-api/ilmCommon) - add_subdirectory(ivi-layermanagement-api/ilmClient) - add_subdirectory(ivi-layermanagement-api/ilmControl) - add_subdirectory(ivi-layermanagement-api/test) --add_subdirectory(ivi-layermanagement-examples) -+#add_subdirectory(ivi-layermanagement-examples) - - if(WITH_ILM_INPUT) - add_subdirectory(ivi-input-api/ilmInput) diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb deleted file mode 100644 index 68fc694a8..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb +++ /dev/null @@ -1,36 +0,0 @@ -SUMMARY = "Wayland IVI Extension" -DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension" -HOMEPAGE = "http://projects.genivi.org/wayland-ivi-extension" -BUGTRACKER = "http://bugs.genivi.org/enter_bug.cgi?product=Wayland%20IVI%20Extension" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=1f1a56bb2dadf5f2be8eb342acf4ed79" - -SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=http \ - file://0001-Added-ivi-id-agent-to-CMake.patch \ - file://0002-ivi-id-agent-added-ivi-id-agent.patch \ - file://0003-ivi-controller-load-id-agent-module.patch \ - file://0002-add-LayerManagerControl-error-status.patch \ - file://0004-ivi-ilmcontrol-added-focus-notification.patch \ - file://0005-disable-EGLWLMockNavigation-example-build.patch \ - file://0006-fix-plugin-registry-include.patch \ -" -SRC_URI_append_wandboard = " file://wandboard_fix_build.patch" -SRCREV = "736fb654ac81230cf4f9e51a5772d3a02d7639bf" - -PV = "2.2.0+git${SRCPV}" -S = "${WORKDIR}/git" - -DEPENDS = "weston virtual/libgles2 pixman wayland-native" - -FILESEXTRAPATHS_prepend := ":${THISDIR}/wayland-ivi-extension:" - -inherit cmake - -EXTRA_OECMAKE := "-DWITH_ILM_INPUT=1" - -FILES_${PN} += "${libdir}/weston/*" -FILES_${PN} += "${datadir}/wayland-protocols/stable/ivi-application/*" - -FILES_${PN}-dbg += "${libdir}/weston/.debug/*" - -EXTRA_OECMAKE += "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend deleted file mode 100644 index b3fecec22..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend +++ /dev/null @@ -1,83 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -inherit agl-graphical - -AGL_DEFAULT_WESTONSTART ??= "/usr/bin/agl-compositor --config ${sysconfdir}/xdg/weston/weston.ini" - -WESTONSTART ??= "${AGL_DEFAULT_WESTONSTART} ${WESTONARGS}" -WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/compositor.log", "",d)}" - -# Systemd name of DRM device to have weston/agl-compositor startup depend -# upon, if required. Currently only x86-64 seems to need a dependency to -# avoid failures due to racing with i915 driver init on e.g. UpSquared. -# It seems safer for now to only apply it there rather than doing a blanket -# default everywhere that might then need to be over-ridden for vendor BSPs. -WESTON_DRM_DEVICE ?= "" - -WIFILES = " \ - file://weston.conf.in \ - file://weston-dep.conf.in \ - file://tmpfiles.conf.in \ - file://zz-dri.rules.in \ - file://zz-input.rules.in \ - file://zz-tty.rules.in \ -" - -WIFILES_append_imx = " \ - file://zz-dri-imx.rules.in \ -" - -SRC_URI_append = " ${WIFILES}" - -do_install_append() { - # Remove upstream weston.ini to avoid conflict with weston-ini-conf package - rm -f ${D}${sysconfdir}/xdg/weston/weston.ini - - # Remove upstream weston udev rules just to be safe - rm -f ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules - - # Process ".in" files - files=$(echo ${WIFILES} | sed s,file://,,g) - for f in ${files}; do - g=${f%.in} - if [ "${f}" != "${g}" ]; then - sed -e "s,@WESTONUSER@,${WESTONUSER},g" \ - -e "s,@WESTONGROUP@,${WESTONGROUP},g" \ - -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \ - -e "s,@WESTONSTART@,${WESTONSTART},g" \ - -e "s,@WESTON_DRM_DEVICE@,${WESTON_DRM_DEVICE},g" \ - ${WORKDIR}/${f} > ${WORKDIR}/${g} - fi - done - - # Install weston drop-in - install -d ${D}${systemd_system_unitdir}/weston@.service.d - install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston@.service.d/weston-init.conf - - # Install weston DRM device dependency drop-in if required - if [ -n "${WESTON_DRM_DEVICE}" ]; then - install -m 0644 ${WORKDIR}/weston-dep.conf ${D}/${systemd_system_unitdir}/weston@.service.d/ - fi - - # Install tmpfiles drop-in - install -d ${D}${libdir}/tmpfiles.d - install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/weston-init.conf - - # Install udev rules - install -d ${D}${sysconfdir}/udev/rules.d - for f in ${files}; do - g=${f%.in} - h=${g%.rules} - if [ "${g}" != "${h}" ]; then - install -m644 ${WORKDIR}/${g} ${D}${sysconfdir}/udev/rules.d - fi - done -} - -FILES_${PN} += " \ - ${libdir}/tmpfiles.d/ \ - ${systemd_system_unitdir}/weston@.service.d/ \ -" - -SYSTEMD_AUTO_ENABLE = "enable" - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in deleted file mode 100644 index c4b302faf..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in +++ /dev/null @@ -1,6 +0,0 @@ -# This file is distributed to create weston XDG_RUNTIME_DIR (/run/deamon/@WESTONUSER@) -# -# See tmpfiles.d(5) for details - -d /run/platform/ 0775 root root - -d /run/platform/@WESTONUSER@ 0770 @WESTONUSER@ @WESTONGROUP@ - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in deleted file mode 100644 index 2b8102096..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in +++ /dev/null @@ -1,3 +0,0 @@ -[Unit] -Requires=@WESTON_DRM_DEVICE@ -After=@WESTON_DRM_DEVICE@ diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in deleted file mode 100644 index 9c3df052d..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in +++ /dev/null @@ -1,12 +0,0 @@ -[Service] -Type=notify -Environment="XDG_RUNTIME_DIR=@XDG_RUNTIME_DIR@" -# Note that clearing PAMName (thus not having PAMName=login) disables -# logind support for the session, which allows setting XDG_RUNTIME_DIR -# to something other than /run/user/% (as is done above). -# Without systemd-logind support, weston needs to be patched to allow -# its direct launcher to work for non-root users in this scenario. -PAMName= -ExecStart= -ExecStart=@WESTONSTART@ -SmackProcessLabel=System::Weston diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in deleted file mode 100644 index 585db6be8..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in +++ /dev/null @@ -1,2 +0,0 @@ -SUBSYSTEM=="gpu_class", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*" - diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in deleted file mode 100644 index 51c68c303..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="drm", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in deleted file mode 100644 index fb3e677f4..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in deleted file mode 100644 index e5ce4b553..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="tty", KERNEL=="tty7", OWNER="@WESTONUSER@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready deleted file mode 100644 index c7cba3043..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2018, Konsulko Group -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# -# Simple script to check if Weston+IVI shell is ready by calling -# LayerManagerControl, optionally waiting for a specified timeout. -# - -usage="Usage: weston-ready [-t timeout]" -timeout=0 - -function info() { echo "$@" >&2; } - -if [ $# -eq 2 ]; then - if [ $1 = "-t" ]; then - timeout=$(($2 * 10)) - else - echo $usage - exit 1 - fi -fi - -info "using timeout $timeout" - -time=0 -rc=1 -while true; do - if [ $time -gt $timeout ]; then - info "Timeout reached" - break - elif LayerManagerControl get screens >/dev/null 2>&1; then - info "Weston is now ready" - rc=0 - break - fi - info "waiting..." - if [ $timeout -gt 0 ]; then - usleep 500000 - fi - time=$(($time + 5)) -done -exit $rc diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service deleted file mode 100644 index 82490fef4..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Wait for Weston readiness -Requires=weston@display.service -After=weston@display.service - -[Service] -SupplementaryGroups=display -Environment="XDG_RUNTIME_DIR=/run/platform/display" -ExecStart=/usr/bin/weston-ready -t 10 -Type=oneshot diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb deleted file mode 100644 index a3d0bb248..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "Weston readiness checker" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -inherit systemd - -SRC_URI = "file://weston-ready \ - file://weston-ready.service \ -" - -do_install() { - install -D -m 0755 ${WORKDIR}/weston-ready ${D}${bindir}/weston-ready - - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -D -m 0644 ${WORKDIR}/weston-ready.service ${D}${systemd_system_unitdir}/weston-ready.service - fi -} - -SYSTEMD_SERVICE_${PN} = "weston-ready.service" - -RDEPENDS_${PN} += "weston bash" diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend deleted file mode 100644 index d681aa133..000000000 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend +++ /dev/null @@ -1,26 +0,0 @@ -FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" - -SRC_URI_append = "\ - file://0001-Allow-regular-users-to-launch-Weston_7.0.0.patch \ - file://0001-libweston-Expose-weston_output_damage-in-libweston.patch \ - file://0001-libweston-Migrate-weston_seat_init-release-to-public.patch \ - file://0005-correctly-tear-down-drm-backend.patch \ - file://smack-weston \ - " - -EXTRA_OEMESON_append = " -Denable-user-start=true" - -# Workaround for incorrect upstream definition -PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base" -PACKAGECONFIG_append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting', ' remoting', '', d)}" - -do_install_append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'smack', 'true', 'false', d)}; then - # Install SMACK rules - install -D -m 0644 ${WORKDIR}/smack-weston ${D}${sysconfdir}/smack/accesses.d/weston - fi -} - -FILES_${PN} += "\ - ${sysconfdir}/smack/accesses.d/* \ -" diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch deleted file mode 100644 index 443e7db8b..000000000 --- a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 03e502084633838badfcc2b91a1aca1651c18544 Mon Sep 17 00:00:00 2001 -From: Marius Vlad <marius.vlad@collabora.com> -Date: Wed, 24 Jun 2020 19:44:35 +0300 -Subject: [PATCH] gst/wayland/: Install wayland header from gstwayland library - -Necessary for cluster-receiver to pass out the wl_surface. - -Bug-AGL: SPEC-3382 - -Signed-off-by: Marius Vlad <marius.vlad@collabora.com> ---- - gst-libs/gst/wayland/meson.build | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/gst-libs/gst/wayland/meson.build b/gst-libs/gst/wayland/meson.build -index b1ede41f1..8957381d2 100644 ---- a/gst-libs/gst/wayland/meson.build -+++ b/gst-libs/gst/wayland/meson.build -@@ -21,4 +21,6 @@ if use_wayland - gstwayland_dep = declare_dependency(link_with : gstwayland, - include_directories : [libsinc], - dependencies : [gst_dep, gstvideo_dep]) -+ -+ install_headers('wayland.h', subdir: 'gst/wayland') - endif --- -2.26.2 - diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend deleted file mode 100644 index a74fb623d..000000000 --- a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -SRC_URI_append=" file://0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch" diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend deleted file mode 100644 index 86a181fbb..000000000 --- a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -# libv4l2 is useful for making more efficient use of cameras via v4l2src. -PACKAGECONFIG_append = " libv4l2" diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend deleted file mode 100644 index 4a98a233c..000000000 --- a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -RDEPENDS_${PN}_append_ulcb = "\ - ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-multimedia-kernel-modules','',d)} \ - ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-multimedia-libs','',d)} \ - ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-gstreamer1.0-plugins','',d)} \ -" diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb deleted file mode 100644 index e587ab21c..000000000 --- a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "The minimal set of packages for Connectivity Subsystem" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-graphical-services \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} = "\ - ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', 'agl-service-mediaplayer', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', 'agl-service-radio', '', d)} \ - " diff --git a/meta-agl-profile-hud/LICENSE b/meta-agl-profile-hud/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-hud/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-hud/LICENSE.GPL-2.0-only b/meta-agl-profile-hud/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-hud/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-hud/LICENSE.MIT b/meta-agl-profile-hud/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-hud/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-hud/conf/layer.conf b/meta-agl-profile-hud/conf/layer.conf deleted file mode 100644 index f8f18cdc9..000000000 --- a/meta-agl-profile-hud/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofilehud" -BBFILE_PATTERN_aglprofilehud = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofilehud = "70" - -LAYERSERIES_COMPAT_aglprofilehud = "dunfell" diff --git a/meta-agl-profile-telematics/LICENSE b/meta-agl-profile-telematics/LICENSE deleted file mode 100644 index e8758f89c..000000000 --- a/meta-agl-profile-telematics/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Different components of the AGL layers are under different licenses (a mix -of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further -details of the individual licenses. - -All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar) -is MIT licensed unless otherwise stated. -Source code included in tree for individual recipes (e.g. patches) are under -the LICENSE stated in the associated recipe (.bb file) unless otherwise stated. - -License information for any other files (scripts) is either explicitly stated -or defaults to GPL version 2 only. - -Individual files can contain the following style tags instead of the full -license text to identify their license: - - SPDX-License-Identifier: GPL-2.0-only - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-telematics/LICENSE.GPL-2.0-only b/meta-agl-profile-telematics/LICENSE.GPL-2.0-only deleted file mode 100644 index 5db3c0a21..000000000 --- a/meta-agl-profile-telematics/LICENSE.GPL-2.0-only +++ /dev/null @@ -1,288 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: GPL-2.0-only - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-telematics/LICENSE.MIT b/meta-agl-profile-telematics/LICENSE.MIT deleted file mode 100644 index a6919eb7e..000000000 --- a/meta-agl-profile-telematics/LICENSE.MIT +++ /dev/null @@ -1,25 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: MIT - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/meta-agl-profile-telematics/conf/layer.conf b/meta-agl-profile-telematics/conf/layer.conf deleted file mode 100644 index f9ef2e3bf..000000000 --- a/meta-agl-profile-telematics/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "aglprofiletelematics" -BBFILE_PATTERN_aglprofiletelematics = "^${LAYERDIR}/" -BBFILE_PRIORITY_aglprofiletelematics = "70" - -LAYERSERIES_COMPAT_aglprofiletelematics = "dunfell" diff --git a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb b/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb deleted file mode 100644 index ad6ef9888..000000000 --- a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "A basic telematics image" - -require agl-image-telematics.inc - -LICENSE = "MIT" - -IMAGE_INSTALL_append = "\ - profile-telematics \ - " diff --git a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc b/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc deleted file mode 100644 index 3e951550e..000000000 --- a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc +++ /dev/null @@ -1,5 +0,0 @@ -require recipes-platform/images/agl-image-boot.inc - -inherit features_check - -REQUIRED_DISTRO_FEATURES = "3g" diff --git a/meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb b/meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb deleted file mode 100644 index 66fc0f765..000000000 --- a/meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "The middleware for AGL telematics profile" -DESCRIPTION = "The set of packages required for AGL Telematics Distribution" -LICENSE = "MIT" - -inherit packagegroup - -PACKAGES = "\ - packagegroup-agl-profile-telematics \ - profile-telematics \ - " - -ALLOW_EMPTY_${PN} = "1" - -RDEPENDS_${PN} += "\ - packagegroup-agl-image-boot \ - packagegroup-agl-core-security \ - ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client','',d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "3g", "libqmi", "", d)} \ - agl-login-manager \ - agl-service-can-low-level \ - agl-service-network \ - can-utils \ -" - -RDEPENDS_profile-telematics = "${PN}" diff --git a/meta-agl.md b/meta-agl.md index 6c3427cd5..565eff5a7 100755 --- a/meta-agl.md +++ b/meta-agl.md @@ -7,9 +7,6 @@ You use this layer as the minimal core on which to build AGL profiles. **NOTE:** The `meta-agl` layer does not include a reference UI. The reference UI is included as part of the [`meta-agl-demo`](./meta-agl-demo.html) layer. - Furthermore, `meta-agl` does not include additional components, such - as security, which are part of the - `meta-agl-extra` layer. ## Sub-Layers @@ -17,59 +14,45 @@ The `meta-agl` layer itself contains many sub-layers and files. Following is a "tree" look at the layer: ``` -. -├── docs -├── meta-agl -├── meta-agl-bsp -├── meta-agl-distro -├── meta-agl-profile-cluster -├── meta-agl-profile-cluster-qt5 -├── meta-agl-profile-core -├── meta-agl-profile-graphical -├── meta-agl-profile-graphical-html5 -├── meta-agl-profile-graphical-qt5 -├── meta-agl-profile-hud -├── meta-agl-profile-telematics -├── meta-app-framework -├── meta-netboot -├── meta-security -├── README-AGL.md -├── README.md -├── scripts -├── templates +|-- LICENSE +|-- LICENSE.GPL-2.0-only +|-- LICENSE.MIT +|-- README-AGL.md +|-- README.md -> meta-agl.md +|-- agl-layers-overview.md +|-- docs +|-- meta-agl-bsp +|-- meta-agl-core +|-- meta-agl-core-test +|-- meta-agl-ic +|-- meta-agl-ivi +|-- meta-agl.md +|-- meta-app-framework +|-- meta-netboot +|-- meta-pipewire +|-- scripts +`-- templates ``` This list provides some overview information on the files and sub-layers in `meta-agl`: +* LICENSE* : licenses of the various components. +* README* : RTFM +* agl-layers-overview.md: references to the various layers that make up AGL * `docs`: Contains files that support AGL documentation. -* `meta-agl`: Contains layer configuration for the `meta-agl` layer. * `meta-agl-bsp`: Contains adaptations for recipes and required packages to boot an AGL distribution on targeted hardware and emulation (i.e. QEMU). -* `meta-agl-distro`: Contains distro configuration and supporting scripts. -* `meta-agl-profile-cluster`: The middleware for the AGL cluster profile. - The set of packages required for AGL Cluster Distribution. - Profiles include support for Wayland images. -* `meta-agl-profile-cluster-qt5`: The middleware for the AGL Qt5-based cluster profile. - The set of packages required for AGL Qt5-based Cluster Distribution. - Profiles include support for Wayland images with Qt5. -* `meta-agl-profile-core`: Configuration and recipes for the AGL core profiles. -* `meta-agl-profile-graphical`: Configuration and recipes supporting graphical user - interfaces. -* `meta-agl-profile-graphical-html5`: Configuration and recipes supporting profiles - with HTML user interface support. -* `meta-agl-profile-graphical-qt5`: Configuration and recipes supporting profiles - with Qt5-based user interface support. -* `meta-agl-profile-hud`: Configuration and recipes supporting profiles with - Head-Up-Display (HUD) support. -* `meta-agl-profile-telematics`: Configuration and recipes supporting profiles with - telematics support. +* `meta-agl-core`: This is the core layer with essential recieps and the distro. +* `meta-agl-core-test`: recipes supporting qa images (separate layer due to external dependencies) +* `meta-agl-ic`: Instrument Cluster platform +* `meta-agl-ivi`: IVI platform * `meta-app-framework`: Configuration and recipes supporting the AGL Application Framework. * `meta-netboot`: Contains recipes and configuration adjustments to allow network boot through network block device (NBD) since network file system (NFS) does not support security labels. -* `meta-security`: Configuration and recipes supporting security applications. +* `meta-pipewire`: Configuration and recipes supporting pipewire as audio manager * `scripts`: AGL development setup and support scripts. * `templates`: Base, feature, and machine templates used in the AGL development environment. @@ -80,41 +63,40 @@ This section describes the AGL [packagegroup](https://yoctoproject.org/docs/2.4.4/dev-manual/dev-manual.html#usingpoky-extend-customimage-customtasks) design: -* packagegroup-agl-image-minimal +### core non-ui packagegroups: +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-devel.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb - packagegroup-agl-core-automotive.bb - packagegroup-agl-core-connectivity.bb - packagegroup-agl-core-graphics.bb - packagegroup-agl-core-kernel.bb - packagegroup-agl-core-multimedia.bb - packagegroup-agl-core-navi-lbs.bb - packagegroup-agl-core-os-commonlibs.bb - packagegroup-agl-core-security.bb - packagegroup-agl-core-speech-services.bb +### graphical subsystem +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb - The previous list of Packagegroups are used to create the `agl-image-minimal` image, - which is a small image just capable of allowing a device to boot. +### image-related packagegroups +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb +meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb - Subsystem should maintain packagegroup-agl-core-[subsystem].bb which should - hold sufficient packages to build `agl-image-minimal`. +### QA/Test related packagegroups +meta-agl-core-test/recipes-test/packagegroups +meta-agl-core-test/recipes-test/packagegroups/packagegroup-agl-test.bb -* packagegroup-agl-image-ivi +## Images - packagegroup-agl-ivi-automotive.bb - packagegroup-agl-ivi-connectivity.bb - packagegroup-agl-ivi-graphics.bb - packagegroup-agl-ivi-kernel.bb - packagegroup-agl-ivi-multimedia.bb - packagegroup-agl-ivi-navi-lbs.bb - packagegroup-agl-ivi-os-commonlibs.bb - packagegroup-agl-ivi-security.bb - packagegroup-agl-ivi-speech-services.bb +### (Barely) bootable image +meta-agl-core/recipes-platform/images/agl-image-boot.bb - The previous list of Packagegroups are used to create the `agl-image-ivi` - image, which is a baseline image (i.e. Service Layer and Operating System - Layer defined in AGL Spec v1.0) for the AGL profiles. +### minimal image and SDK (console) +meta-agl-core/recipes-platform/images/agl-image-minimal.bb +meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.bb -* packagegroup-agl-test.bb +### weston-based image for re-use +meta-agl-core/recipes-platform/images/agl-image-weston.bb - Additional tools used in QA tests (for agl-image*-qa). +### image for use in the YP autobuilder +meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb +### image with extra QA tooling (e.g. to run LTP) +meta-agl-core-test/images/agl-image-minimal-qa.bb diff --git a/meta-agl/conf/layer.conf b/meta-agl/conf/layer.conf deleted file mode 100644 index 6f431e6ac..000000000 --- a/meta-agl/conf/layer.conf +++ /dev/null @@ -1,12 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have recipes-* directories, add to BBFILES -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend" - -BBFILE_COLLECTIONS += "agl" -BBFILE_PATTERN_agl = "^${LAYERDIR}/" -BBFILE_PRIORITY_agl = "70" - -LAYERSERIES_COMPAT_agl = "dunfell" diff --git a/meta-app-framework/conf/include/agl-appfw-smack.inc b/meta-app-framework/conf/include/agl-appfw-smack.inc index 139722402..831368a31 100644 --- a/meta-app-framework/conf/include/agl-appfw-smack.inc +++ b/meta-app-framework/conf/include/agl-appfw-smack.inc @@ -3,6 +3,8 @@ OVERRIDES .= ":with-lsm-smack" DISTRO_FEATURES_append = " smack xattr" DISTRO_FEATURES_NATIVE_append = " smack xattr" +APPFW_ENABLED = "1" + # use tar-native to support SMACK extended attributes independently of host config IMAGE_CMD_TAR = "tar --xattrs --xattrs-include='*'" do_image_tar[depends] += "tar-replacement-native:do_populate_sysroot" @@ -17,3 +19,6 @@ PACKAGECONFIG_append_pn-shadow-native = " attr" # set the home directory for root ROOT_HOME = "/home/0" + +# include devel wgts in images +IMAGE_FEATURES_append = " agl-devel-wgt" diff --git a/meta-agl-profile-core/conf/include/agl-sign-wgts.inc b/meta-app-framework/conf/include/agl-sign-wgts.inc index 6e6674fd1..d56c01288 100644 --- a/meta-agl-profile-core/conf/include/agl-sign-wgts.inc +++ b/meta-app-framework/conf/include/agl-sign-wgts.inc @@ -1,3 +1,3 @@ # allows insertion of code or items specific to developement OVERRIDES .= ":agl-sign-wgts" -DISTRO_FEATURES_append = " agl-sign-wgts" +AGL_FEATURES_append = " agl-sign-wgts" diff --git a/meta-app-framework/conf/layer.conf b/meta-app-framework/conf/layer.conf index 21b8ee530..77701bb57 100644 --- a/meta-app-framework/conf/layer.conf +++ b/meta-app-framework/conf/layer.conf @@ -10,3 +10,24 @@ BBFILE_PATTERN_app-framework = "^${LAYERDIR}/" BBFILE_PRIORITY_app-framework = "70" LAYERSERIES_COMPAT_app-framework = "dunfell" + +# dependency: meta-oe +LAYERDEPENDS_app-framework = "openembedded-layer" +# dependency: meta-security +LAYERDEPENDS_app-framework += "security" + +# AGL core layer is an optional requirement +LAYERRECOMMENDS_app-framework += "aglcore" +LAYERRECOMMENDS_app-framework += "qt5-layer" + +BBFILES_DYNAMIC += " \ + qt5-layer:${LAYERDIR}/dynamic-layers/meta-qt5/*/*/*.bb \ + qt5-layer:${LAYERDIR}/dynamic-layers/meta-qt5/*/*/*.bbappend \ + aglcore:${LAYERDIR}/dynamic-layers/meta-agl-core/*/*/*.bb \ + aglcore:${LAYERDIR}/dynamic-layers/meta-agl-core/*/*/*.bbappend \ +" + + +# bug in meta-security +BBMASK += "packagegroup-core-security-ptest\.bb" +#BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend new file mode 100644 index 000000000..048154e04 --- /dev/null +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', '${PN}_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security_appfw.inc index 8445a9edd..423f15fdb 100644 --- a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security_appfw.inc @@ -1,4 +1,4 @@ -RDEPENDS_${PN} += "\ +RDEPENDS_${PN}_append = "\ smack-system-setup \ xmlsec1 \ cynagora \ @@ -6,4 +6,3 @@ RDEPENDS_${PN} += "\ security-manager-policy \ agl-users \ " - diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend new file mode 100644 index 000000000..514dde79b --- /dev/null +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'packagegroup-agl-image-boot_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot_appfw.inc index ad09e5ddf..b3383f114 100644 --- a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot_appfw.inc @@ -1,3 +1,3 @@ -RDEPENDS_${PN} += "\ +RDEPENDS_${PN}_append = "\ packagegroup-agl-app-framework \ " diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend new file mode 100644 index 000000000..5f890bf06 --- /dev/null +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'packagegroup-agl-image-minimal_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal_appfw.inc index ad09e5ddf..b3383f114 100644 --- a/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend +++ b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal_appfw.inc @@ -1,3 +1,3 @@ -RDEPENDS_${PN} += "\ +RDEPENDS_${PN}_append = "\ packagegroup-agl-app-framework \ " diff --git a/meta-agl-profile-graphical-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb b/meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb index 802167b2d..802167b2d 100644 --- a/meta-agl-profile-graphical-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb +++ b/meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb diff --git a/meta-agl-profile-graphical-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb b/meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb index dd270d048..dd270d048 100644 --- a/meta-agl-profile-graphical-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb +++ b/meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb diff --git a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb b/meta-app-framework/dynamic-layers/meta-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-qt5.bb index 2f0f01fec..2f0f01fec 100644 --- a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb +++ b/meta-app-framework/dynamic-layers/meta-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-qt5.bb diff --git a/meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend new file mode 100644 index 000000000..20d2a68d7 --- /dev/null +++ b/meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'bluez5_appfw.inc', '', d)} diff --git a/meta-security/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-app-framework/recipes-connectivity/bluez5/bluez5_appfw.inc index 3767681b0..21529e96b 100644 --- a/meta-security/recipes-connectivity/bluez5/bluez5_%.bbappend +++ b/meta-app-framework/recipes-connectivity/bluez5/bluez5_appfw.inc @@ -48,7 +48,7 @@ SRC_URI_append_with-lsm-smack = "\ file://bluetooth.service.conf \ " -FILES_${PN} += "${systemd_unitdir}" +FILES_${PN}_append = " ${systemd_unitdir}" do_install_append_with-lsm-smack() { install -Dm0644 ${WORKDIR}/bluetooth.service.conf ${D}${systemd_unitdir}/system/bluetooth.service.d/smack.conf diff --git a/meta-security/recipes-connectivity/bluez5/files/bluetooth.service.conf b/meta-app-framework/recipes-connectivity/bluez5/files/bluetooth.service.conf index b93ab4fee..b93ab4fee 100644 --- a/meta-security/recipes-connectivity/bluez5/files/bluetooth.service.conf +++ b/meta-app-framework/recipes-connectivity/bluez5/files/bluetooth.service.conf diff --git a/meta-app-framework/recipes-connectivity/connman/connman_%.bbappend b/meta-app-framework/recipes-connectivity/connman/connman_%.bbappend new file mode 100644 index 000000000..72aa9f276 --- /dev/null +++ b/meta-app-framework/recipes-connectivity/connman/connman_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'connman_appfw.inc', '', d)} diff --git a/meta-security/recipes-connectivity/connman/connman_%.bbappend b/meta-app-framework/recipes-connectivity/connman/connman_appfw.inc index 3b010490d..23af33104 100644 --- a/meta-security/recipes-connectivity/connman/connman_%.bbappend +++ b/meta-app-framework/recipes-connectivity/connman/connman_appfw.inc @@ -27,7 +27,7 @@ SRC_URI_append_with-lsm-smack = "\ RDEPENDS_${PN}_append_with-lsm-smack = " smack" -FILES_${PN} += "${systemd_unitdir}" +FILES_${PN}_append = " ${systemd_unitdir}" do_install_append_with-lsm-smack() { install -Dm0644 ${WORKDIR}/connman.service.conf ${D}${systemd_unitdir}/system/connman.service.d/smack.conf diff --git a/meta-security/recipes-connectivity/connman/files/connman.service.conf b/meta-app-framework/recipes-connectivity/connman/files/connman.service.conf index 6ebbf6ad1..6ebbf6ad1 100644 --- a/meta-security/recipes-connectivity/connman/files/connman.service.conf +++ b/meta-app-framework/recipes-connectivity/connman/files/connman.service.conf diff --git a/meta-app-framework/recipes-core/base-files/base-files_%.bbappend b/meta-app-framework/recipes-core/base-files/base-files_%.bbappend index 1dddcd6f2..28b08face 100644 --- a/meta-app-framework/recipes-core/base-files/base-files_%.bbappend +++ b/meta-app-framework/recipes-core/base-files/base-files_%.bbappend @@ -1,32 +1 @@ -RDEPENDS_${PN}_append_with-lsm-smack = " smack" -PACKAGE_WRITE_DEPS_append_with-lsm-smack = " smack-native" - -do_install_append() { - install -m 0700 -d ${D}/${sysconfdir}/skel - chmod -R 0700 ${D}/${sysconfdir}/skel - install -m 0700 -d ${D}/${sysconfdir}/skel/app-data - install -m 0700 -d ${D}/${sysconfdir}/skel/.config - install -m 0755 -d ${D}/var - if [ -d ${D}/usr/local ]; then - mv ${D}/usr/local ${D}/var - else - install -m 0755 -d ${D}/var/local - fi - ln -s ../var/local ${D}/usr/local -} - -do_install_append_with-lsm-smack () { - install -d ${D}/${sysconfdir}/smack/accesses.d - cat > ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user <<EOF -System User::App-Shared rwxat -System User::Home rwxat -EOF - chmod 0644 ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user -} - -pkg_postinst_${PN}_append_with-lsm-smack() { - chsmack -r -a 'User::Home' -t -D $D/${sysconfdir}/skel - chsmack -a 'User::App-Shared' -D $D/${sysconfdir}/skel/app-data - cp -rTf --preserve=all $D/${sysconfdir}/skel $D/${ROOT_HOME} -} - +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'base-files_appfw.inc', '', d)} diff --git a/meta-security/recipes-core/base-files/base-files_%.bbappend b/meta-app-framework/recipes-core/base-files/base-files_appfw.inc index f0e340f5b..848a39ff4 100644 --- a/meta-security/recipes-core/base-files/base-files_%.bbappend +++ b/meta-app-framework/recipes-core/base-files/base-files_appfw.inc @@ -1,3 +1,37 @@ +RDEPENDS_${PN}_append_with-lsm-smack = " smack" +PACKAGE_WRITE_DEPS_append_with-lsm-smack = " smack-native" + +do_install_append() { + install -m 0700 -d ${D}/${sysconfdir}/skel + chmod -R 0700 ${D}/${sysconfdir}/skel + install -m 0700 -d ${D}/${sysconfdir}/skel/app-data + install -m 0700 -d ${D}/${sysconfdir}/skel/.config + install -m 0755 -d ${D}/var + if [ -d ${D}/usr/local ]; then + mv ${D}/usr/local ${D}/var + else + install -m 0755 -d ${D}/var/local + fi + ln -s ../var/local ${D}/usr/local +} + +do_install_append_with-lsm-smack () { + install -d ${D}/${sysconfdir}/smack/accesses.d + cat > ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user <<EOF +System User::App-Shared rwxat +System User::Home rwxat +EOF + chmod 0644 ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user +} + +pkg_postinst_${PN}_append_with-lsm-smack() { + chsmack -r -a 'User::Home' -t -D $D/${sysconfdir}/skel + chsmack -a 'User::App-Shared' -D $D/${sysconfdir}/skel/app-data + cp -rTf --preserve=all $D/${sysconfdir}/skel $D/${ROOT_HOME} +} + + + # Install default Smack rules, copied from a running Tizen IVI 3.0. # Corresponds to manifest file from default-access-domains in Tizen: # https://review.tizen.org/git?p=platform/core/security/default-ac-domains.git;a=blob;f=packaging/default-ac-domains.manifest diff --git a/meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend b/meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend new file mode 100644 index 000000000..b7bf9fff4 --- /dev/null +++ b/meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'coreutils_appfw.inc', '', d)} diff --git a/meta-security/recipes-core/coreutils/coreutils_%.bbappend b/meta-app-framework/recipes-core/coreutils/coreutils_appfw.inc index 1b9b722ec..1b9b722ec 100644 --- a/meta-security/recipes-core/coreutils/coreutils_%.bbappend +++ b/meta-app-framework/recipes-core/coreutils/coreutils_appfw.inc diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch index 55cedb9c7..55cedb9c7 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch index bac8cf97f..bac8cf97f 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch index 7d89a7496..7d89a7496 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch index 9953dcaac..9953dcaac 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch index 5f7e96a3b..5f7e96a3b 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch index e51ad7ce4..e51ad7ce4 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch diff --git a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch index 7a69efcd2..7a69efcd2 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch diff --git a/meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend b/meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend new file mode 100644 index 000000000..028c734aa --- /dev/null +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'dbus_appfw.inc', '', d)} diff --git a/meta-security/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend b/meta-app-framework/recipes-core/dbus-cynagora/dbus_appfw.inc index 177a117b8..177a117b8 100644 --- a/meta-security/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend +++ b/meta-app-framework/recipes-core/dbus-cynagora/dbus_appfw.inc diff --git a/meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend deleted file mode 100644 index fc73e8f3d..000000000 --- a/meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -RDEPENDS_${PN} =+ "nativesdk-af-main-tools nativesdk-af-binder-devtools" - diff --git a/meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend b/meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend deleted file mode 100644 index 3306d4c72..000000000 --- a/meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend +++ /dev/null @@ -1,7 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/security-manager:" - -EXTRA_OECMAKE =+ " -DGLOBALUSER=afm" -SRC_URI += " \ - file://0001-Adapt-rules-to-AGL.patch \ -" - diff --git a/meta-app-framework/recipes-core/shadow/shadow_%.bbappend b/meta-app-framework/recipes-core/shadow/shadow_%.bbappend index 4f594d47c..70a0c3c82 100644 --- a/meta-app-framework/recipes-core/shadow/shadow_%.bbappend +++ b/meta-app-framework/recipes-core/shadow/shadow_%.bbappend @@ -1,6 +1,3 @@ - -do_install_append() { - sed -i '/^UMASK/s:^.*$:UMASK 077:' ${D}${sysconfdir}/login.defs -} +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'shadow_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-core/shadow/shadow_appfw.inc b/meta-app-framework/recipes-core/shadow/shadow_appfw.inc new file mode 100644 index 000000000..472ffef2c --- /dev/null +++ b/meta-app-framework/recipes-core/shadow/shadow_appfw.inc @@ -0,0 +1,3 @@ +do_install_append() { + sed -i '/^UMASK/s:^.*$:UMASK 077:' ${D}${sysconfdir}/login.defs +} diff --git a/meta-security/recipes-core/smack-system-setup/files/55-udev-smack-default.rules b/meta-app-framework/recipes-core/smack-system-setup/files/55-udev-smack-default.rules index eca65292f..eca65292f 100644 --- a/meta-security/recipes-core/smack-system-setup/files/55-udev-smack-default.rules +++ b/meta-app-framework/recipes-core/smack-system-setup/files/55-udev-smack-default.rules diff --git a/meta-security/recipes-core/smack-system-setup/files/systemd-journald.service.conf b/meta-app-framework/recipes-core/smack-system-setup/files/systemd-journald.service.conf index 7035a1410..7035a1410 100644 --- a/meta-security/recipes-core/smack-system-setup/files/systemd-journald.service.conf +++ b/meta-app-framework/recipes-core/smack-system-setup/files/systemd-journald.service.conf diff --git a/meta-security/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf b/meta-app-framework/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf index db43c8c51..db43c8c51 100644 --- a/meta-security/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf +++ b/meta-app-framework/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf diff --git a/meta-security/recipes-core/smack-system-setup/files/tmp.mount.conf b/meta-app-framework/recipes-core/smack-system-setup/files/tmp.mount.conf index 388986e82..388986e82 100644 --- a/meta-security/recipes-core/smack-system-setup/files/tmp.mount.conf +++ b/meta-app-framework/recipes-core/smack-system-setup/files/tmp.mount.conf diff --git a/meta-security/recipes-core/smack-system-setup/smack-system-setup_1.bb b/meta-app-framework/recipes-core/smack-system-setup/smack-system-setup_1.bb index 49b12ad3f..49b12ad3f 100644 --- a/meta-security/recipes-core/smack-system-setup/smack-system-setup_1.bb +++ b/meta-app-framework/recipes-core/smack-system-setup/smack-system-setup_1.bb diff --git a/meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb b/meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb deleted file mode 100644 index 389ab2424..000000000 --- a/meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb +++ /dev/null @@ -1,39 +0,0 @@ -SUMMARY = "Systemd synchronization script" -DESCRIPTION = "\ -Systemd synchronization script \ -reload daemon at the first boot. \ -" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -#This script should be the last to be execute at the first boot -POST_INSTALL_LEVEL = "X0" -POST_INSTALL_SCRIPT ?= "${POST_INSTALL_LEVEL}-${PN}.sh" - -do_install() { - install -d ${D}/${sysconfdir}/agl-postinsts - cat > ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} <<EOF -#!/bin/sh -e -echo "restart daemon ..." -result=0 -systemctl daemon-reload -if [ \$? -ne 0 ]; then - result=1 -fi -systemctl restart sockets.target -if [ \$? -ne 0 ]; then - result=1 -fi - -if [ \$result -eq 0 ]; then - echo "restart daemon OK" - exit \$result -else - echo "restart daemon failed" - exit \$result -fi -EOF - chmod a+x ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} -} - -FILES_${PN} = "${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT}" diff --git a/meta-security/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch b/meta-app-framework/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch index 46445be73..46445be73 100644 --- a/meta-security/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch +++ b/meta-app-framework/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch diff --git a/meta-app-framework/recipes-core/systemd/systemd_2%.bbappend b/meta-app-framework/recipes-core/systemd/systemd_2%.bbappend new file mode 100644 index 000000000..11b1df9bb --- /dev/null +++ b/meta-app-framework/recipes-core/systemd/systemd_2%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'systemd_appfw.inc', '', d)} diff --git a/meta-security/recipes-core/systemd/systemd_2%.bbappend b/meta-app-framework/recipes-core/systemd/systemd_appfw.inc index 789c05f83..a5e1ae840 100644 --- a/meta-security/recipes-core/systemd/systemd_2%.bbappend +++ b/meta-app-framework/recipes-core/systemd/systemd_appfw.inc @@ -1,4 +1,4 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +FILESEXTRAPATHS_prepend := "${THISDIR}/systemd:" # Ensures systemd runs with label "System" EXTRA_OEMESON_append_with-lsm-smack = " -Dsmack-run-label=System" diff --git a/meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend b/meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend new file mode 100644 index 000000000..3894f57cc --- /dev/null +++ b/meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'util-linux_appfw.inc', '', d)} diff --git a/meta-security/recipes-core/util-linux/util-linux_%.bbappend b/meta-app-framework/recipes-core/util-linux/util-linux_appfw.inc index 05286f80d..05286f80d 100644 --- a/meta-security/recipes-core/util-linux/util-linux_%.bbappend +++ b/meta-app-framework/recipes-core/util-linux/util-linux_appfw.inc diff --git a/meta-agl-profile-core/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb b/meta-app-framework/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb index 3fea2ed91..3fea2ed91 100644 --- a/meta-agl-profile-core/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb +++ b/meta-app-framework/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb diff --git a/meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend b/meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend new file mode 100644 index 000000000..051f66aaf --- /dev/null +++ b/meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'json-c_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc b/meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc new file mode 100644 index 000000000..f1547e14b --- /dev/null +++ b/meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc @@ -0,0 +1 @@ +EXTRA_OECONF_append = " --enable-threading" diff --git a/meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.bb b/meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.bb index 1174ac4d7..1174ac4d7 100644 --- a/meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.bb +++ b/meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.bb diff --git a/meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.inc b/meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.inc index 6753225b4..6753225b4 100644 --- a/meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.inc +++ b/meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.inc diff --git a/meta-agl-profile-core/recipes-devtools/libappcontroller/libappcontroller_git.bb b/meta-app-framework/recipes-devtools/libappcontroller/libappcontroller_git.bb index 0ee9c5e84..0ee9c5e84 100644 --- a/meta-agl-profile-core/recipes-devtools/libappcontroller/libappcontroller_git.bb +++ b/meta-app-framework/recipes-devtools/libappcontroller/libappcontroller_git.bb diff --git a/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend new file mode 100644 index 000000000..837b85392 --- /dev/null +++ b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'nativesdk-packagegroup-sdk-host_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc new file mode 100644 index 000000000..8d6ffb5b3 --- /dev/null +++ b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc @@ -0,0 +1,5 @@ +RDEPENDS_${PN}_append = " \ + nativesdk-af-main-tools \ + nativesdk-af-binder-devtools \ + nativesdk-cmake-apps-module \ +" diff --git a/meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend b/meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend deleted file mode 100644 index 590ab708a..000000000 --- a/meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend +++ /dev/null @@ -1 +0,0 @@ -SYSTEMD_SERVICE_AFTER_append = " afm-system-daemon.service" diff --git a/meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf index d706cc5f7..d706cc5f7 100644 --- a/meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf +++ b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf diff --git a/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend new file mode 100644 index 000000000..6b9025dc5 --- /dev/null +++ b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'run-postinsts_appfw.inc', '', d)} diff --git a/meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts_%.bbappend b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_appfw.inc index 4cc2edf86..2f3effce6 100644 --- a/meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts_%.bbappend +++ b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_appfw.inc @@ -1,6 +1,6 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +FILESEXTRAPATHS_prepend := "${THISDIR}/run-postinsts:" -SRC_URI += "file://ldconfig-wait.conf" +SRC_URI_append = " file://ldconfig-wait.conf" do_configure_append() { if ! grep -q StandardOutput= ${WORKDIR}/run-postinsts.service; then diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch b/meta-app-framework/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch index d0dcb45af..d0dcb45af 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch +++ b/meta-app-framework/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch diff --git a/meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend b/meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend new file mode 100644 index 000000000..50cad0354 --- /dev/null +++ b/meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'wayland_appfw.inc', '', d)} diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland_%.bbappend b/meta-app-framework/recipes-graphics/wayland/wayland_appfw.inc index 9d1822697..f39122de2 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland_%.bbappend +++ b/meta-app-framework/recipes-graphics/wayland/wayland_appfw.inc @@ -1,4 +1,4 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +FILESEXTRAPATHS_prepend := "${THISDIR}/wayland:" SRC_URI_append = "\ file://0001-Change-socket-mode-add-rw-for-group.patch \ diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch b/meta-app-framework/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch index 362f6b064..362f6b064 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch +++ b/meta-app-framework/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/smack-weston b/meta-app-framework/recipes-graphics/wayland/weston/smack-weston index 63a32405a..63a32405a 100644 --- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/smack-weston +++ b/meta-app-framework/recipes-graphics/wayland/weston/smack-weston diff --git a/meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend new file mode 100644 index 000000000..00bb510bf --- /dev/null +++ b/meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'weston_8.0_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc b/meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc new file mode 100644 index 000000000..219ed1aef --- /dev/null +++ b/meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc @@ -0,0 +1,19 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/weston" + +SRC_URI_append = "\ + file://0001-Allow-regular-users-to-launch-Weston_7.0.0.patch \ + file://smack-weston \ + " + +EXTRA_OEMESON_append = " -Denable-user-start=true" + +do_install_append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'smack', 'true', 'false', d)}; then + # Install SMACK rules + install -D -m 0644 ${WORKDIR}/smack-weston ${D}${sysconfdir}/smack/accesses.d/weston + fi +} + +FILES_${PN}_append = "\ + ${sysconfdir}/smack/accesses.d/* \ +" diff --git a/meta-app-framework/recipes-kernel/linux/linux-%.bbappend b/meta-app-framework/recipes-kernel/linux/linux-%.bbappend index fba5bf13d..acce6cc1b 100644 --- a/meta-app-framework/recipes-kernel/linux/linux-%.bbappend +++ b/meta-app-framework/recipes-kernel/linux/linux-%.bbappend @@ -1,3 +1,2 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/linux:" -SRC_URI_append_with-lsm-smack = " file://audit.cfg" +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'linux-appfw.inc', '', d)} diff --git a/meta-security/recipes-kernel/linux/linux-%.bbappend b/meta-app-framework/recipes-kernel/linux/linux-appfw.inc index 717d32e3a..cbf6567e0 100644 --- a/meta-security/recipes-kernel/linux/linux-%.bbappend +++ b/meta-app-framework/recipes-kernel/linux/linux-appfw.inc @@ -9,9 +9,13 @@ SMACK_KERNEL_SRC_URI_yes += "file://smack.cfg" # When added, set Smack as the default LSM. SMACK_DEFAULT_SECURITY_CFG = "file://smack-default-lsm.cfg" - # Add it by default, can be overridden by changing this variable here. SMACK_DEFAULT_SECURITY ??= "${SMACK_DEFAULT_SECURITY_CFG}" SMACK_KERNEL_SRC_URI_yes += " ${SMACK_DEFAULT_SECURITY}" +# add audit.cfg +SMACK_KERNEL_SRC_URI_yes += " file://audit.cfg" + + SRC_URI_append_with-lsm-smack = "${SMACK_KERNEL_SRC_URI_${IS_KERNEL_RECIPE}}" + diff --git a/meta-security/recipes-kernel/linux/linux/smack-default-lsm.cfg b/meta-app-framework/recipes-kernel/linux/linux/smack-default-lsm.cfg index b5c48454e..b5c48454e 100644 --- a/meta-security/recipes-kernel/linux/linux/smack-default-lsm.cfg +++ b/meta-app-framework/recipes-kernel/linux/linux/smack-default-lsm.cfg diff --git a/meta-security/recipes-kernel/linux/linux/smack.cfg b/meta-app-framework/recipes-kernel/linux/linux/smack.cfg index 45a92f148..45a92f148 100644 --- a/meta-security/recipes-kernel/linux/linux/smack.cfg +++ b/meta-app-framework/recipes-kernel/linux/linux/smack.cfg diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework-examples.bb index 7ba909162..7ba909162 100644 --- a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework-examples.bb diff --git a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework.bb index 854835d4c..d15607a40 100644 --- a/meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework.bb @@ -4,17 +4,16 @@ LICENSE = "MIT" inherit packagegroup -PACKAGES = "\ +PACKAGES_${PN} = "\ packagegroup-agl-app-framework \ " ALLOW_EMPTY_${PN} = "1" -RDEPENDS_${PN} += "\ +RDEPENDS_${PN} = "\ af-binder \ libafbwsc \ af-main \ nss-localuser \ - systemd-agl-sync \ af-platform-setup \ " diff --git a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-appfw-native.bb index a31c666ca..750fe678d 100644 --- a/meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-appfw-native.bb @@ -13,5 +13,4 @@ PACKAGES = "\ ALLOW_EMPTY_${PN} = "1" RDEPENDS_${PN} += "\ - packagegroup-agl-appfw-native-qt5 \ " diff --git a/meta-security/recipes-core/packagegroups/packagegroup-security-framework.bb b/meta-app-framework/recipes-platform/packagegroups/packagegroup-security-framework.bb index bc708600f..bc708600f 100644 --- a/meta-security/recipes-core/packagegroups/packagegroup-security-framework.bb +++ b/meta-app-framework/recipes-platform/packagegroups/packagegroup-security-framework.bb diff --git a/meta-security/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch b/meta-app-framework/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch index 6e1827c08..6e1827c08 100644 --- a/meta-security/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch +++ b/meta-app-framework/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch diff --git a/meta-security/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch b/meta-app-framework/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch index bb6c61e80..bb6c61e80 100644 --- a/meta-security/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch +++ b/meta-app-framework/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch diff --git a/meta-security/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch b/meta-app-framework/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch index 7c2699540..7c2699540 100644 --- a/meta-security/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch +++ b/meta-app-framework/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch diff --git a/meta-security/recipes-security/audit/audit/audit-volatile.conf b/meta-app-framework/recipes-security/audit/audit/audit-volatile.conf index 9cbe1547a..9cbe1547a 100644 --- a/meta-security/recipes-security/audit/audit/audit-volatile.conf +++ b/meta-app-framework/recipes-security/audit/audit/audit-volatile.conf diff --git a/meta-security/recipes-security/audit/audit/auditd b/meta-app-framework/recipes-security/audit/audit/auditd index cda2e43d4..cda2e43d4 100755 --- a/meta-security/recipes-security/audit/audit/auditd +++ b/meta-app-framework/recipes-security/audit/audit/auditd diff --git a/meta-security/recipes-security/audit/audit/auditd.service b/meta-app-framework/recipes-security/audit/audit/auditd.service index ebc079897..ebc079897 100644 --- a/meta-security/recipes-security/audit/audit/auditd.service +++ b/meta-app-framework/recipes-security/audit/audit/auditd.service diff --git a/meta-security/recipes-security/audit/audit_2.8.5.bb b/meta-app-framework/recipes-security/audit/audit_2.8.5.bb index af36ed5e2..af36ed5e2 100644 --- a/meta-security/recipes-security/audit/audit_2.8.5.bb +++ b/meta-app-framework/recipes-security/audit/audit_2.8.5.bb diff --git a/meta-security/recipes-security/cynagoauth/cynagoauth_0.1.bb b/meta-app-framework/recipes-security/cynagoauth/cynagoauth_0.1.bb index c77c99189..c77c99189 100644 --- a/meta-security/recipes-security/cynagoauth/cynagoauth_0.1.bb +++ b/meta-app-framework/recipes-security/cynagoauth/cynagoauth_0.1.bb diff --git a/meta-security/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb b/meta-app-framework/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb index f146051cd..f146051cd 100644 --- a/meta-security/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb +++ b/meta-app-framework/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb diff --git a/meta-security/recipes-security/cynagora/cynagora/run-ptest b/meta-app-framework/recipes-security/cynagora/cynagora/run-ptest index f95f0725b..f95f0725b 100755 --- a/meta-security/recipes-security/cynagora/cynagora/run-ptest +++ b/meta-app-framework/recipes-security/cynagora/cynagora/run-ptest diff --git a/meta-security/recipes-security/cynagora/cynagora_2.1.bb b/meta-app-framework/recipes-security/cynagora/cynagora_2.1.bb index 73f2f0949..73f2f0949 100644 --- a/meta-security/recipes-security/cynagora/cynagora_2.1.bb +++ b/meta-app-framework/recipes-security/cynagora/cynagora_2.1.bb diff --git a/meta-security/recipes-security/security-manager/security-manager.inc b/meta-app-framework/recipes-security/security-manager/security-manager.inc index e1d1f4011..e1d1f4011 100644 --- a/meta-security/recipes-security/security-manager/security-manager.inc +++ b/meta-app-framework/recipes-security/security-manager/security-manager.inc diff --git a/meta-app-framework/recipes-core/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch index 4c91f7fa3..4c91f7fa3 100644 --- a/meta-app-framework/recipes-core/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch index 91ce81963..91ce81963 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch index b6346480b..b6346480b 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch index d79345e01..d79345e01 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch index 59d4971ff..59d4971ff 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch index 0739f28c7..0739f28c7 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch index 3b8aad98c..3b8aad98c 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch index bad99d25a..bad99d25a 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch index 5ece7ef4f..5ece7ef4f 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch index 706eb1a93..706eb1a93 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch index 0f48c5f68..0f48c5f68 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch index 5c679fc26..5c679fc26 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch index 91ccf9ee2..91ccf9ee2 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch index fb6215923..fb6215923 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch index 542a387d2..542a387d2 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch diff --git a/meta-security/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch b/meta-app-framework/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch index d9949193b..d9949193b 100644 --- a/meta-security/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch +++ b/meta-app-framework/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch diff --git a/meta-agl-profile-graphical/recipes-security/security-manager/security-manager_%.bbappend b/meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend index d6fcb40af..ec8435369 100644 --- a/meta-agl-profile-graphical/recipes-security/security-manager/security-manager_%.bbappend +++ b/meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend @@ -1,3 +1,10 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/security-manager:" + +EXTRA_OECMAKE =+ " -DGLOBALUSER=afm" + +SRC_URI += " \ + file://0001-Adapt-rules-to-AGL.patch \ +" do_install_append() { # Needed for wayland-0 socket access and memfd usage diff --git a/meta-security/recipes-security/security-manager/security-manager_git.bb b/meta-app-framework/recipes-security/security-manager/security-manager_git.bb index b34973519..b34973519 100644 --- a/meta-security/recipes-security/security-manager/security-manager_git.bb +++ b/meta-app-framework/recipes-security/security-manager/security-manager_git.bb diff --git a/meta-app-framework/recipes-security/xmlsec1/xmlsec1_1.%.bbappend b/meta-app-framework/recipes-security/xmlsec1/xmlsec1_1.%.bbappend index 09820be2f..afbc16c30 100644 --- a/meta-app-framework/recipes-security/xmlsec1/xmlsec1_1.%.bbappend +++ b/meta-app-framework/recipes-security/xmlsec1/xmlsec1_1.%.bbappend @@ -1,4 +1 @@ -# Disable nss to avoid build issues on native -PACKAGECONFIG = "gnutls libgcrypt openssl des" - -BBCLASSEXTEND = "native nativesdk" +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'xmlsec1_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc b/meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc new file mode 100644 index 000000000..09820be2f --- /dev/null +++ b/meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc @@ -0,0 +1,4 @@ +# Disable nss to avoid build issues on native +PACKAGECONFIG = "gnutls libgcrypt openssl des" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-app-framework/recipes-support/libcap/libcap_%.bbappend b/meta-app-framework/recipes-support/libcap/libcap_%.bbappend index ac909a64c..6107ee7f6 100644 --- a/meta-app-framework/recipes-support/libcap/libcap_%.bbappend +++ b/meta-app-framework/recipes-support/libcap/libcap_%.bbappend @@ -1,3 +1 @@ -FILESEXTRAPATHS_append_class-native := ":${THISDIR}/${PN}" -# FIXME: It needs to be determined if this is still required -#SRC_URI_append_class-native = " file://removing-capability-enforcement.patch" +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'libcap_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-support/libcap/libcap_appfw.inc b/meta-app-framework/recipes-support/libcap/libcap_appfw.inc new file mode 100644 index 000000000..9ece5ce27 --- /dev/null +++ b/meta-app-framework/recipes-support/libcap/libcap_appfw.inc @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_append_class-native := ":${THISDIR}/libcap" +# FIXME: It needs to be determined if this is still required +#SRC_URI_append_class-native = " file://removing-capability-enforcement.patch" diff --git a/meta-app-framework/recipes-support/libzip/libzip_%.bbappend b/meta-app-framework/recipes-support/libzip/libzip_%.bbappend index 5174650b1..d559c2fbe 100644 --- a/meta-app-framework/recipes-support/libzip/libzip_%.bbappend +++ b/meta-app-framework/recipes-support/libzip/libzip_%.bbappend @@ -1 +1 @@ -BBCLASSEXTEND += "native nativesdk" +require ${@bb.utils.contains('APPFW_ENABLED', '1', 'libzip_appfw.inc', '', d)} diff --git a/meta-app-framework/recipes-support/libzip/libzip_appfw.inc b/meta-app-framework/recipes-support/libzip/libzip_appfw.inc new file mode 100644 index 000000000..5174650b1 --- /dev/null +++ b/meta-app-framework/recipes-support/libzip/libzip_appfw.inc @@ -0,0 +1 @@ +BBCLASSEXTEND += "native nativesdk" diff --git a/meta-agl-profile-core/recipes-test/afb-test/afb-test_git.bb b/meta-app-framework/recipes-test/afb-test/afb-test_git.bb index 5246abb00..5246abb00 100644 --- a/meta-agl-profile-core/recipes-test/afb-test/afb-test_git.bb +++ b/meta-app-framework/recipes-test/afb-test/afb-test_git.bb diff --git a/meta-agl-profile-core/recipes-test/afb-test/files/run-ptest b/meta-app-framework/recipes-test/afb-test/files/run-ptest index 883939a83..883939a83 100644 --- a/meta-agl-profile-core/recipes-test/afb-test/files/run-ptest +++ b/meta-app-framework/recipes-test/afb-test/files/run-ptest diff --git a/meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh b/meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh new file mode 100755 index 000000000..37d2f5615 --- /dev/null +++ b/meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -x +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT="/tmp" + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# skip unnecessary in yocto-check-layer - aka FIXME upstream +BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb" +BBMASK += "packagegroup-core-security-ptest.bb" + +# missing in upstream recipes ... aka FIXME upstream +BBCLASSEXTEND_pn-libzip = "native nativesdk" +BBCLASSEXTEND_pn-xmlsec1 = "native nativesdk" + +DISTRO_FEATURES_append = " appfw smack " + +EOF + + +yocto-check-layer \ + --dependency $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-security \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ + $AGLROOT/external/meta-openembedded/meta-perl \ + $AGLROOT/external/meta-qt5/ \ + -- \ + $AGLROOT/meta-agl/meta-app-framework/ + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl + + diff --git a/meta-app-framework/scripts/run-yocto-check-layer.sh b/meta-app-framework/scripts/run-yocto-check-layer.sh new file mode 100755 index 000000000..3b19cd012 --- /dev/null +++ b/meta-app-framework/scripts/run-yocto-check-layer.sh @@ -0,0 +1,49 @@ +#!/bin/bash +set -x +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT="/tmp" + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# skip unnecessary in yocto-check-layer - aka FIXME upstream +BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb" +BBMASK += "packagegroup-core-security-ptest.bb" + +# missing in upstream recipes ... aka FIXME upstream +BBCLASSEXTEND_pn-libzip = "native nativesdk" +BBCLASSEXTEND_pn-xmlsec1 = "native nativesdk" + +EOF + + +yocto-check-layer \ + --dependency $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-security \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ + $AGLROOT/external/meta-openembedded/meta-perl \ + $AGLROOT/external/meta-qt5/ \ + -- \ + $AGLROOT/meta-agl/meta-app-framework/ + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl + + diff --git a/meta-netboot/README.renesas-gen3 b/meta-netboot/README.renesas-gen3 deleted file mode 100644 index 496141eef..000000000 --- a/meta-netboot/README.renesas-gen3 +++ /dev/null @@ -1,90 +0,0 @@ -Below are the environment variables that can be set in the u-boot console to boot the Renesas Gen3 ULCB boards. - -Adjust board type with the following identifiers: - -* 'm3ulcb' for Renesas Gen3 Starter Kit Pro -* 'h3ulcb' for Renesas Gen3 Starter Kit Premium - -################## Common options ##################### -# these options are common to all configurations: - -##### board info - -# choose board -setenv board m3ulcb -setenv soc r8a7796 -# or -setenv board h3ulcb -setenv soc r8a7795 - -##### boot mode -# choose bootmode: -# netboot -setenv bootmode net -# or sdcard -setenv bootmode sd -# or sdcard with initrd -setenv bootmode sdi - -##### sdcard options -# which sdcard slot to use -setenv bootmmc '0:1' - -##### netboot options -# replace <IP> and <NUM> by appropriate addresses -setenv ipaddr '<board_IP>' -setenv serverip '<server_IP>' -setenv ethact ravb -setenv ethaddr DE:AD:C0:FF:EE:<NUM> - -################## Internal variables ##################### - -# kernel file -setenv set_bootkfile 'setenv bootkfile Image' -setenv bootkaddr 0x48080000 - -# dtb file -setenv set_bootdfile 'setenv bootdfile Image-${soc}-${board}.dtb' -setenv bootdaddr 0x48000000 - -# initrd -setenv set_bootifile 'setenv bootifile initramfs-netboot-image-${board}.ext4.gz' -setenv bootiaddr 0x5C3F9520 -setenv bootisize 3A6AB6 - -# kernel args -setenv bootargs_console 'console=ttySC0,115200 ignore_loglevel' -setenv bootargs_video 'vmalloc=384M video=HDMI-A-1:1920x1080-32@60' -setenv bootargs_extra 'rw rootfstype=ext4 rootwait rootdelay=2' - -# final boot command -setenv bootcmd 'run bootcmd_${bootmode}' - -################ Boot on MMC (SDcard) ################# - -setenv bootkload_sd 'ext4load mmc ${bootmmc} ${bootkaddr} boot/${bootkfile}' -setenv bootiload_sd 'ext4load mmc ${bootmmc} ${bootiaddr} boot/${bootifile}' -setenv bootdload_sd 'ext4load mmc ${bootmmc} ${bootdaddr} boot/${bootdfile}' - -# without initrd -setenv bootargs_root_sd 'root=/dev/mmcblk1p1' -setenv bootload_sd 'run set_bootkfile; run bootkload_sd; run set_bootdfile; run bootdload_sd' -setenv bootcmd_sd 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_sd} ${bootargs_extra}; run bootload_sd; booti ${bootkaddr} - ${bootdaddr}' - -# with initrd -setenv bootargs_root_sdi 'root=/dev/ram0 ramdisk_size=16384' -setenv bootload_sdi 'run set_bootkfile; run bootkload_sd; run set_bootdfile; run bootdload_sd; run set_bootifile; run bootiload_sd' -setenv bootcmd_sdi 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_sdi} ${bootargs_extra}; run bootload_sdi; booti ${bootkaddr} ${bootiaddr}:${bootisize} ${bootdaddr}' - -################ Netboot through TFTP+NBD ################## - -setenv bootkload_net 'tftp ${bootkaddr} ${board}/${bootkfile}' -setenv bootdload_net 'tftp ${bootdaddr} ${board}/${bootdfile}' -setenv bootiload_net 'tftp ${bootiaddr} ${board}/${bootifile}' - -setenv bootargs_root_net 'root=/dev/ram0 ramdisk_size=16384 ip=dhcp' -setenv bootload_net 'run set_bootkfile; run bootkload_net; run set_bootdfile; run bootdload_net; run set_bootifile; run bootiload_net' - -setenv bootcmd_net 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_net} ${bootargs_extra} nbd.server=${serverip}; run bootload_net; booti ${bootkaddr} ${bootiaddr}:${bootisize} ${bootdaddr}' - - diff --git a/meta-netboot/classes/netboot.bbclass b/meta-netboot/classes/netboot.bbclass index 63369285f..a18d64f5b 100644 --- a/meta-netboot/classes/netboot.bbclass +++ b/meta-netboot/classes/netboot.bbclass @@ -1,5 +1,10 @@ # Enable network bootable image and initrd/initramfs +OVERRIDES .= ":netboot" +# add 512MB of extra space in ext4 output image +IMAGE_ROOTFS_EXTRA_SPACE = "524288" +NETBOOT_ENABLED ??= "1" + python () { if (bb.utils.contains("IMAGE_FSTYPES","live",True,False,d)): # typical case for Minnowboard Max diff --git a/meta-netboot/conf/include/agl-netboot.inc b/meta-netboot/conf/include/agl-netboot.inc index fcff8c318..ca6d9df12 100644 --- a/meta-netboot/conf/include/agl-netboot.inc +++ b/meta-netboot/conf/include/agl-netboot.inc @@ -1,5 +1,2 @@ INHERIT += "netboot" -OVERRIDES .= ":netboot" -# add 512MB of extra space in ext4 output image -IMAGE_ROOTFS_EXTRA_SPACE = "524288" diff --git a/meta-netboot/conf/layer.conf b/meta-netboot/conf/layer.conf index 50def90fc..2af752805 100644 --- a/meta-netboot/conf/layer.conf +++ b/meta-netboot/conf/layer.conf @@ -1,6 +1,3 @@ -# Added for futur conditionnals tests -DISTRO_FEATURES_append = " netboot" - # We have a conf and classes directory, add to BBPATH BBPATH .= ":${LAYERDIR}" @@ -13,3 +10,4 @@ BBFILE_PATTERN_meta-netboot = "^${LAYERDIR}/" BBFILE_PRIORITY_meta-netboot = "60" LAYERSERIES_COMPAT_meta-netboot = "dunfell" +LAYERDEPENDS_meta-netboot = "core networking-layer" diff --git a/meta-netboot/recipes-core/busybox/busybox_%.bbappend b/meta-netboot/recipes-core/busybox/busybox_%.bbappend index 358913448..fcf6acfd1 100644 --- a/meta-netboot/recipes-core/busybox/busybox_%.bbappend +++ b/meta-netboot/recipes-core/busybox/busybox_%.bbappend @@ -1,6 +1 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += " \ - file://enable_nbd.cfg \ - " - +require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'busybox_netboot.inc', '', d)} diff --git a/meta-netboot/recipes-core/busybox/busybox_netboot.inc b/meta-netboot/recipes-core/busybox/busybox_netboot.inc new file mode 100644 index 000000000..0bcd5afa5 --- /dev/null +++ b/meta-netboot/recipes-core/busybox/busybox_netboot.inc @@ -0,0 +1,6 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI_append = " \ + file://enable_nbd.cfg \ + " + diff --git a/meta-netboot/recipes-core/images/initramfs-netboot-image.bb b/meta-netboot/recipes-core/images/initramfs-netboot-image.bb index 965a0bd37..b5610f30d 100644 --- a/meta-netboot/recipes-core/images/initramfs-netboot-image.bb +++ b/meta-netboot/recipes-core/images/initramfs-netboot-image.bb @@ -1,23 +1,2 @@ -# Netboot initramfs image. -DESCRIPTION = "Netboot initrd image" - -PACKAGE_INSTALL = "initramfs-netboot busybox base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}" - -# Do not pollute the initrd image with rootfs features -IMAGE_FEATURES = "" - -export IMAGE_BASENAME = "initramfs-netboot-image" -IMAGE_LINGUAS = "" - LICENSE = "MIT" - -IMAGE_FSTYPES := "${NETBOOT_FSTYPES}" -inherit core-image - -# hotfix for dragonboard (which uses _append in the bsp) -IMAGE_FSTYPES_remove += "wic.gz" - -IMAGE_ROOTFS_SIZE = "8192" -IMAGE_ROOTFS_EXTRA_SPACE = "256" - -BAD_RECOMMENDATIONS += "busybox-syslog" +require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'initramfs-netboot-image_netboot.inc', '', d)} diff --git a/meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc b/meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc new file mode 100644 index 000000000..0c97b0f93 --- /dev/null +++ b/meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc @@ -0,0 +1,23 @@ +# Netboot initramfs image. +DESCRIPTION = "Netboot initrd image" + +PACKAGE_INSTALL = "initramfs-netboot busybox base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}" + +# Do not pollute the initrd image with rootfs features +IMAGE_FEATURES = "" + +export IMAGE_BASENAME = "initramfs-netboot-image" +IMAGE_LINGUAS = "" + +LICENSE = "MIT" + +IMAGE_FSTYPES := "${NETBOOT_FSTYPES}" +inherit core-image + +# hotfix for dragonboard (which uses _append in the bsp) +IMAGE_FSTYPES_remove = "wic.gz" + +IMAGE_ROOTFS_SIZE = "8192" +IMAGE_ROOTFS_EXTRA_SPACE = "256" + +BAD_RECOMMENDATIONS += "busybox-syslog" diff --git a/meta-netboot/recipes-support/nbd/nbd_%.bbappend b/meta-netboot/recipes-support/nbd/nbd_%.bbappend index fb11ef9c2..e67e591ff 100644 --- a/meta-netboot/recipes-support/nbd/nbd_%.bbappend +++ b/meta-netboot/recipes-support/nbd/nbd_%.bbappend @@ -1,6 +1 @@ - -do_install_append() { - mv ${D}/${sbindir}/${BPN}-client ${D}/${sbindir}/${BPN}3-client -} - -FILES_${PN}-client = "${sbindir}/${BPN}3-client" +require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'nbd_netboot.inc', '', d)} diff --git a/meta-netboot/recipes-support/nbd/nbd_netboot.inc b/meta-netboot/recipes-support/nbd/nbd_netboot.inc new file mode 100644 index 000000000..f2286616f --- /dev/null +++ b/meta-netboot/recipes-support/nbd/nbd_netboot.inc @@ -0,0 +1,5 @@ +do_install_append() { + mv ${D}/${sbindir}/nbd-client ${D}/${sbindir}/nbd3-client +} + +FILES_${PN}-client_append = " ${sbindir}/nbd3-client" diff --git a/meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh b/meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh new file mode 100755 index 000000000..c64afa714 --- /dev/null +++ b/meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh @@ -0,0 +1,46 @@ +#!/bin/bash +#set -x + +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT=`mktemp -d` + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# workaround +# ERROR: Nothing PROVIDES 'smack' (but meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it) +BBMASK += "meta-oe/recipes-extended/ostree/ostree_2020.3.bb" + +NETBOOT_ENABLED = "1" +NETBOOT_FSTYPES ??= "ext4.gz" + +EOF + + +yocto-check-layer \ + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ + -- \ + $AGLROOT/meta-agl/meta-netboot/ + + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl diff --git a/meta-netboot/scripts/run-yocto-check-layer.sh b/meta-netboot/scripts/run-yocto-check-layer.sh new file mode 100755 index 000000000..b3b8e08e1 --- /dev/null +++ b/meta-netboot/scripts/run-yocto-check-layer.sh @@ -0,0 +1,44 @@ +#!/bin/bash +#set -x + +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT=`mktemp -d` + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +# workaround +# ERROR: Nothing PROVIDES 'smack' (but meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it) +BBMASK += "meta-oe/recipes-extended/ostree/ostree_2020.3.bb" + + +EOF + + +yocto-check-layer \ + --dependency \ + $AGLROOT/external/meta-openembedded/meta-oe \ + $AGLROOT/external/meta-openembedded/meta-python \ + $AGLROOT/external/meta-openembedded/meta-networking \ + -- \ + $AGLROOT/meta-agl/meta-netboot/ + + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl diff --git a/meta-pipewire/conf/layer.conf b/meta-pipewire/conf/layer.conf index 68113221d..5fe2ee2fd 100644 --- a/meta-pipewire/conf/layer.conf +++ b/meta-pipewire/conf/layer.conf @@ -10,3 +10,8 @@ BBFILE_PATTERN_meta-pipewire = "^${LAYERDIR}/" BBFILE_PRIORITY_meta-pipewire = "71" LAYERSERIES_COMPAT_meta-pipewire = "dunfell" + +BBFILES_DYNAMIC += " \ + app-framework:${LAYERDIR}/dynamic-layers/meta-app-framework/*/*/*.bb \ + app-framework:${LAYERDIR}/dynamic-layers/meta-app-framework/*/*/*.bbappend \ +" diff --git a/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-apis/agl-service-audiomixer/agl-service-audiomixer_git.bb index 2a8261195..2a8261195 100644 --- a/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-apis/agl-service-audiomixer/agl-service-audiomixer_git.bb diff --git a/meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend new file mode 100644 index 000000000..d87bd581e --- /dev/null +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend @@ -0,0 +1,4 @@ +RDEPENDS_${PN} += " \ + agl-service-audiomixer \ + bluez-alsa-pipewire \ + " diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/client.env index 9b44cee01..9b44cee01 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/client.env diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in index 6c055bcff..6c055bcff 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/server.env index c74b941d6..c74b941d6 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/server.env diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb index a28c6534e..a28c6534e 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.service index e116dc1fa..e116dc1fa 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.service diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.socket index 10cb32276..10cb32276 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.socket diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/smack-pipewire index 8d5b541ff..8d5b541ff 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/smack-pipewire diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire_git.bbappend index 8a0b0741f..8c9abf23e 100644 --- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire_git.bbappend @@ -1,4 +1,6 @@ -SRC_URI += "\ +FILESEXTRAPATHS_prepend := "${THISDIR}/pipewire:" + +SRC_URI_append= "\ file://pipewire@.service \ file://pipewire@.socket \ file://smack-pipewire \ @@ -24,7 +26,7 @@ do_install_append() { fi } -FILES_${PN} += "\ +FILES_${PN}_append = "\ ${systemd_system_unitdir}/* \ ${sysconfdir}/smack/accesses.d/* \ " diff --git a/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/cynagora/cynagora_%.bbappend index 9395c90c7..ccb6c4137 100644 --- a/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/cynagora/cynagora_%.bbappend @@ -1,4 +1,3 @@ - do_install_append() { echo "System::Pipewire * * http://tizen.org/privilege/internal/dbus yes forever" >> ${D}${sysconfdir}/security/cynagora.initial } diff --git a/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend index 594494463..47c9b9149 100644 --- a/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend +++ b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend @@ -1,4 +1,3 @@ - do_install_append() { echo "~APP~ System::Pipewire rw" >> ${D}${datadir}/security-manager/policy/app-rules-template.smack } diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch deleted file mode 100644 index 6c9a388c8..000000000 --- a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch +++ /dev/null @@ -1,517 +0,0 @@ -From f2e6a0a324106b40195f88953e55a355875d2b1b Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis <george.kiagiadakis@collabora.com> -Date: Fri, 4 Oct 2019 20:51:24 +0300 -Subject: [PATCH] utils: add a gstreamer helper application for interconnection - with pipewire - -Unfortunately, the bluez-alsa PCM plugin does not work correctly -when it is used through pipewire (or gstreamer, or anywhere really...). - -Thanfully, the bluez-alsa PCM plugin is only a simple client that -reads/writes on a file descriptor that was opened by bluealsa. -This allows us to use bluealsa without the PCM plugin, just like it -is done in the aplay.c util. - -This one uses GStreamer to implement the plumbing between pipewire -and the file descriptor. On the reading side we are also doing some -tricks to ensure a smooth stream, which is not the case for the -stream that is coming out of bluealsa. - -This helper is implemented as a patch to bluez-alsa so that it can -use its internal private API. In the future this needs some re-thinking. - -Upstream-Status: Inappropriate ---- - configure.ac | 7 + - utils/Makefile.am | 20 +++ - utils/gst-helper.c | 432 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 459 insertions(+) - create mode 100644 utils/gst-helper.c - -diff --git a/configure.ac b/configure.ac -index 4825afa..9125871 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -141,6 +141,13 @@ AM_COND_IF([ENABLE_HCITOP], [ - PKG_CHECK_MODULES([NCURSES], [ncurses]) - ]) - -+AC_ARG_ENABLE([gsthelper], -+ [AS_HELP_STRING([--enable-gsthelper], [enable building of gsthelper tool])]) -+AM_CONDITIONAL([ENABLE_GSTHELPER], [test "x$enable_gsthelper" = "xyes"]) -+AM_COND_IF([ENABLE_GSTHELPER], [ -+ PKG_CHECK_MODULES([GST], [gstreamer-1.0 glib-2.0]) -+]) -+ - AC_ARG_ENABLE([test], - [AS_HELP_STRING([--enable-test], [enable unit test])]) - AM_CONDITIONAL([ENABLE_TEST], [test "x$enable_test" = "xyes"]) -diff --git a/utils/Makefile.am b/utils/Makefile.am -index 9057f2c..9790474 100644 ---- a/utils/Makefile.am -+++ b/utils/Makefile.am -@@ -47,3 +47,23 @@ hcitop_LDADD = \ - @LIBBSD_LIBS@ \ - @NCURSES_LIBS@ - endif -+ -+if ENABLE_GSTHELPER -+bin_PROGRAMS += bluealsa-gst-helper -+bluealsa_gst_helper_SOURCES = \ -+ ../src/shared/dbus-client.c \ -+ ../src/shared/ffb.c \ -+ ../src/shared/log.c \ -+ gst-helper.c -+bluealsa_gst_helper_CFLAGS = \ -+ -I$(top_srcdir)/src \ -+ @ALSA_CFLAGS@ \ -+ @BLUEZ_CFLAGS@ \ -+ @DBUS1_CFLAGS@ \ -+ @GST_CFLAGS@ -+bluealsa_gst_helper_LDADD = \ -+ @ALSA_LIBS@ \ -+ @BLUEZ_LIBS@ \ -+ @DBUS1_LIBS@ \ -+ @GST_LIBS@ -+endif -diff --git a/utils/gst-helper.c b/utils/gst-helper.c -new file mode 100644 -index 0000000..de1d47c ---- /dev/null -+++ b/utils/gst-helper.c -@@ -0,0 +1,432 @@ -+/* Bluez-Alsa PipeWire integration GStreamer helper -+ * -+ * Copyright © 2016-2019 Arkadiusz Bokowy -+ * Copyright © 2019 Collabora Ltd. -+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com> -+ * -+ * SPDX-License-Identifier: MIT -+ */ -+ -+#if HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#include <errno.h> -+#include <getopt.h> -+#include <poll.h> -+#include <pthread.h> -+#include <signal.h> -+#include <stdbool.h> -+#include <stdint.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#include <unistd.h> -+ -+#include <bluetooth/bluetooth.h> -+#include <dbus/dbus.h> -+#include <gst/gst.h> -+ -+#include "shared/dbus-client.h" -+#include "shared/defs.h" -+#include "shared/ffb.h" -+#include "shared/log.h" -+ -+struct worker { -+ /* used BlueALSA PCM device */ -+ struct ba_pcm ba_pcm; -+ /* file descriptor of PCM FIFO */ -+ int ba_pcm_fd; -+ /* file descriptor of PCM control */ -+ int ba_pcm_ctrl_fd; -+ /* the gstreamer pipelines (sink & source) */ -+ GstElement *pipeline[2]; -+ /* the queue & pwaudiosink of the sink pipeline */ -+ GstElement *queue; -+ GstElement *pwelem; -+}; -+ -+static struct ba_dbus_ctx dbus_ctx; -+static GHashTable *workers; -+static bool main_loop_on = true; -+ -+static void -+main_loop_stop(int sig) -+{ -+ /* Call to this handler restores the default action, so on the -+ * second call the program will be forcefully terminated. */ -+ -+ struct sigaction sigact = { .sa_handler = SIG_DFL }; -+ sigaction(sig, &sigact, NULL); -+ -+ main_loop_on = false; -+} -+ -+static GstBusSyncReply -+bus_sync_handler(GstBus *bus, GstMessage *message, gpointer user_data) -+{ -+ struct worker *w = user_data; -+ GstState s; -+ -+ switch (GST_MESSAGE_TYPE (message)) { -+ case GST_MESSAGE_REQUEST_STATE: -+ gst_message_parse_request_state (message, &s); -+ -+ debug ("corked: %d", (s == GST_STATE_PAUSED)); -+ -+ /* drop queue data when corked */ -+ g_object_set (w->queue, -+ "leaky", (s == GST_STATE_PAUSED) ? 2 /* downstream */ : 0 /* no */, -+ NULL); -+ gst_element_set_state (w->pwelem, s); -+ -+ /* flush the queue when resuming */ -+ if (s == GST_STATE_PLAYING) { -+ gst_element_send_event (w->queue, gst_event_new_flush_start ()); -+ gst_element_send_event (w->queue, gst_event_new_flush_stop (FALSE)); -+ } -+ break; -+ default: -+ break; -+ } -+ -+ gst_message_unref (message); -+ return GST_BUS_DROP; -+} -+ -+static int -+worker_start_pipeline(struct worker *w, int id, int mode, int profile) -+{ -+ GError *gerr = NULL; -+ DBusError err = DBUS_ERROR_INIT; -+ const gchar * role = NULL; -+ -+ if (w->pipeline[id]) -+ return 0; -+ -+ if (!bluealsa_dbus_pcm_open(&dbus_ctx, w->ba_pcm.pcm_path, mode, -+ &w->ba_pcm_fd, &w->ba_pcm_ctrl_fd, &err)) { -+ error("Couldn't open PCM: %s", err.message); -+ dbus_error_free(&err); -+ goto fail; -+ } -+ -+ if (mode == BA_PCM_FLAG_SINK) { -+ debug("sink start"); -+ w->pipeline[id] = gst_parse_launch( -+ /* add a silent live source to ensure a perfect live stream on the -+ output, even when the bt device is not sending or has gaps; -+ this also effectively changes the clock to be the system clock, -+ which is the same clock used by bluez-alsa on the sending side */ -+ "audiotestsrc is-live=true wave=silence ! capsfilter name=capsf " -+ "! audiomixer name=m " -+ /* mix the input from bluez-alsa using fdsrc; rawaudioparse -+ is necessary to convert bytes to time and align the buffers */ -+ "fdsrc name=fdelem do-timestamp=true ! capsfilter name=capsf2 " -+ "! rawaudioparse use-sink-caps=true ! m. " -+ /* take the mixer output, convert and push to pipewire */ -+ "m.src ! capsfilter name=capsf3 ! audioconvert ! audioresample " -+ "! audio/x-raw,format=F32LE,rate=48000 ! identity sync=true " -+ "! queue name=queue leaky=no max-size-time=0 max-size-buffers=0 max-size-bytes=192000 " -+ "! pwaudiosink name=pwelem", -+ &gerr); -+ -+ /* a2dp is for music, sco is for calls */ -+ role = (profile == BA_PCM_FLAG_PROFILE_A2DP) ? "Multimedia" : "Communication"; -+ } -+ else if (mode == BA_PCM_FLAG_SOURCE && profile == BA_PCM_FLAG_PROFILE_SCO) { -+ debug("source start"); -+ w->pipeline[id] = gst_parse_launch( -+ /* read from pipewire and put the buffers on a leaky queue, which -+ will essentially allow pwaudiosrc to continue working while -+ the fdsink is blocked (when there is no phone call in progress). -+ 9600 bytes = 50ms @ F32LE/1ch/48000 -+ */ -+ "pwaudiosrc name=pwelem ! audio/x-raw,format=F32LE,rate=48000 " -+ "! queue name=queue leaky=downstream max-size-time=0 max-size-buffers=0 max-size-bytes=9600 " -+ "! audioconvert ! audioresample ! capsfilter name=capsf " -+ "! fdsink name=fdelem", &gerr); -+ -+ role = "Communication"; -+ } -+ -+ if (gerr) { -+ error("Failed to start pipeline: %s", gerr->message); -+ g_error_free(gerr); -+ goto fail; -+ } -+ -+ if (w->pipeline[id]) { -+ g_autofree gchar *capsstr = NULL; -+ g_autoptr (GstElement) fdelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "fdelem"); -+ g_autoptr (GstElement) pwelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "pwelem"); -+ g_autoptr (GstElement) queue = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "queue"); -+ g_autoptr (GstElement) capsf = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf"); -+ g_autoptr (GstElement) capsf2 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf2"); -+ g_autoptr (GstElement) capsf3 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf3"); -+ g_autoptr (GstCaps) caps = gst_caps_new_simple("audio/x-raw", -+ "format", G_TYPE_STRING, "S16LE", -+ "layout", G_TYPE_STRING, "interleaved", -+ "channels", G_TYPE_INT, w->ba_pcm.channels, -+ "rate", G_TYPE_INT, w->ba_pcm.sampling, -+ NULL); -+ g_autoptr (GstStructure) stream_props = gst_structure_new("props", -+ "media.role", G_TYPE_STRING, role, -+ "bluealsa.profile", G_TYPE_STRING, -+ (profile == BA_PCM_FLAG_PROFILE_SCO) ? "sco" : "a2dp", -+ NULL); -+ -+ g_object_set(capsf, "caps", caps, NULL); -+ if (capsf2) -+ g_object_set(capsf2, "caps", caps, NULL); -+ if (capsf3) -+ g_object_set(capsf3, "caps", caps, NULL); -+ -+ capsstr = gst_caps_to_string (caps); -+ debug(" caps: %s", capsstr); -+ -+ g_object_set(fdelem, "fd", w->ba_pcm_fd, NULL); -+ g_object_set(pwelem, "stream-properties", stream_props, NULL); -+ -+ if (mode == BA_PCM_FLAG_SINK) { -+ g_autoptr (GstBus) bus = gst_pipeline_get_bus(GST_PIPELINE(w->pipeline[id])); -+ gst_bus_set_sync_handler(bus, bus_sync_handler, w, NULL); -+ w->queue = queue; -+ w->pwelem = pwelem; -+ } -+ -+ gst_element_set_state(w->pipeline[id], GST_STATE_PLAYING); -+ } -+ -+ return 0; -+fail: -+ g_clear_object(&w->pipeline[id]); -+ return -1; -+} -+ -+static int -+worker_start(struct worker *w) -+{ -+ int mode = w->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK); -+ int profile = w->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO); -+ /* human-readable BT address */ -+ char addr[18]; -+ -+ g_return_val_if_fail (profile != 0 && profile != (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO), -1); -+ -+ ba2str(&w->ba_pcm.addr, addr); -+ debug("%p: worker start addr:%s, mode:0x%x, profile:0x%x", w, addr, mode, profile); -+ -+ if (mode & BA_PCM_FLAG_SINK) -+ worker_start_pipeline(w, 0, BA_PCM_FLAG_SINK, profile); -+ if (mode & BA_PCM_FLAG_SOURCE) -+ worker_start_pipeline(w, 1, BA_PCM_FLAG_SOURCE, profile); -+} -+ -+static int -+worker_stop(struct worker *w) -+{ -+ debug("stop worker %p", w); -+ if (w->pipeline[0]) { -+ gst_element_set_state(w->pipeline[0], GST_STATE_NULL); -+ g_clear_object(&w->pipeline[0]); -+ } -+ if (w->pipeline[1]) { -+ gst_element_set_state(w->pipeline[1], GST_STATE_NULL); -+ g_clear_object(&w->pipeline[1]); -+ } -+ if (w->ba_pcm_fd != -1) { -+ close(w->ba_pcm_fd); -+ w->ba_pcm_fd = -1; -+ } -+ if (w->ba_pcm_ctrl_fd != -1) { -+ close(w->ba_pcm_ctrl_fd); -+ w->ba_pcm_ctrl_fd = -1; -+ } -+ return 0; -+} -+ -+static int -+supervise_pcm_worker(struct worker *worker) -+{ -+ if (worker == NULL) -+ return -1; -+ -+ /* no mode? */ -+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK) == 0) -+ goto stop; -+ -+ /* no profile? */ -+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO) == 0) -+ goto stop; -+ -+ /* check whether SCO has selected codec */ -+ if (worker->ba_pcm.flags & BA_PCM_FLAG_PROFILE_SCO && -+ worker->ba_pcm.codec == 0) { -+ debug("Skipping SCO with codec not selected"); -+ goto stop; -+ } -+ -+start: -+ return worker_start(worker); -+stop: -+ return worker_stop(worker); -+} -+ -+static void -+worker_new(struct ba_pcm *pcm) -+{ -+ struct worker *w = g_slice_new0 (struct worker); -+ memcpy(&w->ba_pcm, pcm, sizeof(struct ba_pcm)); -+ w->ba_pcm_fd = -1; -+ w->ba_pcm_ctrl_fd = -1; -+ g_hash_table_insert(workers, w->ba_pcm.pcm_path, w); -+ supervise_pcm_worker(w); -+} -+ -+static DBusHandlerResult -+dbus_signal_handler(DBusConnection *conn, DBusMessage *message, void *data) -+{ -+ (void)conn; -+ (void)data; -+ -+ const char *path = dbus_message_get_path(message); -+ const char *interface = dbus_message_get_interface(message); -+ const char *signal = dbus_message_get_member(message); -+ -+ DBusMessageIter iter; -+ struct worker *worker; -+ -+ if (strcmp(interface, BLUEALSA_INTERFACE_MANAGER) == 0) { -+ -+ if (strcmp(signal, "PCMAdded") == 0) { -+ struct ba_pcm pcm; -+ if (!dbus_message_iter_init(message, &iter) || -+ !bluealsa_dbus_message_iter_get_pcm(&iter, NULL, &pcm)) { -+ error("Couldn't add new PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ worker_new(&pcm); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+ if (strcmp(signal, "PCMRemoved") == 0) { -+ if (!dbus_message_iter_init(message, &iter) || -+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) { -+ error("Couldn't remove PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ dbus_message_iter_get_basic(&iter, &path); -+ g_hash_table_remove(workers, path); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+ } -+ -+ if (strcmp(interface, DBUS_INTERFACE_PROPERTIES) == 0) { -+ worker = g_hash_table_lookup(workers, path); -+ if (!worker) -+ goto fail; -+ if (!dbus_message_iter_init(message, &iter) || -+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) { -+ error("Couldn't update PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ dbus_message_iter_get_basic(&iter, &interface); -+ dbus_message_iter_next(&iter); -+ if (!bluealsa_dbus_message_iter_get_pcm_props(&iter, NULL, &worker->ba_pcm)) -+ goto fail; -+ supervise_pcm_worker(worker); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+fail: -+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -+} -+ -+static void -+destroy_worker(void *worker) -+{ -+ struct worker *w = worker; -+ worker_stop(w); -+ g_slice_free(struct worker, w); -+} -+ -+int -+main(int argc, char *argv[]) -+{ -+ int ret = EXIT_SUCCESS; -+ -+ log_open(argv[0], false, false); -+ gst_init(&argc, &argv); -+ dbus_threads_init_default(); -+ -+ DBusError err = DBUS_ERROR_INIT; -+ if (!bluealsa_dbus_connection_ctx_init(&dbus_ctx, BLUEALSA_SERVICE, &err)) { -+ error("Couldn't initialize D-Bus context: %s", err.message); -+ return EXIT_FAILURE; -+ } -+ -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMAdded", NULL); -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMRemoved", NULL); -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged", -+ "arg0='"BLUEALSA_INTERFACE_PCM"'"); -+ -+ if (!dbus_connection_add_filter(dbus_ctx.conn, dbus_signal_handler, NULL, NULL)) { -+ error("Couldn't add D-Bus filter: %s", err.message); -+ return EXIT_FAILURE; -+ } -+ -+ workers = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, destroy_worker); -+ -+ { -+ struct ba_pcm *pcms = NULL; -+ size_t pcms_count = 0, i; -+ -+ if (!bluealsa_dbus_get_pcms(&dbus_ctx, &pcms, &pcms_count, &err)) -+ warn("Couldn't get BlueALSA PCM list: %s", err.message); -+ -+ for (i = 0; i < pcms_count; i++) { -+ worker_new(&pcms[i]); -+ } -+ -+ free(pcms); -+ } -+ -+ struct sigaction sigact = { .sa_handler = main_loop_stop }; -+ sigaction(SIGTERM, &sigact, NULL); -+ sigaction(SIGINT, &sigact, NULL); -+ -+ /* Ignore SIGPIPE, which may be received when writing to the bluealsa -+ socket when it is closed on the remote end */ -+ signal(SIGPIPE, SIG_IGN); -+ -+ debug("Starting main loop"); -+ while (main_loop_on) { -+ -+ struct pollfd pfds[10]; -+ nfds_t pfds_len = ARRAYSIZE(pfds); -+ -+ if (!bluealsa_dbus_connection_poll_fds(&dbus_ctx, pfds, &pfds_len)) { -+ error("Couldn't get D-Bus connection file descriptors"); -+ ret = EXIT_FAILURE; -+ goto out; -+ } -+ -+ if (poll(pfds, pfds_len, -1) == -1 && -+ errno == EINTR) -+ continue; -+ -+ if (bluealsa_dbus_connection_poll_dispatch(&dbus_ctx, pfds, pfds_len)) -+ while (dbus_connection_dispatch(dbus_ctx.conn) == DBUS_DISPATCH_DATA_REMAINS) -+ continue; -+ -+ } -+ -+out: -+ g_hash_table_unref(workers); -+ return ret; -+} --- -2.24.0 - diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service deleted file mode 100644 index 495ab6222..000000000 --- a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Bluetooth audio helper for user %i -Requires=pipewire@%i.socket bluez-alsa.service -After=pipewire@%i.socket bluez-alsa.service - -[Service] -Type=simple -Restart=on-failure -ExecStart=/usr/bin/bluealsa-gst-helper - -Environment=XDG_RUNTIME_DIR=/run/user/%i -Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus - -User=%i -Slice=user-%i.slice -SupplementaryGroups=audio -UMask=0077 -CapabilityBoundingSet= diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend deleted file mode 100644 index 2f9699a83..000000000 --- a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend +++ /dev/null @@ -1,35 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI += "\ - file://0001-utils-add-a-gstreamer-helper-application-for-interco.patch \ - file://bluealsa-gst-helper@.service \ - " - -PACKAGECONFIG += "gsthelper" -PACKAGECONFIG[gsthelper] = "--enable-gsthelper, --disable-gsthelper, gstreamer1.0" - -do_install_append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - # install the service file - mkdir -p ${D}${systemd_system_unitdir}/ - install -m 0644 ${WORKDIR}/bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/bluealsa-gst-helper@.service - - # enable the helper to start together with afm-user-session - mkdir -p ${D}${systemd_system_unitdir}/afm-user-session@.target.wants - ln -sf ../bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service - fi -} - -PACKAGES =+ "${PN}-pipewire" - -FILES_${PN}-pipewire = "\ - ${bindir}/bluealsa-gst-helper \ - ${systemd_system_unitdir}/bluealsa-gst-helper@.service \ - ${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service \ - " -RDEPENDS_${PN}-pipewire += "\ - bluez-alsa \ - pipewire \ - gstreamer1.0-plugins-base \ - gstreamer1.0-pipewire \ - " diff --git a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb index 4020f1e24..a20f8a4f7 100644 --- a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb +++ b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb @@ -9,9 +9,7 @@ PACKAGES = "\ " RDEPENDS_${PN} += "\ - agl-service-audiomixer \ pipewire \ pipewire-alsa \ gstreamer1.0-pipewire \ - bluez-alsa-pipewire \ " diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint index 4405f7b7a..afc4303eb 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint @@ -3,7 +3,6 @@ priority = 30 properties = [ { name = "media.class", value = "Audio/Sink" }, { name = "api.alsa.card.id", value = "ak4613" }, - { name = "api.alsa.pcm.device", value = "0" }, ] [endpoint] diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint index 0c7b20805..53f9d0df7 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint @@ -3,7 +3,6 @@ priority = 30 properties = [ { name = "media.class", value = "Audio/Sink" }, { name = "api.alsa.card.id", value = "rcarsound" }, - { name = "api.alsa.pcm.device", value = "0" }, ] [endpoint] diff --git a/meta-pipewire/scripts/run-yocto-check-layer.sh b/meta-pipewire/scripts/run-yocto-check-layer.sh new file mode 100755 index 000000000..15b4de0e1 --- /dev/null +++ b/meta-pipewire/scripts/run-yocto-check-layer.sh @@ -0,0 +1,35 @@ +#!/bin/bash +#set -x + +SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )" +echo $SCRIPTPATH +AGLROOT="$SCRIPTPATH/../../.." +POKYDIR="$AGLROOT/external/poky" +TMPROOT=`mktemp -d` + +rm -rf ${TMPROOT}/testbuild-ycl || true +mkdir -p ${TMPROOT}/testbuild-ycl +cd ${TMPROOT}/testbuild-ycl + +source $POKYDIR/oe-init-build-env . + +cat << EOF >> conf/local.conf +# just define defaults +AGL_FEATURES ?= "" +AGL_EXTRA_IMAGE_FSTYPES ?= "" + +# important settings imported from poky-agl.conf +# we do not import +DISTRO_FEATURES_append = " systemd smack" +DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" + +EOF + + +yocto-check-layer \ + -- \ + $AGLROOT/meta-agl/meta-pipewire + + +[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl diff --git a/meta-security/COPYING.MIT b/meta-security/COPYING.MIT deleted file mode 100644 index 89de35479..000000000 --- a/meta-security/COPYING.MIT +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/meta-security/README.md b/meta-security/README.md deleted file mode 100644 index 6a8024bc6..000000000 --- a/meta-security/README.md +++ /dev/null @@ -1,31 +0,0 @@ -This README file contains information on the contents of the -meta-security layer. - -Please see the corresponding sections below for details. - - -Dependencies -============ - -This layer depends on: - - URI: git://git.openembedded.org/bitbake - branch: master - - URI: git://git.openembedded.org/openembedded-core - layers: meta - branch: master - - URI: git://git.yoctoproject.org/meta-security - branch: master - - -Patches -======= - -Please submit any patches against the meta-security layer via gerrit -reviews. - -For discussion use the discussion mailing list -https://lists.automotivelinux.org/g/agl-dev-community - diff --git a/meta-security/conf/layer.conf b/meta-security/conf/layer.conf deleted file mode 100644 index 6024d2847..000000000 --- a/meta-security/conf/layer.conf +++ /dev/null @@ -1,14 +0,0 @@ -# We have a conf and classes directory, add to BBPATH -BBPATH =. "${LAYERDIR}:" - -# We have a packages directory, add to BBFILES -BBFILES += " ${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend \ - " - -# Must prioritize our rpm recipe over the default ones. -BBFILE_COLLECTIONS += "security-smack" -BBFILE_PATTERN_security-smack := "^${LAYERDIR}/" -BBFILE_PRIORITY_security-smack = "60" - -LAYERSERIES_COMPAT_security-smack = "dunfell" diff --git a/meta-security/recipes-kernel/linux/linux/audit.cfg b/meta-security/recipes-kernel/linux/linux/audit.cfg deleted file mode 100644 index 214dbe33f..000000000 --- a/meta-security/recipes-kernel/linux/linux/audit.cfg +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_AUDIT=y -CONFIG_AUDITSYSCALL=y diff --git a/meta-security/recipes-security/smacknet/files/smacknet b/meta-security/recipes-security/smacknet/files/smacknet deleted file mode 100644 index 3818d30ae..000000000 --- a/meta-security/recipes-security/smacknet/files/smacknet +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/python -# Copyright (c) 2012, 2013, Intel Corporation -# Copyright (c) 2009 David Wolinsky <davidiw@ufl.edu), University of Florida -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -import socket,fcntl, struct, thread -import os.path -import sys - -SMACKFS_LOAD="/sys/fs/smackfs/load2" -SMACKFS_NETLABEL="/sys/fs/smackfs/netlabel" -SIOCGIFADDR = 0x8915 -SIOCGIFNETMASK = 0x891b - -def get_ip_address(ifname): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - return fcntl.ioctl(s.fileno(), SIOCGIFADDR, - struct.pack('256s', ifname.encode("utf-8")))[20:24] - -def get_netmask(ifname): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - return fcntl.ioctl(s.fileno(), SIOCGIFNETMASK, - struct.pack('256s', ifname.encode("utf-8")))[20:24] - -def applynetlabeltags(interface, addr): - if not interface.startswith("lo"): - bmask = get_netmask(interface.encode("utf-8")) - prefix = bin(struct.unpack(">L", bmask)[0]).count("1") - tags = [ - addr+"/"+str(prefix)+" Network::Local\n", - "0.0.0.0/0 Network::Cloud\n", - "127.0.0.1/8 -CIPSO\n"] - smackfs_netlabel(tags) - -def loadnetlabelrules(): - rulesSystem = [ - "System Network::Cloud w\n", - "System Network::Local w\n", - "Network::Cloud System w\n", - "Network::Local System w\n"] - smackfs_load2(rulesSystem) - -def smackfs_load2 (rules): - with open(SMACKFS_LOAD, "w") as load2: - for rule in rules: - load2.write(rule) - -def smackfs_netlabel (tags): - for tag in tags: - with open(SMACKFS_NETLABEL, "w") as netlabel: - netlabel.write(tag) - -""" - Source of: Class ip monitor, and other functions named bellow. - Original author: David Wolinsky <davidiw@ufl.edu - Copied from: https://github.com/davidiw/Grid-Appliance/blob/master/scripts/ip_monitor.py - -""" - -"""4 byte alignment""" - -def align(inc): - diff = inc % 4 - return inc + ((4 - diff) % 4) - -class ifaddr: - """Parse an ifaddr packet""" - LOCAL = 2 - LABEL = 3 - - def __init__(self, packet): - self.family, self.prefixlen, self.flags, self.scope, self.index = \ - struct.unpack("BBBBI", packet[:8]) - -class rtattr: - """Parse a rtattr packet""" - GRP_IPV4_IFADDR = 0x10 - - NEWADDR = 20 - DELADDR = 21 - GETADDR = 22 - - def __init__(self, packet): - self.len, self.type = struct.unpack("HH", packet[:4]) - if self.type == ifaddr.LOCAL: - addr = struct.unpack("BBBB", packet[4:self.len]) - self.payload = "%s.%s.%s.%s" % (addr[0], addr[1], addr[2], addr[3]) - elif self.type == ifaddr.LABEL: - self.payload = packet[4:self.len].strip("\0") - else: - self.payload = packet[4:self.len] - -class netlink: - """Parse a netlink packet""" - REQUEST = 1 - ROOT = 0x100 - MATCH = 0x200 - DONE = 3 - - def __init__(self, packet): - self.msglen, self.msgtype, self.flags, self.seq, self.pid = \ - struct.unpack("IHHII", packet[:16]) - self.ifa = None - try: - self.ifa = ifaddr(packet[16:24]) - except: - return - - self.rtas = {} - pos = 24 - while pos < self.msglen: - try: - rta = rtattr(packet[pos:]) - except: - break - pos += align(rta.len) - self.rtas[rta.type] = rta.payload - -class ip_monitor: - def __init__(self, callback = None): - if callback == None: - callback = self.print_cb - self._callback = callback - - def print_cb(self, label, addr): - print (label + " => " + addr) - - def request_addrs(self, sock): - sock.send(struct.pack("IHHIIBBBBI", 24, rtattr.GETADDR, \ - netlink.REQUEST | netlink.ROOT | netlink.MATCH, 0, sock.getsockname()[0], \ - socket.AF_INET, 0, 0, 0, 0)) - - def start_thread(self): - thread.start_new_thread(self.run, ()) - - def run(self): - sock = socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, socket.NETLINK_ROUTE) - sock.bind((0, rtattr.GRP_IPV4_IFADDR)) - self.request_addrs(sock) - - while True: - data = sock.recv(4096) - pos = 0 - while pos < len(data): - nl = netlink(data[pos:]) - if nl.msgtype == netlink.DONE: - break - pos += align(nl.msglen) - if nl.msgtype != rtattr.NEWADDR: - continue - self._callback(nl.rtas[ifaddr.LABEL], nl.rtas[ifaddr.LOCAL]) - -def main(): - if not os.path.isfile(SMACKFS_LOAD): - print ("Smack not found.") - return -1 - loadnetlabelrules() - - ip_monitor(applynetlabeltags).run() - -if __name__ == "__main__": - main() diff --git a/meta-security/recipes-security/smacknet/files/smacknet.service b/meta-security/recipes-security/smacknet/files/smacknet.service deleted file mode 100644 index 218d8b896..000000000 --- a/meta-security/recipes-security/smacknet/files/smacknet.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=netlabels configuration for SMACK -Wants=network.target network-online.target -After=network.target network-online.target - -[Service] -TimeoutStartSec=0 -ExecStart=@BINDIR@/smacknet - -[Install] -WantedBy=multi-user.target diff --git a/meta-security/recipes-security/smacknet/smacknet.bb b/meta-security/recipes-security/smacknet/smacknet.bb deleted file mode 100644 index 250cdb132..000000000 --- a/meta-security/recipes-security/smacknet/smacknet.bb +++ /dev/null @@ -1,29 +0,0 @@ -#SMACKNET Description -SUMMARY = "Smack network labels configuration" -DESCRIPTION = "Provide service that will be labeling the network rules" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" -RDEPENDS_${PN} = "python" - -SRC_URI += "file://smacknet \ - file://smacknet.service \ - " -S = "${WORKDIR}" - -inherit systemd - -inherit features_check -REQUIRED_DISTRO_FEATURES = "smack" - -#netlabel configuration service -SYSTEMD_SERVICE_${PN} = "smacknet.service" -SYSTEMD_AUTO_ENABLE = "enable" -do_install(){ - install -d ${D}${bindir} - install -m 0551 ${WORKDIR}/smacknet ${D}${bindir} - - install -d -m 755 ${D}${systemd_unitdir}/system - install -m 644 ${WORKDIR}/smacknet.service ${D}${systemd_unitdir}/system - sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/smacknet.service -} - diff --git a/scripts/README-mkefi-agl.md b/scripts/README-mkefi-agl.md deleted file mode 100644 index 2262fb129..000000000 --- a/scripts/README-mkefi-agl.md +++ /dev/null @@ -1,18 +0,0 @@ -# Introduction - -This script will install the AGL distribution on a removable device to boot on Intel UEFI-based computer. - -In particular it can create a USB or SD bootable support for [MinnowBoard](www.minnowboard.org). - -Usage: mkefi-agl.sh [-v] IDSK_IMAGE REMOVABLE_DEVICE - -v: Verbose debug - HDDIMG: The DISK_IMAGE file generated by Yocto the efi disk from - Supported formats are .hddimg, .wic .wic.xz - REMOVABLE_DEVICE: The block device to write the image to, e.g. /dev/sdh -ex: - mkefi-agl.sh agl-demo-platform-intel-corei7-64.hddimg /dev/sdd - mkefi-agl.sh agl-demo-platform-intel-corei7-64.wic.xz /dev/sdd - -## Documentation - -[Additional documentation](https://wiki.automotivelinux.org/agl-distro/developer_resources_intel) diff --git a/templates/base/00_local.conf.agl.inc b/templates/base/00_local.conf.agl.inc index b49c44df6..d55cbef4b 100644 --- a/templates/base/00_local.conf.agl.inc +++ b/templates/base/00_local.conf.agl.inc @@ -6,6 +6,3 @@ DISTRO = "poky-agl" #see meta-agl/meta-agl-profile-core/conf/include/base-agl.inc require conf/include/base-agl.inc - -#see meta-agl/meta-app-framework/conf/include/agl-appfw-smack.inc -require conf/include/agl-appfw-smack.inc diff --git a/templates/base/99_local.conf.inc b/templates/base/99_local.conf.inc index c4f43998b..bbf1b2afa 100644 --- a/templates/base/99_local.conf.inc +++ b/templates/base/99_local.conf.inc @@ -4,7 +4,7 @@ # ARM 32bit 'medium' compiler (armv7thf instead of armv7ve) # (only use for CPUs <= cortex-a9 / w/o virt extension - e.g. cortex-a8) -# DISTRO_FEATURES_append = " agl-medium-arm-compiler" +# AGL_FEATURES_append = " agl-medium-arm-compiler" ###################### diff --git a/templates/base/bblayers.conf.sample b/templates/base/bblayers.conf.sample index 653f6dbe8..0dd28da03 100644 --- a/templates/base/bblayers.conf.sample +++ b/templates/base/bblayers.conf.sample @@ -24,27 +24,15 @@ YOCTO_LAYERS = " \ # with some automotive tools/libraries #----------------------------------------------------- AGL_CORE_LAYERS = " \ - ${METADIR}/meta-agl/meta-agl-profile-core \ - ${METADIR}/meta-agl/meta-agl-distro \ + ${METADIR}/meta-agl/meta-agl-core \ + ${METADIR}/meta-agl/meta-agl-core-test \ ${METADIR}/meta-agl/meta-agl-bsp \ " -AGL_APPFW_LAYERS = " \ - ${METADIR}/external/meta-security \ - ${METADIR}/external/meta-openembedded/meta-perl \ - ${METADIR}/meta-agl/meta-security \ - ${METADIR}/meta-agl/meta-app-framework \ - " - - # These are the direct dependencies of the AGL CORE Layers #--------------------------------------------------------- AGL_CORE_DEPENDENCY_LAYERS = " \ ${METADIR}/external/meta-openembedded/meta-oe \ - ${METADIR}/external/meta-openembedded/meta-multimedia \ - ${METADIR}/external/meta-openembedded/meta-networking \ - ${METADIR}/external/meta-openembedded/meta-python \ - ${METADIR}/external/meta-openembedded/meta-filesystems \ " #################### @@ -52,15 +40,13 @@ AGL_CORE_DEPENDENCY_LAYERS = " \ BBLAYERS ?= " \ ${AGL_CORE_DEPENDENCY_LAYERS} \ ${AGL_CORE_LAYERS} \ - ${AGL_APPFW_LAYERS} \ ${YOCTO_LAYERS} \ " BBLAYERS_NON_REMOVABLE ?= " \ ${METADIR}/external/poky/meta \ ${METADIR}/external/poky/meta-poky \ - ${METADIR}/meta-agl/meta-agl-profile-core \ - ${METADIR}/meta-agl/meta-agl-distro \ + ${METADIR}/meta-agl/meta-agl-core \ " diff --git a/templates/feature/agl-appfw-smack/50_bblayers.conf.inc b/templates/feature/agl-appfw-smack/50_bblayers.conf.inc new file mode 100644 index 000000000..5f6847a87 --- /dev/null +++ b/templates/feature/agl-appfw-smack/50_bblayers.conf.inc @@ -0,0 +1,9 @@ +AGL_APPFW_LAYERS = " \ + ${METADIR}/external/meta-security \ + ${METADIR}/external/meta-openembedded/meta-python \ + ${METADIR}/external/meta-openembedded/meta-networking \ + ${METADIR}/external/meta-openembedded/meta-perl \ + ${METADIR}/meta-agl/meta-app-framework \ + " + +BBLAYERS =+ "${AGL_APPFW_LAYERS}"
\ No newline at end of file diff --git a/templates/feature/agl-appfw-smack/50_local.conf.inc b/templates/feature/agl-appfw-smack/50_local.conf.inc index e69de29bb..8282a1cae 100644 --- a/templates/feature/agl-appfw-smack/50_local.conf.inc +++ b/templates/feature/agl-appfw-smack/50_local.conf.inc @@ -0,0 +1 @@ +require conf/include/agl-appfw-smack.inc diff --git a/templates/feature/agl-hmi-framework/50_local.conf.inc b/templates/feature/agl-hmi-framework/50_local.conf.inc index d251e183d..21fdf3abf 100644 --- a/templates/feature/agl-hmi-framework/50_local.conf.inc +++ b/templates/feature/agl-hmi-framework/50_local.conf.inc @@ -1,4 +1,4 @@ # In order to enable the hmi-framework features , # enables the following line: # -DISTRO_FEATURES_append = " agl-hmi-framework" +AGL_FEATURES_append = " agl-hmi-framework" diff --git a/templates/feature/agl-localdev/80_bblayers.conf.inc b/templates/feature/agl-localdev/80_bblayers.conf.inc new file mode 100644 index 000000000..d9bb9d070 --- /dev/null +++ b/templates/feature/agl-localdev/80_bblayers.conf.inc @@ -0,0 +1,3 @@ +# Local derivations during development, just add a layer in the folder meta-localdev +BBLAYERS =+ "${@'${METADIR}/meta-localdev' if os.path.exists('${METADIR}/meta-localdev') else ''}" + diff --git a/templates/feature/agl-localdev/80_local.conf.inc b/templates/feature/agl-localdev/80_local.conf.inc new file mode 100644 index 000000000..6c9213512 --- /dev/null +++ b/templates/feature/agl-localdev/80_local.conf.inc @@ -0,0 +1,2 @@ +# (weak) include userspecific local.dev.inc +include local.dev.inc diff --git a/templates/feature/agl-localdev/README_feature_agl-localdev.md b/templates/feature/agl-localdev/README_feature_agl-localdev.md new file mode 100644 index 000000000..111ae4ec0 --- /dev/null +++ b/templates/feature/agl-localdev/README_feature_agl-localdev.md @@ -0,0 +1,9 @@ +--- +description: enable local layer for development purposes +authors: Stéphane Desneux <stephane.desneux@iot.bzh> +--- + +### Feature agl-localdev + +Adds a local layer named "meta-localdev" in meta directory and a local.dev.inc conf file if present. + diff --git a/templates/feature/agl-netboot/50_bblayers.conf.inc b/templates/feature/agl-netboot/50_bblayers.conf.inc index 3d2ed6460..80ace82d4 100644 --- a/templates/feature/agl-netboot/50_bblayers.conf.inc +++ b/templates/feature/agl-netboot/50_bblayers.conf.inc @@ -1 +1,2 @@ -BBLAYERS =+ "${METADIR}/meta-agl/meta-netboot" +BBLAYERS =+ " ${METADIR}/meta-agl/meta-netboot \ + " diff --git a/templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc b/templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc deleted file mode 100644 index f1aef074d..000000000 --- a/templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-cluster-qt5 \ -" diff --git a/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md b/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md deleted file mode 100644 index 095a8db18..000000000 --- a/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -description: Feature agl-profile-cluster-qt5 -authors: Scott Murray <scott.murray@konsulko.com> ---- - -### Feature agl-profile-cluster-qt5 - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md* - -#### Dependent features pulled by agl-profile-cluster-qt5 - -The following features are pulled: - -* agl-profile-graphical-qt5 - diff --git a/templates/feature/agl-profile-cluster-qt5/included.dep b/templates/feature/agl-profile-cluster-qt5/included.dep deleted file mode 100644 index 21b1fa6bc..000000000 --- a/templates/feature/agl-profile-cluster-qt5/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-profile-graphical-qt5 diff --git a/templates/feature/agl-profile-cluster/50_bblayers.conf.inc b/templates/feature/agl-profile-cluster/50_bblayers.conf.inc deleted file mode 100644 index b430dc7db..000000000 --- a/templates/feature/agl-profile-cluster/50_bblayers.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-cluster \ -" diff --git a/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md b/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md deleted file mode 100644 index 544dc7c8e..000000000 --- a/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -description: Feature agl-profile-cluster -authors: Scott Murray <scott.murray@konsulko.com> ---- - -### Feature agl-profile-cluster - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md* - -#### Dependent features pulled by agl-profile-cluster - -The following features are pulled: - -* agl-profile-graphical - diff --git a/templates/feature/agl-profile-cluster/included.dep b/templates/feature/agl-profile-cluster/included.dep deleted file mode 100644 index 032609b8a..000000000 --- a/templates/feature/agl-profile-cluster/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-profile-graphical diff --git a/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc deleted file mode 100644 index a35f93fb5..000000000 --- a/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc +++ /dev/null @@ -1,6 +0,0 @@ - -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-graphical-html5 \ - ${METADIR}/external/meta-python2 \ - " - diff --git a/templates/feature/agl-profile-graphical-html5/50_local.conf.inc b/templates/feature/agl-profile-graphical-html5/50_local.conf.inc deleted file mode 100644 index 0b2d70028..000000000 --- a/templates/feature/agl-profile-graphical-html5/50_local.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ - -IMAGE_INSTALL_append = " packagegroup-agl-profile-graphical-html5" - diff --git a/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md b/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md deleted file mode 100644 index dc00f94c2..000000000 --- a/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -description: Feature agl-profile-graphical-html5 -authors: Jacobo Aragunde Pérez <jaragunde@igalia.com> ---- - -### Feature agl-profile-graphical-html5 - -Packages required to run web applications in AGL. The provided image agl-image-graphical-html5 includes the minimum set of packages required for this purpose. diff --git a/templates/feature/agl-profile-graphical-html5/included.dep b/templates/feature/agl-profile-graphical-html5/included.dep deleted file mode 100644 index 032609b8a..000000000 --- a/templates/feature/agl-profile-graphical-html5/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-profile-graphical diff --git a/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc deleted file mode 100644 index 960267908..000000000 --- a/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc +++ /dev/null @@ -1,9 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-graphical-qt5 \ -" - -# These are the dependencies -#--------------------------- -BBLAYERS =+ " \ - ${METADIR}/external/meta-qt5 \ -" diff --git a/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md b/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md deleted file mode 100644 index 387de2ca4..000000000 --- a/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -description: Feature agl-profile-graphical-qt5 -authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org> ---- - -### Feature agl-profile-graphical-qt5 - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md* - -#### Dependent features pulled by agl-profile-graphical-qt5 - -The following features are pulled: - -* agl-profile-graphical - diff --git a/templates/feature/agl-profile-graphical-qt5/included.dep b/templates/feature/agl-profile-graphical-qt5/included.dep deleted file mode 100644 index 5b54430da..000000000 --- a/templates/feature/agl-profile-graphical-qt5/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-profile-graphical
\ No newline at end of file diff --git a/templates/feature/agl-profile-graphical/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical/50_bblayers.conf.inc deleted file mode 100644 index 44b0885dc..000000000 --- a/templates/feature/agl-profile-graphical/50_bblayers.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-graphical \ -" diff --git a/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md b/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md deleted file mode 100644 index 594d047e7..000000000 --- a/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: Feature agl-profile-graphical -authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org> ---- - -### Feature agl-profile-graphical - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md* - diff --git a/templates/feature/agl-profile-hud/50_bblayers.conf.inc b/templates/feature/agl-profile-hud/50_bblayers.conf.inc deleted file mode 100644 index 047383710..000000000 --- a/templates/feature/agl-profile-hud/50_bblayers.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-hud \ -" diff --git a/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md b/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md deleted file mode 100644 index b4387c129..000000000 --- a/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: Feature agl-profile-hud -authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org> ---- - -### Feature agl-profile-hud - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md* - diff --git a/templates/feature/agl-profile-telematics/50_bblayers.conf.inc b/templates/feature/agl-profile-telematics/50_bblayers.conf.inc deleted file mode 100644 index 874b438f0..000000000 --- a/templates/feature/agl-profile-telematics/50_bblayers.conf.inc +++ /dev/null @@ -1,3 +0,0 @@ -BBLAYERS =+ " \ - ${METADIR}/meta-agl/meta-agl-profile-telematics \ -" diff --git a/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md b/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md deleted file mode 100644 index 6abcd5d24..000000000 --- a/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: Feature agl-profile-telematics -authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org> ---- - -### Feature agl-profile-telematics - -*Description is missing - please complete file meta-agl/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md* - diff --git a/templates/feature/agl-weston-remoting/included.dep b/templates/feature/agl-weston-remoting/included.dep index 032609b8a..82639da07 100644 --- a/templates/feature/agl-weston-remoting/included.dep +++ b/templates/feature/agl-weston-remoting/included.dep @@ -1 +1 @@ -agl-profile-graphical +agl-demo |