Squashed 'import-layers/meta-raspberrypi/' content from commit 2745399

Change-Id: I8a89d81813dea98209d089ef500a403ea4da5d9d
git-subtree-dir: import-layers/meta-raspberrypi
git-subtree-split: 2745399f75d7564fcc586d0365ff73be47849d0e
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/import-layers/meta-raspberrypi/.gitignore b/import-layers/meta-raspberrypi/.gitignore
new file mode 100644
index 0000000..bd5616a
--- /dev/null
+++ b/import-layers/meta-raspberrypi/.gitignore
@@ -0,0 +1,5 @@
+build*
+*~
+.*.swp
+*.orig
+*.rej
diff --git a/import-layers/meta-raspberrypi/COPYING.MIT b/import-layers/meta-raspberrypi/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-raspberrypi/COPYING.MIT
@@ -0,0 +1,17 @@
+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/import-layers/meta-raspberrypi/README b/import-layers/meta-raspberrypi/README
new file mode 100644
index 0000000..c39f9ed
--- /dev/null
+++ b/import-layers/meta-raspberrypi/README
@@ -0,0 +1,349 @@
+Quick links
+===========
+Git repository web frontend:
+    http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/
+Mailing list (yocto mailing list):
+    yocto@yoctoproject.org
+Issues management (redmine):
+    http://redmine.gherzan.ro/projects/meta-raspberrypi
+
+
+Contents:
+=========
+1. Description
+2. Yocto BSP Layer - Raspberry Pi
+    2.A. How to use it
+    2.B. Images
+3. Optional build configuration
+    3.A. Compressed deployed files
+    3.B. GPU memory
+    3.C. Add purchased license codecs
+    3.D. Disable overscan
+    3.E. Set overclocking options
+    3.F. Video camera support with V4L2 drivers
+    3.G. Enable offline compositing support
+    3.H. Enable kgdb over console support
+    3.I. Boot to U-Boot
+    3.J. Image with Initramfs
+    3.K. Device tree support
+    3.L. Enable SPI bus
+    3.M. Enable I2C
+    3.N. Enable PiTFT support
+    3.O. Enable UART support
+4. Extra apps
+    4.A. omxplayer
+5. Board Configuration
+    5.A. Audio Routing
+6. Source code and mirrors
+7. Contribution
+    7.A. Mailing List
+    7.B. Redmine
+8. Maintainers
+
+
+1. Description
+==============
+
+This is the general hardware specific BSP overlay for the RaspberryPi device.
+
+More information can be found at:
+                   http://www.raspberrypi.org/ (Official Site)
+
+The core BSP part of meta-raspberrypi should work with different
+OpenEmbedded/Yocto distributions and layer stacks, such as:
+* Distro-less (only with OE-Core).
+* Angstrom.
+* Yocto/Poky (main focus of testing).
+
+2. Yocto BSP Layer - RaspberryPi
+================================
+
+This layer depends on:
+
+URI: git://git.yoctoproject.org/poky
+branch: master
+revision: HEAD
+
+URI: git://git.openembedded.org/meta-openembedded
+layers: meta-oe, meta-multimedia
+branch: master
+revision: HEAD
+
+2.A. How to use it
+==================
+a. source poky/oe-init-build-env rpi-build
+b. Add needed layer to bblayers.conf:
+    - meta-raspberrypi
+c. Set MACHINE in local.conf to one of the supported boards:
+    - raspberrypi
+    - raspberrypi0
+    - raspberrypi2
+    - raspberrypi3
+d. bitbake rpi-hwup-image
+e. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used)
+f. Boot your RPI.
+
+2.B. Images
+-===========
+* rpi-hwup-image
+    Hardware up image
+* rpi-basic-image
+    Based on rpi-hwup-image with some added features (ex: splash)
+* rpi-test-image
+    Image based on rpi-basic-image which includes most of the packages in this
+    layer and some media samples.
+
+3. Optional build configuration
+===============================
+
+There are a set of ways in which a user can influence different paramenters of the build.
+We list here the ones that are closely related to this BSP or specific to it. For the rest
+please check: http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html
+
+3.A. Compressed deployed files
+==============================
+1. Overwrite IMAGE_FSTYPES in local.conf
+    IMAGE_FSTYPES = "tar.bz2 ext3.xz"
+2. Overwrite SDIMG_ROOTFS_TYPE in local.conf
+    SDIMG_ROOTFS_TYPE = "ext3.xz"
+3. Overwrite SDIMG_COMPRESSION in local.conf
+    SDIMG_COMPRESSION = "xz"
+*Accommodate the values above to your own needs (ex: ext3 / ext4).
+
+3.B. GPU memory
+===============
+Variable    : Details
+GPU_MEM     : GPU memory in megabyte. Sets the memory split between the ARM and
+              GPU. ARM gets the remaining memory. Min 16. Default 64.
+GPU_MEM_256 : GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by the
+              512MB RP. Overrides gpu_mem. Max 192. Default not set.
+GPU_MEM_512 : GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by the
+              256MB RP. Overrides gpu_mem. Max 448. Default not set.
+GPU_MEM_1024: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by the
+              256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
+
+3.C. Add purchased license codecs
+=================================
+To add you own licenses use variables KEY_DECODE_MPG2 and KEY_DECODE_WVC1 in
+local.conf. Example:
+KEY_DECODE_MPG2 = "12345678"
+KEY_DECODE_WVC1 = "12345678"
+You can supply more licenses separated by comma. Example:
+KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321"
+
+3.D. Disable overscan
+=====================
+By default the GPU adds a black border around the video output to compensate for
+TVs which cut off part of the image. To disable this set this variable in
+local.conf:
+DISABLE_OVERSCAN = "1"
+
+3.E. Set overclocking options
+=============================
+The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo
+Mode" is officially supported by the raspbery and does not void warranty.
+Check the config.txt for a detailed description of options and modes. Example:
+# Turbo mode
+ARM_FREQ = "1000"
+CORE_FREQ = "500"
+SDRAM_FREQ = "500"
+OVER_VOLTAGE = "6"
+
+3.F. Video camera support with V4L2 drivers
+===========================================
+Set this variable to enable support for the video camera (Linux 3.12.4+ required)
+VIDEO_CAMERA = "1"
+
+3.G. Enable offline compositing support
+=======================================
+Set this variable to enable support for dispmanx offline compositing
+DISMANX_OFFLINE = "1"
+
+This will enable the firmware to fall back to off-line compositing of
+Dispmanx elements. Normally the compositing is done on-line, during scanout,
+but cannot handle too many elements. With off-line enabled, an off-screen
+buffer is allocated for compositing. When scene complexity (number and sizes
+of elements) is high, compositing will happen off-line into the buffer.
+
+Heavily recommended for Wayland/Weston.
+
+See: http://wayland.freedesktop.org/raspberrypi.html
+
+3.H. Enable kgdb over console support
+=====================================
+To add the kdbg over console (kgdboc) parameter to the kernel command line,
+set this variable in local.conf:
+ENABLE_KGDB = "1"
+
+3.I. Boot to U-Boot
+===================
+To have u-boot load kernel image, set in your local.conf
+KERNEL_IMAGETYPE = "uImage"
+
+This will make kernel.img be u-boot image which will load uImage.
+By default, kernel.img is the actual kernel image (ex. Image).
+
+3.J. Image with Initramfs
+=========================
+To build an initramfs image :
+    * Set this 3 kernel variables (in linux-raspberrypi.inc for example)
+        - kernel_configure_variable BLK_DEV_INITRD y
+        - kernel_configure_variable INITRAMFS_SOURCE ""
+        - kernel_configure_variable RD_GZIP y
+    * Set the yocto variables (in linux-raspberrypi.inc for example)
+        - INITRAMFS_IMAGE = "<a name for your initramfs image>"
+        - INITRAMFS_IMAGE_BUNDLE = "1"
+    * Set the meta-rasberrypi variable (in raspberrypi.conf for example)
+        - KERNEL_INITRAMFS = "-initramfs"
+
+3.K. Device tree support
+=========================
+Device tree for RPi is only supported when using linux-raspberrypi 3.18+
+kernels.
+
+    * Set KERNEL_DEVICETREE (in conf/machine/raspberrypi.conf)
+        - the trailer is added to the kernel image before kernel install task.
+          While creating the SDCard image, this modified kernel is put on
+          boot partition (as kernel.img) as well as DeviceTree blobs (.dtb files).
+
+NOTE: KERNEL_DEVICETREE is default enabled for kernel >= 3.18 and always disabled for
+      older kernel versions.
+
+3.L. Enable SPI bus
+====================
+When using device tree kernels, set this variable to enable the SPI bus
+ENABLE_SPI_BUS = "1"
+
+3.M. Enable I2C
+===============
+When using device tree kernels, set this variable to enable I2C
+ENABLE_I2C = "1"
+
+3.N. Enable PiTFT support
+=========================
+Basic support for using PiTFT screens can be enabled by adding
+below in local.conf:
+
+MACHINE_FEATURES += "pitft"
+  - This will enable SPI bus and i2c device-trees, it will also setup
+    framebuffer for console and x server on PiTFT.
+
+NOTE: To get this working the overlay for the PiTFT model must be build,
+      added and specified as well (dtoverlay=<driver> in config.txt)
+
+Below is a list of currently supported PiTFT models in meta-raspberrypi,
+the modelname should be added as a MACHINE_FEATURES in local.conf like below:
+    - MACHINE_FEATURES += "pitft <modelname>"
+
+List of currently supported models:
+    - pitft22
+    - pitft28r
+
+3.O. Enable UART
+===============
+
+RaspberryPi 1, 2 and CM will have UART console enabled by default.
+
+RaspberryPi 3 does not have the UART enabled by default because this needs a
+fixed core frequency and enable_uart wil set it to the minimum. Certain
+operations - 60fps h264 decode, high quality deinterlace - which aren't
+performed on the ARM may be affected, and we wouldn't want to do that to users
+who don't want to use the serial port. Users who want serial console support on
+RaspberryPi3 will have to explicitely set in local.conf: ENABLE_UART = "1".
+
+Ref.: https://github.com/raspberrypi/firmware/issues/553
+      https://github.com/RPi-Distro/repo/issues/22
+
+4. Extra apps
+=============
+
+4.A. omxplayer
+==============
+omxplayer depends on libav which has a commercial license. So in order to be
+able to compile omxplayer you will need to whiteflag the commercial license
+adding to you local.conf:
+LICENSE_FLAGS_WHITELIST = "commercial"
+
+5. Board Configuration
+======================
+
+5.A. Audio Routing
+==================
+To load audio driver
+
+    modprobe snd-bcm2835
+
+To test audio playback
+
+    e.g. aplay test.wav
+
+Note that without HDMI connected this emits audio from the 3.5in jack connector
+as expected. However With an HDMI display connected there is no audio output from
+the jack connector.
+
+To force the audio routing via the 3.5in jack connector use
+
+    amixer cset numid=3 1
+
+Options to amixer cset are:
+
+    0=auto
+    1=headphones
+    2=hdmi
+
+6. Source code and mirrors
+==========================
+
+Main repo:
+    git://git.yoctoproject.org/meta-raspberrypi
+    http://git.yoctoproject.org/git/meta-raspberrypi
+
+Github mirror:
+    https://github.com/agherzan/meta-raspberrypi
+
+Bitbucket mirror:
+    https://bitbucket.org/agherzan/meta-raspberrypi
+
+
+7. Contributing
+===============
+
+7.A. Mailing list
+=================
+The main communication tool we use is a mailing list:
+    yocto@yoctoproject.org
+    https://lists.yoctoproject.org/listinfo/yocto
+
+Feel free to ask any kind of questions but always prepend your email subject
+with "[meta-raspberrypi]". This is because we use the 'yocto' mailing list and
+not a perticular 'meta-raspberrypi' mailing list.
+
+To contribute to this layer you should send the patches for review to the
+above specified mailing list.
+The patches should be compliant with the openembedded patch guidelines:
+http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
+
+
+When creating patches, please use something like:
+
+    git format-patch -s --subject-prefix='meta-raspberrypi][PATCH' origin
+
+When sending patches to mailing list, please use something like:
+
+    git send-email --to yocto@yoctoproject.org <generated patch>
+
+7.B. Github issues
+==================
+In order to manage and trace the meta-raspberrypi issues, we use github issues:
+    https://github.com/agherzan/meta-raspberrypi/issues
+
+If you push patches which have a github issue associated, please provide the
+issue number in the commit log just before "Signed-off-by" line(s). Example line
+for a bug:
+    [Issue #13]
+
+
+8. Maintainers
+==============
+
+    Andrei Gherzan <andrei at gherzan.ro>
diff --git a/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass b/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass
new file mode 100644
index 0000000..40beef1
--- /dev/null
+++ b/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass
@@ -0,0 +1,39 @@
+inherit linux-kernel-base
+
+
+def get_dts(d, ver):
+    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
+    dts = d.getVar("KERNEL_DEVICETREE", True)
+
+    # d.getVar() might return 'None' as a normal string
+    # leading to 'is None' check isn't enough.
+    # TODO: Investigate if this is a bug in bitbake
+    if ver is None or ver == "None":
+        ''' if 'ver' isn't set try to grab the kernel version
+        from the kernel staging '''
+        ver = get_kernelversion_file(staging_dir)
+
+    if ver is not None:
+        min_ver = ver.split('.', 3)
+    else:
+        return dts
+
+    # Always turn off device tree support for kernel's < 3.18
+    try:
+        if int(min_ver[0]) <= 3:
+            if int(min_ver[1]) < 18:
+                dts = ""
+    except IndexError:
+        min_ver = None
+
+    return dts
+
+
+def split_overlays(d, out):
+    dts = get_dts(d, None)
+    if out:
+        overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d)
+    else:
+        overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d)
+
+    return overlays
diff --git a/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass b/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass
new file mode 100644
index 0000000..57cefea
--- /dev/null
+++ b/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass
@@ -0,0 +1,185 @@
+inherit image_types
+inherit linux-raspberrypi-base
+
+#
+# Create an image that can by written onto a SD card using dd.
+#
+# The disk layout used is:
+#
+#    0                      -> IMAGE_ROOTFS_ALIGNMENT         - reserved for other data
+#    IMAGE_ROOTFS_ALIGNMENT -> BOOT_SPACE                     - bootloader and kernel
+#    BOOT_SPACE             -> SDIMG_SIZE                     - rootfs
+#
+
+#                                                     Default Free space = 1.3x
+#                                                     Use IMAGE_OVERHEAD_FACTOR to add more space
+#                                                     <--------->
+#            4MiB              40MiB           SDIMG_ROOTFS
+# <-----------------------> <----------> <---------------------->
+#  ------------------------ ------------ ------------------------
+# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE            |
+#  ------------------------ ------------ ------------------------
+# ^                        ^            ^                        ^
+# |                        |            |                        |
+# 0                      4MiB     4MiB + 40MiB       4MiB + 40Mib + SDIMG_ROOTFS
+
+# This image depends on the rootfs image
+IMAGE_TYPEDEP_rpi-sdimg = "${SDIMG_ROOTFS_TYPE}"
+
+# Set kernel and boot loader
+IMAGE_BOOTLOADER ?= "bcm2835-bootfiles"
+
+# Set initramfs extension
+KERNEL_INITRAMFS ?= ""
+
+# Kernel image name
+SDIMG_KERNELIMAGE_raspberrypi  ?= "kernel.img"
+SDIMG_KERNELIMAGE_raspberrypi2 ?= "kernel7.img"
+
+# Boot partition volume id
+BOOTDD_VOLUME_ID ?= "${MACHINE}"
+
+# Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT)
+BOOT_SPACE ?= "40960"
+
+# Set alignment to 4MB [in KiB]
+IMAGE_ROOTFS_ALIGNMENT = "4096"
+
+# Use an uncompressed ext3 by default as rootfs
+SDIMG_ROOTFS_TYPE ?= "ext3"
+SDIMG_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
+
+IMAGE_DEPENDS_rpi-sdimg = " \
+			parted-native \
+			mtools-native \
+			dosfstools-native \
+			virtual/kernel:do_deploy \
+			${IMAGE_BOOTLOADER} \
+			${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'u-boot', '',d)} \
+			"
+
+# SD card image name
+SDIMG = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.rpi-sdimg"
+
+# Compression method to apply to SDIMG after it has been created. Supported
+# compression formats are "gzip", "bzip2" or "xz". The original .rpi-sdimg file
+# is kept and a new compressed file is created if one of these compression
+# formats is chosen. If SDIMG_COMPRESSION is set to any other value it is
+# silently ignored.
+#SDIMG_COMPRESSION ?= ""
+
+# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
+FATPAYLOAD ?= ""
+
+IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
+IMAGE_CMD_rpi-sdimg[vardepsexclude] += "IMAGEDATESTAMP"
+IMAGE_CMD_rpi-sdimg[vardepsexclude] += "DATETIME"
+
+IMAGE_CMD_rpi-sdimg () {
+
+	# Align partitions
+	BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
+	BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
+	SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE)
+
+	echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTFS_SIZE KiB"
+
+	# Check if we are building with device tree support
+	DTS="${@get_dts(d, None)}"
+
+	# Initialize sdcard image file
+	dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
+
+	# Create partition table
+	parted -s ${SDIMG} mklabel msdos
+	# Create boot partition and mark it as bootable
+	parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
+	parted -s ${SDIMG} set 1 boot on
+	# Create rootfs partition to the end of disk
+	parted -s ${SDIMG} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s
+	parted ${SDIMG} print
+
+	# Create a vfat image with boot files
+	BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }')
+	rm -f ${WORKDIR}/boot.img
+	mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
+	mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/* ::/
+	if test -n "${DTS}"; then
+		# Device Tree Overlays are assumed to be suffixed by '-overlay.dtb' string and will be put in a dedicated folder
+		DT_OVERLAYS="${@split_overlays(d, 0)}"
+		DT_ROOT="${@split_overlays(d, 1)}"
+
+		# Copy board device trees to root folder
+		for DTB in ${DT_ROOT}; do
+			DTB_BASE_NAME=`basename ${DTB} .dtb`
+
+			mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::${DTB_BASE_NAME}.dtb
+		done
+
+		# Copy device tree overlays to dedicated folder
+		mmd -i ${WORKDIR}/boot.img overlays
+		for DTB in ${DT_OVERLAYS}; do
+			DTB_BASE_NAME=`basename ${DTB} .dtb`
+
+			mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::overlays/${DTB_BASE_NAME}.dtb
+		done
+	fi
+	case "${KERNEL_IMAGETYPE}" in
+	"uImage")
+		mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot.bin ::${SDIMG_KERNELIMAGE}
+		mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::uImage
+		;;
+	*)
+		mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::${SDIMG_KERNELIMAGE}
+		;;
+	esac
+
+	if [ -n ${FATPAYLOAD} ] ; then
+		echo "Copying payload into VFAT"
+		for entry in ${FATPAYLOAD} ; do
+				# add the || true to stop aborting on vfat issues like not supporting .~lock files
+				mcopy -i ${WORKDIR}/boot.img -s -v ${IMAGE_ROOTFS}$entry :: || true
+		done
+	fi
+
+	# Add stamp file
+	echo "${IMAGE_NAME}-${IMAGEDATESTAMP}" > ${WORKDIR}/image-version-info
+	mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}//image-version-info ::
+
+	# Burn Partitions
+	dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
+	# If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
+	if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz"
+	then
+		xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
+	else
+		dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
+	fi
+
+	# Optionally apply compression
+	case "${SDIMG_COMPRESSION}" in
+	"gzip")
+		gzip -k9 "${SDIMG}"
+		;;
+	"bzip2")
+		bzip2 -k9 "${SDIMG}"
+		;;
+	"xz")
+		xz -k "${SDIMG}"
+		;;
+	esac
+}
+
+ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; "
+
+rpi_generate_sysctl_config() {
+	# systemd sysctl config
+	test -d ${IMAGE_ROOTFS}${sysconfdir}/sysctl.d && \
+		echo "vm.min_free_kbytes = 8192" > ${IMAGE_ROOTFS}${sysconfdir}/sysctl.d/rpi-vm.conf
+
+	# sysv sysctl config
+	IMAGE_SYSCTL_CONF="${IMAGE_ROOTFS}${sysconfdir}/sysctl.conf"
+	test -e ${IMAGE_ROOTFS}${sysconfdir}/sysctl.conf && \
+		sed -e "/vm.min_free_kbytes/d" -i ${IMAGE_SYSCTL_CONF}
+	echo "" >> ${IMAGE_SYSCTL_CONF} && echo "vm.min_free_kbytes = 8192" >> ${IMAGE_SYSCTL_CONF}
+}
diff --git a/import-layers/meta-raspberrypi/conf/layer.conf b/import-layers/meta-raspberrypi/conf/layer.conf
new file mode 100644
index 0000000..bea5a65
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/layer.conf
@@ -0,0 +1,14 @@
+# We have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a recipes directory containing .bb and .bbappend files, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes*/*/*.bb \
+            ${LAYERDIR}/recipes*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "raspberrypi"
+BBFILE_PATTERN_raspberrypi := "^${LAYERDIR}/"
+BBFILE_PRIORITY_raspberrypi = "9"
+
+# Additional license directories.
+LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
+
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc
new file mode 100644
index 0000000..56ca83e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc
@@ -0,0 +1,53 @@
+include conf/machine/include/rpi-default-settings.inc
+include conf/machine/include/rpi-default-versions.inc
+include conf/machine/include/rpi-default-providers.inc
+
+SOC_FAMILY = "rpi"
+include conf/machine/include/soc-family.inc
+
+IMAGE_FSTYPES ?= "tar.bz2 ext3 rpi-sdimg"
+
+XSERVER = " \
+    xserver-xorg \
+    xf86-input-evdev \
+    xf86-input-mouse \
+    xf86-input-keyboard \
+    xf86-video-fbdev \
+    "
+
+# Really supported starting from linux-raspberrypi 3.18.y only
+KERNEL_DEVICETREE ?= " \
+    bcm2708-rpi-b.dtb \
+    bcm2708-rpi-b-plus.dtb \
+    bcm2709-rpi-2-b.dtb \
+    bcm2710-rpi-3-b.dtb \
+    \
+    overlays/hifiberry-amp-overlay.dtb \
+    overlays/hifiberry-dac-overlay.dtb \
+    overlays/hifiberry-dacplus-overlay.dtb \
+    overlays/hifiberry-digi-overlay.dtb \
+    overlays/i2c-rtc-overlay.dtb \
+    overlays/iqaudio-dac-overlay.dtb \
+    overlays/iqaudio-dacplus-overlay.dtb \
+    overlays/lirc-rpi-overlay.dtb \
+    overlays/pitft22-overlay.dtb \
+    overlays/pitft28-resistive-overlay.dtb \
+    overlays/pps-gpio-overlay.dtb \
+    overlays/rpi-ft5406-overlay.dtb \
+    overlays/w1-gpio-overlay.dtb \
+    overlays/w1-gpio-pullup-overlay.dtb \
+    overlays/pi3-miniuart-bt-overlay.dtb \
+    "
+KERNEL_IMAGETYPE ?= "Image"
+
+MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"
+
+# Raspberry Pi has no hardware clock
+MACHINE_FEATURES_BACKFILL_CONSIDERED = "rtc"
+
+MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
+
+# Set Raspberrypi splash image
+SPLASH = "psplash-raspberrypi"
+
+IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* ${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}"
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
new file mode 100644
index 0000000..359870d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
@@ -0,0 +1,9 @@
+# RaspberryPi BSP default providers
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-raspberrypi"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/egl ?= "userland"
+PREFERRED_PROVIDER_virtual/libgles2 ?= "userland"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa-gl"
+PREFERRED_PROVIDER_virtual/mesa ?= "mesa-gl"
+PREFERRED_PROVIDER_jpeg ?= "jpeg"
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-settings.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-settings.inc
new file mode 100644
index 0000000..716a8bb
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-settings.inc
@@ -0,0 +1,3 @@
+# RaspberryPi BSP default settings
+
+IMAGE_CLASSES += "sdcard_image-rpi"
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
new file mode 100644
index 0000000..c879dde
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
@@ -0,0 +1,3 @@
+# RaspberryPi BSP default versions
+
+PREFERRED_VERSION_linux-raspberrypi ?= "4.1.%"
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc b/import-layers/meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc
new file mode 100644
index 0000000..b6fcc59
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc
@@ -0,0 +1,15 @@
+DEFAULTTUNE ?= "armv6"
+
+require conf/machine/include/arm/arch-armv6.inc
+
+TUNEVALID[arm1176jzfs] = "Enable arm1176jzfs specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm1176jzfs", "-mtune=arm1176jzf-s", "", d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-mfpu=vfp", "", d)}"
+
+AVAILTUNES += "arm1176jzfs arm1176jzfshf"
+ARMPKGARCH_tune-arm1176jzfs = "arm1176jzfs"
+ARMPKGARCH_tune-arm1176jzfshf = "arm1176jzfs"
+TUNE_FEATURES_tune-arm1176jzfs = "${TUNE_FEATURES_tune-armv6} arm1176jzfs"
+TUNE_FEATURES_tune-arm1176jzfshf = "${TUNE_FEATURES_tune-arm1176jzfs} callconvention-hard"
+PACKAGE_EXTRA_ARCHS_tune-arm1176jzfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6}"
+PACKAGE_EXTRA_ARCHS_tune-arm1176jzfshf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} arm1176jzfshf-vfp"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi.conf
new file mode 100644
index 0000000..72beeb8
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi.conf
@@ -0,0 +1,12 @@
+#@TYPE: Machine
+#@NAME: RaspberryPi Development Board
+#@DESCRIPTION: Machine configuration for the RaspberryPi http://www.raspberrypi.org/ Board
+
+DEFAULTTUNE ?= "arm1176jzfshf"
+
+require conf/machine/include/tune-arm1176jzf-s.inc
+include conf/machine/include/rpi-base.inc
+
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+UBOOT_MACHINE = "rpi_config"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf
new file mode 100644
index 0000000..ccf9ae7
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf
@@ -0,0 +1,8 @@
+#@TYPE: Machine
+#@NAME: RaspberryPi Zero Development Board
+#@DESCRIPTION: Machine configuration for the RaspberryPi Zero board (https://www.raspberrypi.org/blog/raspberry-pi-zero)
+
+MACHINEOVERRIDES = "raspberrypi:${MACHINE}"
+include conf/machine/raspberrypi.conf
+
+SERIAL_CONSOLE = "115200 ttyAMA0"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi2.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi2.conf
new file mode 100644
index 0000000..d50ef70
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi2.conf
@@ -0,0 +1,12 @@
+#@TYPE: Machine
+#@NAME: RaspberryPi 2 Development Board
+#@DESCRIPTION: Machine configuration for the RaspberryPi 2
+
+DEFAULTTUNE ?= "cortexa7thf-neon-vfpv4"
+
+require conf/machine/include/tune-cortexa7.inc
+include conf/machine/include/rpi-base.inc
+
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+UBOOT_MACHINE = "rpi_2_config"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf
new file mode 100644
index 0000000..cb6056e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf
@@ -0,0 +1,11 @@
+#@TYPE: Machine
+#@NAME: RaspberryPi 3 Development Board
+#@DESCRIPTION: Machine configuration for the RaspberryPi 3
+
+MACHINEOVERRIDES = "raspberrypi2:${MACHINE}"
+
+MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-brcm43430"
+
+include conf/machine/raspberrypi2.conf
+
+SERIAL_CONSOLE = "115200 ttyS0"
diff --git a/import-layers/meta-raspberrypi/files/custom-licenses/Broadcom b/import-layers/meta-raspberrypi/files/custom-licenses/Broadcom
new file mode 100644
index 0000000..2582681
--- /dev/null
+++ b/import-layers/meta-raspberrypi/files/custom-licenses/Broadcom
@@ -0,0 +1,25 @@
+Copyright (c) 2012, Broadcom Europe Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * 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.
+    * Neither the name of the copyright holder nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
+
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
new file mode 100644
index 0000000..b279e15
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Closed source binary files to help boot the ARM on the BCM2835."
+LICENSE = "Proprietary"
+
+LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=4a4d169737c0786fb9482bb6d30401d1"
+
+inherit deploy
+
+include recipes-bsp/common/firmware.inc
+
+RDEPENDS_${PN} = "rpi-config"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+S = "${RPIFW_S}/boot"
+
+PR = "r3"
+
+do_deploy() {
+    install -d ${DEPLOYDIR}/${PN}
+
+    for i in ${S}/*.elf ; do
+        cp $i ${DEPLOYDIR}/${PN}
+    done
+    for i in ${S}/*.dat ; do
+        cp $i ${DEPLOYDIR}/${PN}
+    done
+    for i in ${S}/*.bin ; do
+        cp $i ${DEPLOYDIR}/${PN}
+    done
+
+    # Add stamp in deploy directory
+    touch ${DEPLOYDIR}/${PN}/${PN}-${PV}.stamp
+}
+
+addtask deploy before do_package after do_install
+do_deploy[dirs] += "${DEPLOYDIR}/${PN}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
new file mode 100644
index 0000000..4bc8eb7
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -0,0 +1,110 @@
+DESCRIPTION = "Commented config.txt file for the Raspberry Pi. \
+               The Raspberry Pi config.txt file is read by the GPU before \
+               the ARM core is initialised. It can be used to set various \
+               system configuration parameters."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f"
+SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \
+          "
+
+S = "${WORKDIR}/git"
+
+PR = "r4"
+
+PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
+PITFT22="${@bb.utils.contains("MACHINE_FEATURES", "pitft22", "1", "0", d)}"
+PITFT28r="${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "1", "0", d)}"
+
+inherit deploy
+
+do_deploy() {
+    install -d ${DEPLOYDIR}/bcm2835-bootfiles
+
+    cp ${S}/config.txt ${DEPLOYDIR}/bcm2835-bootfiles/
+
+    if [ -n "${KEY_DECODE_MPG2}" ]; then
+        sed -i '/#decode_MPG2/ c\decode_MPG2=${KEY_DECODE_MPG2}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${KEY_DECODE_WVC1}" ]; then
+        sed -i '/#decode_WVC1/ c\decode_WVC1=${KEY_DECODE_WVC1}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${DISABLE_OVERSCAN}" ]; then
+        sed -i '/#disable_overscan/ c\disable_overscan=${DISABLE_OVERSCAN}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${ARM_FREQ}" ]; then
+        sed -i '/#arm_freq/ c\arm_freq=${ARM_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${CORE_FREQ}" ]; then
+        sed -i '/#core_freq/ c\core_freq=${CORE_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${SDRAM_FREQ}" ]; then
+        sed -i '/#sdram_freq/ c\sdram_freq=${SDRAM_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${OVER_VOLTAGE}" ]; then
+        sed -i '/#over_voltage/ c\over_voltage=${OVER_VOLTAGE}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # GPU memory
+    if [ -n "${GPU_MEM}" ]; then
+        sed -i '/#gpu_mem=/ c\gpu_mem=${GPU_MEM}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${GPU_MEM_256}" ]; then
+        sed -i '/#gpu_mem_256/ c\gpu_mem_256=${GPU_MEM_256}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${GPU_MEM_512}" ]; then
+        sed -i '/#gpu_mem_512/ c\gpu_mem_512=${GPU_MEM_512}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+    if [ -n "${GPU_MEM_1024}" ]; then
+        sed -i '/#gpu_mem_1024/ c\gpu_mem_1024=${GPU_MEM_1024}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # Video camera support
+    if [ -n "${VIDEO_CAMERA}" ]; then
+        echo "# Enable video camera" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "start_x=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # Offline compositing support
+    if [ -n "${DISPMANX_OFFLINE}" ]; then
+        echo "# Enable offline compositing" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dispmanx_offline=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # SPI bus support
+    if [ -n "${ENABLE_SPI_BUS}" ] || [ "${PITFT}" = "1" ]; then
+        echo "# Enable SPI bus" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtparam=spi=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    if [ -n "${ENABLE_I2C}" ] || [ "${PITFT}" = "1" ]; then
+        echo "# Enable I2C" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtparam=i2c1=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtparam=i2c_arm=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # PiTFT22 display support
+    if [ "${PITFT22}" = "1" ]; then
+        echo "# Enable PITFT22 display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtoverlay=pitft22,rotate=270,speed=32000000,txbuflen=32768" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    if [ "${PITFT28r}" = "1" ]; then
+        echo "# Enable PITFT28r display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtoverlay=pitft28-resistive,rotate=90,speed=32000000,txbuflen=32768" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
+    # UART support
+    if [ "${ENABLE_UART}" = "1" ]; then
+        echo "# Enable UART" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "enable_uart=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+}
+
+addtask deploy before do_package after do_install
+do_deploy[dirs] += "${DEPLOYDIR}/bcm2835-bootfiles"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc b/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc
new file mode 100644
index 0000000..9df6156
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc
@@ -0,0 +1,8 @@
+RPIFW_SRCREV ?= "390f53ed0fd79df274bdcc81d99e09fa262f03ab"
+RPIFW_DATE ?= "20160622"
+RPIFW_SRC_URI ?= "git://github.com/raspberrypi/firmware.git;protocol=git;branch=master"
+RPIFW_S ?= "${WORKDIR}/git"
+
+SRC_URI = "${RPIFW_SRC_URI}"
+SRCREV = "${RPIFW_SRCREV}"
+PV = "${RPIFW_DATE}"
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig b/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
new file mode 100644
index 0000000..bef4ce3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
@@ -0,0 +1,6 @@
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=1
+ 
+DISPLAY_CAN_ROTATE=0
+DISPLAY_ORIENTATION=0
+DISPLAY_DPI=133
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend b/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 0000000..72d991c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch
new file mode 100644
index 0000000..3bc02c4
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch
@@ -0,0 +1,26 @@
+From b4f2b77472aeb967d3a7595e8a965785c7a37c87 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 16 Feb 2016 16:40:46 +0000
+Subject: [PATCH 1/4] bcm43xx: Add bcm43xx-3wire variant
+
+---
+ tools/hciattach.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/tools/hciattach.c b/tools/hciattach.c
+index 59a76a7..5861d33 100644
+--- a/tools/hciattach.c
++++ b/tools/hciattach.c
+@@ -1144,6 +1144,9 @@ struct uart_t uart[] = {
+ 	{ "bcm43xx",    0x0000, 0x0000, HCI_UART_H4,   115200, 3000000,
+ 				FLOW_CTL, DISABLE_PM, NULL, bcm43xx, NULL  },
+ 
++	{ "bcm43xx-3wire",    0x0000, 0x0000, HCI_UART_3WIRE, 115200, 3000000,
++				0, DISABLE_PM, NULL, bcm43xx, NULL  },
++
+ 	{ "ath3k",    0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200,
+ 			FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm  },
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
new file mode 100644
index 0000000..5a0a434
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
@@ -0,0 +1,37 @@
+From e145c9621f976063e5c573db1f2053d906f63427 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 16 Feb 2016 16:39:09 +0000
+Subject: [PATCH 2/4] bcm43xx: The UART speed must be reset after the firmware download
+
+---
+ tools/hciattach_bcm43xx.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
+index 81f38cb..0b792e0 100644
+--- a/tools/hciattach_bcm43xx.c
++++ b/tools/hciattach_bcm43xx.c
+@@ -366,11 +366,8 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
+ 		return -1;
+ 
+ 	if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) {
+-		fprintf(stderr, "Patch not found, continue anyway\n");
++		fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name);
+ 	} else {
+-		if (bcm43xx_set_speed(fd, ti, speed))
+-			return -1;
+-
+ 		if (bcm43xx_load_firmware(fd, fw_path))
+ 			return -1;
+ 
+@@ -380,6 +377,7 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
+ 			return -1;
+ 		}
+ 
++		sleep(1);
+ 		if (bcm43xx_reset(fd))
+ 			return -1;
+ 	}
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch
new file mode 100644
index 0000000..f9f09eb
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch
@@ -0,0 +1,25 @@
+From d41dc2046dd08d8c95197f677e224506f5b39bdd Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Wed, 20 Jan 2016 16:00:37 +0000
+Subject: [PATCH 3/4] Increase firmware load timeout to 30s
+
+---
+ tools/hciattach.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/hciattach.c b/tools/hciattach.c
+index 5861d33..4141796 100644
+--- a/tools/hciattach.c
++++ b/tools/hciattach.c
+@@ -1293,7 +1293,7 @@ int main(int argc, char *argv[])
+ {
+ 	struct uart_t *u = NULL;
+ 	int detach, printpid, raw, opt, i, n, ld, err;
+-	int to = 10;
++	int to = 30;
+ 	int init_speed = 0;
+ 	int send_break = 0;
+ 	pid_t pid;
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch
new file mode 100644
index 0000000..dadce35
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch
@@ -0,0 +1,25 @@
+From 76681284b0ea49852041fdb97a35175089a08781 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 23 Feb 2016 17:52:29 +0000
+Subject: [PATCH 4/4] Move the 43xx firmware into /lib/firmware
+
+---
+ tools/hciattach_bcm43xx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
+index 0b792e0..207f668 100644
+--- a/tools/hciattach_bcm43xx.c
++++ b/tools/hciattach_bcm43xx.c
+@@ -43,7 +43,7 @@
+ #include "hciattach.h"
+ 
+ #ifndef FIRMWARE_DIR
+-#define FIRMWARE_DIR "/etc/firmware"
++#define FIRMWARE_DIR "/lib/firmware"
+ #endif
+ 
+ #define FW_EXT ".hcd"
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd
new file mode 100644
index 0000000..162275a
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/brcm43438.service b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/brcm43438.service
new file mode 100644
index 0000000..d57125c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5/brcm43438.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Broadcom BCM43438 bluetooth HCI
+ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins
+Before=bluetooth.service
+After=dev-ttyAMA0.device
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/hciattach -n /dev/ttyAMA0 bcm43xx 921600 noflow -
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend
new file mode 100644
index 0000000..89798a4
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend
@@ -0,0 +1,26 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_raspberrypi3 = " \
+    file://BCM43430A1.hcd \
+    file://0001-bcm43xx-Add-bcm43xx-3wire-variant.patch \
+    file://0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch \
+    file://0003-Increase-firmware-load-timeout-to-30s.patch \
+    file://0004-Move-the-43xx-firmware-into-lib-firmware.patch \
+    file://brcm43438.service \
+    "
+
+do_install_append_raspberrypi3() {
+    install -d ${D}/lib/firmware/brcm/
+    install -m 0644 ${WORKDIR}/BCM43430A1.hcd ${D}/lib/firmware/brcm/BCM43430A1.hcd
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/brcm43438.service ${D}${systemd_unitdir}/system
+    fi
+}
+
+FILES_${PN}_append_raspberrypi3 = " \
+    /lib/firmware/brcm/BCM43430A1.hcd \
+    "
+
+SYSTEMD_SERVICE_${PN}_raspberrypi3 += "brcm43438.service"
diff --git a/import-layers/meta-raspberrypi/recipes-core/images/rpi-basic-image.bb b/import-layers/meta-raspberrypi/recipes-core/images/rpi-basic-image.bb
new file mode 100644
index 0000000..623a5a7
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/images/rpi-basic-image.bb
@@ -0,0 +1,6 @@
+# Base this image on rpi-hwup-image
+include rpi-hwup-image.bb
+
+SPLASH = "psplash-raspberrypi"
+
+IMAGE_FEATURES += "ssh-server-dropbear splash"
diff --git a/import-layers/meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb b/import-layers/meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb
new file mode 100644
index 0000000..486ea59
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb
@@ -0,0 +1,7 @@
+# Base this image on core-image-minimal
+include recipes-core/images/core-image-minimal.bb
+
+# Include modules in rootfs
+IMAGE_INSTALL += " \
+	kernel-modules \
+	"
diff --git a/import-layers/meta-raspberrypi/recipes-core/images/rpi-test-image.bb b/import-layers/meta-raspberrypi/recipes-core/images/rpi-test-image.bb
new file mode 100644
index 0000000..b5602a6
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/images/rpi-test-image.bb
@@ -0,0 +1,4 @@
+# Base this image on rpi-basic-image
+include rpi-basic-image.bb
+
+IMAGE_INSTALL_append = " packagegroup-rpi-test"
diff --git a/import-layers/meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb b/import-layers/meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb
new file mode 100644
index 0000000..29e995e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "RaspberryPi Test Packagegroup"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+inherit packagegroup
+
+RDEPENDS_${PN} = "\
+    omxplayer \
+    bcm2835-tests \
+    wiringpi \
+    rpio \
+    rpi-gpio \
+    pi-blaster \
+    python-rtimu \
+    python-sense-hat \
+    connman \
+    connman-client \
+    crda \
+    bluez5 \
+"
+
+RRECOMMENDS_${PN} = "\
+    bigbuckbunny-1080p \
+    bigbuckbunny-480p \
+    bigbuckbunny-720p \
+    ${MACHINE_EXTRA_RRECOMMENDS} \
+"
diff --git a/import-layers/meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h b/import-layers/meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h
new file mode 100644
index 0000000..de29ee9
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h
@@ -0,0 +1,3210 @@
+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
+
+#define POKY_IMG_ROWSTRIDE (2280)
+#define POKY_IMG_WIDTH (570)
+#define POKY_IMG_HEIGHT (720)
+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \
+  "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\332\0\0\0" \
+  "\0\7\0\0\0\7\0\0\0$\0\0\0C\0\0\0U\0\0\0O\0\0\0C\0\0\0\37\377\0\0\0\0" \
+  "\372\0\0\0\0\3\0\0\0\4\0\0\0)\0\0\0F\202\0\0\0U\2\0\0\0G\0\0\0\37\377" \
+  "\0\0\0\0\377\0\0\0\0\262\0\0\0\0\4\0\0\0\27\0\0\0g\0\0\0\264\0\0\0\366" \
+  "\206\0\0\0\377\4\0\0\0\356\0\0\0\271\0\0\0t\0\0\0-\377\0\0\0\0\363\0" \
+  "\0\0\0\4\0\0\0-\0\0\0|\0\0\0\311\0\0\0\371\206\0\0\0\377\4\0\0\0\356" \
+  "\0\0\0\250\0\0\0\\\0\0\0\10\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\5\0\0" \
+  "\0\10\0\0\0\77\0\0\0i\0\0\0\214\0\0\0\240\202\0\0\0\252\6\0\0\0\241\0" \
+  "\0\0\231\0\0\0\214\0\0\0c\0\0\0""7\0\0\0\15\214\0\0\0\0\3\0\0\0\30\0" \
+  "\0\0\220\0\0\0\366\215\0\0\0\377\3\0\0\0\320\0\0\0l\0\0\0\17\377\0\0" \
+  "\0\0\355\0\0\0\0\3\0\0\0\35\0\0\0\202\0\0\0\335\215\0\0\0\377\3\0\0\0" \
+  "\352\0\0\0\204\0\0\0\17\214\0\0\0\0\6\0\0\0\26\0\0\0B\0\0\0l\0\0\0\223" \
+  "\0\0\0\231\0\0\0\245\202\0\0\0\252\5\0\0\0\234\0\0\0\205\0\0\0a\0\0\0" \
+  "1\0\0\0\2\377\0\0\0\0\364\0\0\0\0\4\0\0\0\12\0\0\0]\0\0\0\267\0\0\0\367" \
+  "\214\0\0\0\377\4\0\0\0\333\0\0\0\232\0\0\0V\0\0\0\24\206\0\0\0\0\3\0" \
+  "\0\0\6\0\0\0\204\0\0\0\366\221\0\0\0\377\3\0\0\0\363\0\0\0\226\0\0\0" \
+  ")\377\0\0\0\0\350\0\0\0\0\4\0\0\0\1\0\0\0F\0\0\0\257\0\0\0\374\221\0" \
+  "\0\0\377\3\0\0\0\350\0\0\0a\0\0\0\1\206\0\0\0\0\4\0\0\0!\0\0\0e\0\0\0" \
+  "\251\0\0\0\351\214\0\0\0\377\4\0\0\0\357\0\0\0\242\0\0\0G\0\0\0\2\377" \
+  "\0\0\0\0\357\0\0\0\0\3\0\0\0\16\0\0\0|\0\0\0\352\222\0\0\0\377\4\0\0" \
+  "\0\375\0\0\0\311\0\0\0r\0\0\0\34\202\0\0\0\0\2\0\0\0/\0\0\0\321\225\0" \
+  "\0\0\377\4\0\0\0\376\0\0\0\272\0\0\0M\0\0\0\2\213\0\0\0\0\2\0\0\0\17" \
+  "\0\0\0\37\202\0\0\0\"\1\0\0\0\12\377\0\0\0\0\303\0\0\0\0\1\0\0\0\23\202" \
+  "\0\0\0\"\2\0\0\0\33\0\0\0\13\213\0\0\0\0\3\0\0\0\14\0\0\0j\0\0\0\327" \
+  "\226\0\0\0\377\2\0\0\0\271\0\0\0\32\202\0\0\0\0\3\0\0\0.\0\0\0\206\0" \
+  "\0\0\334\223\0\0\0\377\3\0\0\0\326\0\0\0_\0\0\0\3\377\0\0\0\0\353\0\0" \
+  "\0\0\3\0\0\0\2\0\0\0i\0\0\0\351\227\0\0\0\377\4\0\0\0\375\0\0\0\301\0" \
+  "\0\0\223\0\0\0\371\231\0\0\0\377\3\0\0\0\334\0\0\0r\0\0\0\22\203\0\0" \
+  "\0\0\6\0\0\0\3\0\0\0""4\0\0\0k\0\0\0\241\0\0\0\313\0\0\0\360\204\0\0" \
+  "\0\377\5\0\0\0\376\0\0\0\341\0\0\0\251\0\0\0f\0\0\0\30\377\0\0\0\0\273" \
+  "\0\0\0\0\4\0\0\0*\0\0\0w\0\0\0\270\0\0\0\353\205\0\0\0\377\5\0\0\0\350" \
+  "\0\0\0\302\0\0\0\224\0\0\0^\0\0\0&\204\0\0\0\0\3\0\0\0""3\0\0\0\222\0" \
+  "\0\0\357\231\0\0\0\377\3\0\0\0\354\0\0\0\215\0\0\0\325\230\0\0\0\377" \
+  "\2\0\0\0\323\0\0\0F\377\0\0\0\0\351\0\0\0\0\2\0\0\0\34\0\0\0\275\270" \
+  "\0\0\0\377\5\0\0\0\372\0\0\0\266\0\0\0r\0\0\0\245\0\0\0\353\215\0\0\0" \
+  "\377\3\0\0\0\375\0\0\0\255\0\0\0""5\377\0\0\0\0\266\0\0\0\0\3\0\0\0\2" \
+  "\0\0\0Q\0\0\0\311\216\0\0\0\377\4\0\0\0\335\0\0\0\224\0\0\0{\0\0\0\324" \
+  "\270\0\0\0\377\3\0\0\0\376\0\0\0\225\0\0\0\11\377\0\0\0\0\346\0\0\0\0" \
+  "\2\0\0\0""7\0\0\0\351\316\0\0\0\377\2\0\0\0\272\0\0\0""1\377\0\0\0\0" \
+  "\263\0\0\0\0\2\0\0\0P\0\0\0\326\316\0\0\0\377\2\0\0\0\314\0\0\0\31\377" \
+  "\0\0\0\0\326\0\0\0\0\6\0\0\0\22\0\0\0V\0\0\0\216\0\0\0\260\0\0\0\323" \
+  "\0\0\0\365\203\0\0\0\377\7\0\0\0\372\0\0\0\344\0\0\0\314\0\0\0\264\0" \
+  "\0\0\236\0\0\0\217\0\0\0\366\320\0\0\0\377\3\0\0\0\375\0\0\0\240\0\0" \
+  "\0\33\377\0\0\0\0\257\0\0\0\0\2\0\0\0""3\0\0\0\300\321\0\0\0\377\7\0" \
+  "\0\0\341\0\0\0\214\0\0\0\242\0\0\0\271\0\0\0\322\0\0\0\350\0\0\0\376" \
+  "\203\0\0\0\377\6\0\0\0\355\0\0\0\313\0\0\0\250\0\0\0\205\0\0\0E\0\0\0" \
+  "\10\377\0\0\0\0\304\0\0\0\0\4\0\0\0\3\0\0\0Y\0\0\0\305\0\0\0\374\341" \
+  "\0\0\0\377\3\0\0\0\363\0\0\0y\0\0\0\7\377\0\0\0\0\253\0\0\0\0\3\0\0\0" \
+  "\26\0\0\0\233\0\0\0\375\341\0\0\0\377\3\0\0\0\365\0\0\0\261\0\0\0<\377" \
+  "\0\0\0\0\301\0\0\0\0\2\0\0\0J\0\0\0\332\346\0\0\0\377\3\0\0\0\337\0\0" \
+  "\0o\0\0\0\15\202\0\0\0\0\5\0\0\0\7\0\0\0-\0\0\0G\0\0\0^\0\0\0t\202\0" \
+  "\0\0w\4\0\0\0u\0\0\0f\0\0\0H\0\0\0\31\377\0\0\0\0\214\0\0\0\0\4\0\0\0" \
+  "\1\0\0\0$\0\0\0T\0\0\0h\203\0\0\0w\5\0\0\0q\0\0\0Z\0\0\0\77\0\0\0&\0" \
+  "\0\0\3\202\0\0\0\0\3\0\0\0\34\0\0\0\211\0\0\0\360\346\0\0\0\377\2\0\0" \
+  "\0\277\0\0\0)\377\0\0\0\0\275\0\0\0\0\3\0\0\0\6\0\0\0\217\0\0\0\376\351" \
+  "\0\0\0\377\4\0\0\0\360\0\0\0\262\0\0\0\327\0\0\0\373\212\0\0\0\377\4" \
+  "\0\0\0\342\0\0\0\236\0\0\0O\0\0\0\4\377\0\0\0\0\205\0\0\0\0\4\0\0\0\16" \
+  "\0\0\0e\0\0\0\256\0\0\0\357\212\0\0\0\377\4\0\0\0\367\0\0\0\314\0\0\0" \
+  "\267\0\0\0\372\351\0\0\0\377\2\0\0\0\365\0\0\0c\377\0\0\0\0\273\0\0\0" \
+  "\0\2\0\0\0\11\0\0\0\265\374\0\0\0\377\3\0\0\0\345\0\0\0w\0\0\0\14\377" \
+  "\0\0\0\0\4\0\0\0\0\0\0\0\34\0\0\0\225\0\0\0\364\374\0\0\0\377\1\0\0\0" \
+  "\203\377\0\0\0\0\271\0\0\0\0\2\0\0\0\6\0\0\0\274\377\0\0\0\377\3\0\0" \
+  "\0\351\0\0\0_\0\0\0\1\374\0\0\0\0\3\0\0\0\11\0\0\0\204\0\0\0\370\377" \
+  "\0\0\0\377\1\0\0\0\207\377\0\0\0\0\253\0\0\0\0\4\0\0\0\15\0\0\0#\0\0" \
+  "\0""8\0\0\0M\203\0\0\0U\7\0\0\0P\0\0\0@\0\0\0""0\0\0\0\37\0\0\0\17\0" \
+  "\0\0\0\0\0\0\235\377\0\0\0\377\203\0\0\0\377\2\0\0\0\271\0\0\0\27\372" \
+  "\0\0\0\0\2\0\0\0""3\0\0\0\332\377\0\0\0\377\203\0\0\0\377\7\0\0\0c\0" \
+  "\0\0\2\0\0\0\22\0\0\0#\0\0\0""3\0\0\0D\0\0\0T\203\0\0\0U\4\0\0\0I\0\0" \
+  "\0""2\0\0\0\35\0\0\0\11\377\0\0\0\0\227\0\0\0\0\6\0\0\0\22\0\0\0L\0\0" \
+  "\0\202\0\0\0\260\0\0\0\336\0\0\0\367\377\0\0\0\377\222\0\0\0\377\2\0" \
+  "\0\0\347\0\0\0""5\370\0\0\0\0\2\0\0\0`\0\0\0\370\377\0\0\0\377\222\0" \
+  "\0\0\377\6\0\0\0\363\0\0\0\324\0\0\0\246\0\0\0v\0\0\0>\0\0\0\11\377\0" \
+  "\0\0\0\216\0\0\0\0\4\0\0\0*\0\0\0\177\0\0\0\322\0\0\0\376\377\0\0\0\377" \
+  "\230\0\0\0\377\2\0\0\0\364\0\0\0I\366\0\0\0\0\2\0\0\0{\0\0\0\376\377" \
+  "\0\0\0\377\230\0\0\0\377\4\0\0\0\371\0\0\0\277\0\0\0k\0\0\0\30\377\0" \
+  "\0\0\0\210\0\0\0\0\3\0\0\0\3\0\0\0T\0\0\0\307\377\0\0\0\377\235\0\0\0" \
+  "\377\2\0\0\0\373\0\0\0`\363\0\0\0\0\2\0\0\0\2\0\0\0\225\377\0\0\0\377" \
+  "\235\0\0\0\377\3\0\0\0\374\0\0\0\253\0\0\0""9\377\0\0\0\0\205\0\0\0\0" \
+  "\2\0\0\0R\0\0\0\333\332\0\0\0\377\1\5\7\2\377\304\0\0\0\377\2\0\0\0\376" \
+  "\0\0\0e\361\0\0\0\0\2\0\0\0\2\0\0\0\236\306\0\0\0\377\1\5\7\2\377\331" \
+  "\0\0\0\377\2\0\0\0\300\0\0\0""1\377\0\0\0\0\3\0\0\0\0\0\0\0$\0\0\0\276" \
+  "\334\0\0\0\377\4\21\31\6\377V|\35\377/D\20\377\5\7\2\377\302\0\0\0\377" \
+  "\2\0\0\0\375\0\0\0_\357\0\0\0\0\2\0\0\0\1\0\0\0\230\304\0\0\0\377\4\0" \
+  "\1\0\377\37-\13\377Nq\33\377)<\16\377\332\0\0\0\377\3\0\0\0\375\0\0\0" \
+  "\232\0\0\0\16\375\0\0\0\0\2\0\0\0d\0\0\0\366\300\0\0\0\377\6\4\6\1\377" \
+  "Dc\27\377Ec\30\377-@\17\377\24\34\7\377\1\2\0\377\230\0\0\0\377\5#3\14" \
+  "\377t\250(\377j\231$\377=W\25\377\13\20\4\377\301\0\0\0\377\2\0\0\0\376" \
+  "\0\0\0g\355\0\0\0\0\2\0\0\0\2\0\0\0\235\303\0\0\0\377\5\3\4\1\377-B\20" \
+  "\377^\207\40\377u\251(\377Fe\30\377\231\0\0\0\377\5\14\22\4\377%5\15" \
+  "\377=Y\25\377Or\33\377\21\31\6\377\277\0\0\0\377\2\0\0\0\342\0\0\0""9" \
+  "\373\0\0\0\0\1\0\0\0\206\303\0\0\0\377\2\7\13\3\377^\207\40\377\202u" \
+  "\251(\377\5o\240&\377X\177\36\377:T\24\377\32&\11\377\2\3\1\377\225\0" \
+  "\0\0\377\1""7P\23\377\202u\251(\377\3q\243'\377C`\27\377\14\22\4\377" \
+  "\300\0\0\0\377\2\0\0\0\373\0\0\0U\354\0\0\0\0\1\0\0\0\213\302\0\0\0\377" \
+  "\3\4\5\1\3771G\21\377h\226#\377\202u\251(\377\2X\177\36\377\2\3\1\377" \
+  "\225\0\0\0\377\4\21\30\6\3770F\20\377Or\33\377i\227$\377\202u\251(\377" \
+  "\2o\240&\377\32%\11\377\301\0\0\0\377\2\0\0\0\367\0\0\0S\370\0\0\0\0" \
+  "\2\0\0\0\2\0\0\0\232\305\0\0\0\377\2\6\11\2\377X\177\36\377\205u\251" \
+  "(\377\4n\237&\377Pt\33\3771F\21\377\15\23\5\377\222\0\0\0\377\2\0\1\0" \
+  "\377Nq\33\377\203u\251(\377\3r\244'\377Ec\30\377\14\21\4\377\222\0\0" \
+  "\0\377\2\10\13\3\377\5\7\2\377\253\0\0\0\377\2\0\0\0\374\0\0\0Z\352\0" \
+  "\0\0\0\1\0\0\0\217\256\0\0\0\377\1\14\22\4\377\222\0\0\0\377\3\3\4\1" \
+  "\3773J\21\377i\230$\377\203u\251(\377\2h\226$\377\12\16\3\377\222\0\0" \
+  "\0\377\4\5\7\2\377'8\15\377Gf\30\377f\224#\377\205u\251(\377\2k\232%" \
+  "\377\26\40\10\377\303\0\0\0\377\2\0\0\0\374\0\0\0a\367\0\0\0\0\1\0\0" \
+  "\0\212\307\0\0\0\377\2\4\5\1\377Ps\33\377\207u\251(\377\4u\250(\377Z" \
+  "\202\37\3772H\21\377\13\21\4\377\220\0\0\0\377\2\6\11\2\377d\220\"\377" \
+  "\204u\251(\377\3o\241&\3779R\23\377\4\6\1\377\220\0\0\0\377\3\2\3\1\377" \
+  "W}\36\377#3\14\377\253\0\0\0\377\2\0\0\0\371\0\0\0\\\202\0\0\0""3\1\0" \
+  "\0\0""7\202\0\0\0D\1\0\0\0F\203\0\0\0U\1\0\0\0\37\324\0\0\0\0\1\0\0\0" \
+  "2\202\0\0\0U\1\0\0\0S\203\0\0\0D\1\0\0\0""4\202\0\0\0""3\1\0\0\0\203" \
+  "\255\0\0\0\377\3\21\30\6\377Tz\35\377\27!\10\377\221\0\0\0\377\2%6\15" \
+  "\377d\221\"\377\204u\251(\377\2t\247(\377\32&\11\377\220\0\0\0\377\4" \
+  "\4\6\1\377&6\15\377Np\33\377p\242&\377\207u\251(\377\2e\222#\377\21\31" \
+  "\6\377\305\0\0\0\377\2\0\0\0\374\0\0\0Q\365\0\0\0\0\1\0\0\0^\311\0\0" \
+  "\0\377\2\1\2\0\377Dc\27\377\211u\251(\377\4t\250(\377W}\36\377)<\16\377" \
+  "\4\5\1\377\216\0\0\0\377\1#3\14\377\206u\251(\377\2g\225#\377(:\16\377" \
+  "\220\0\0\0\377\4.C\20\377u\251(\377Ps\33\377\14\22\4\377\264\0\0\0\377" \
+  "\3\0\0\0\367\0\0\0\200\0\0\0\6\320\0\0\0\0\2\0\0\0\23\0\0\0\252\266\0" \
+  "\0\0\377\4\2\3\1\377:T\24\377q\244'\377Rv\34\377\220\0\0\0\377\2\25\36" \
+  "\7\377X\177\36\377\206u\251(\377\1Gg\30\377\217\0\0\0\377\3\34(\11\377" \
+  "Ij\31\377o\240&\377\211u\251(\377\2^\207\40\377\13\20\4\377\307\0\0\0" \
+  "\377\2\0\0\0\364\0\0\0+\351\0\0\0\0\3\0\0\0\20\0\0\0""6\0\0\0]\204\0" \
+  "\0\0f\5\0\0\0]\0\0\0M\0\0\0=\0\0\0D\0\0\0\361\256\0\0\0\377\3\15\23\5" \
+  "\377\26\40\10\377\4\5\1\377\232\0\0\0\377\1B_\27\377\213u\251(\377\3" \
+  "m\236%\377Ca\27\377\24\34\7\377\215\0\0\0\377\1\\\205\40\377\207u\251" \
+  "(\377\2Qu\34\377\13\21\4\377\216\0\0\0\377\5\3\4\1\377n\237&\377u\251" \
+  "(\377m\236%\377*=\16\377\265\0\0\0\377\2\0\0\0\307\0\0\0+\316\0\0\0\0" \
+  "\2\0\0\0K\0\0\0\342\266\0\0\0\377\2\25\36\7\377_\211\40\377\202u\251" \
+  "(\377\1\37-\13\377\216\0\0\0\377\3\2\3\1\377:T\24\377r\245'\377\206u" \
+  "\251(\377\2t\247(\377\14\22\4\377\214\0\0\0\377\3\10\14\3\3775L\22\377" \
+  "b\216\"\377\213u\251(\377\2^\210\40\377\7\12\2\377\231\0\0\0\377\3\1" \
+  "\1\0\377\20\27\5\377\26\40\10\377\255\0\0\0\377\5\0\0\0\322\0\0\0""5" \
+  "\0\0\0A\0\0\0Q\0\0\0a\204\0\0\0f\3\0\0\0U\0\0\0/\0\0\0\10\332\0\0\0\0" \
+  "\4\0\0\0\30\0\0\0d\0\0\0\257\0\0\0\351\272\0\0\0\377\11\2\3\1\377Ij\31" \
+  "\377t\247(\377d\221\"\377Qu\34\377>Z\25\377+>\17\377\30\"\10\377\6\10" \
+  "\2\377\224\0\0\0\377\2\0\1\0\377Ii\31\377\214u\251(\377\3u\250(\377P" \
+  "t\33\377\30\"\10\377\213\0\0\0\377\1""4K\22\377\210u\251(\377\2m\235" \
+  "%\377*<\16\377\216\0\0\0\377\1Or\33\377\203u\251(\377\2Ps\33\377\12\17" \
+  "\3\377\264\0\0\0\377\3\0\0\0\371\0\0\0~\0\0\0\3\312\0\0\0\0\2\0\0\0\21" \
+  "\0\0\0\246\266\0\0\0\377\3\1\2\0\3778P\23\377r\245'\377\202u\251(\377" \
+  "\2o\240&\377\3\4\1\377\215\0\0\0\377\2\25\36\7\377^\210\40\377\210u\251" \
+  "(\377\1W~\36\377\213\0\0\0\377\3\13\17\4\377\77[\25\377o\240&\377\214" \
+  "u\251(\377\2d\220\"\377\11\15\3\377\224\0\0\0\377\11\2\3\1\377\22\32" \
+  "\6\377&6\15\3778Q\23\377Lm\32\377_\211\40\377q\243'\377b\216\"\377\16" \
+  "\24\5\377\270\0\0\0\377\5\0\0\0\375\0\0\0\337\0\0\0\235\0\0\0R\0\0\0" \
+  "\14\323\0\0\0\0\4\0\0\0\2\0\0\0N\0\0\0\275\0\0\0\376\276\0\0\0\377\2" \
+  "\0\1\0\377=Y\25\377\205u\251(\377\6t\250(\377`\213!\377Fe\30\377,@\17" \
+  "\377\22\33\6\377\0\1\0\377\220\0\0\0\377\2\4\6\1\377b\215!\377\216u\251" \
+  "(\377\2Ty\35\377\30\"\10\377\211\0\0\0\377\1\32%\11\377\212u\251(\377" \
+  "\2Ln\32\377\6\11\2\377\214\0\0\0\377\1""0F\20\377\204u\251(\377\2i\230" \
+  "$\377\35*\12\377\265\0\0\0\377\2\0\0\0\276\0\0\0\27\310\0\0\0\0\2\0\0" \
+  "\0""3\0\0\0\336\266\0\0\0\377\2\13\21\4\377W~\36\377\204u\251(\377\1" \
+  "Ty\35\377\214\0\0\0\377\3\0\1\0\3772H\21\377r\244'\377\211u\251(\377" \
+  "\1=W\25\377\211\0\0\0\377\3\12\17\3\377B_\27\377q\243'\377\215u\251(" \
+  "\377\2r\245'\377\27!\10\377\221\0\0\0\377\5\13\17\4\377$4\14\377>Z\25" \
+  "\377Y\200\36\377p\242&\377\205u\251(\377\2Z\202\37\377\10\14\3\377\275" \
+  "\0\0\0\377\3\0\0\0\370\0\0\0\244\0\0\0""4\320\0\0\0\0\2\0\0\0M\0\0\0" \
+  "\333\303\0\0\0\377\2""2H\21\377t\250(\377\210u\251(\377\5m\235%\377S" \
+  "x\34\3779S\24\377\35*\12\377\3\4\1\377\215\0\0\0\377\1\33&\11\377\217" \
+  "u\251(\377\3u\250(\377Np\33\377\21\31\6\377\207\0\0\0\377\1\33&\11\377" \
+  "\213u\251(\377\2e\222#\377\30#\10\377\213\0\0\0\377\1&7\15\377\205u\251" \
+  "(\377\3t\247(\3779R\23\377\1\1\0\377\216\0\0\0\377\2,@\17\377\20\27\5" \
+  "\377\244\0\0\0\377\2\0\0\0\346\0\0\0>\306\0\0\0\0\2\0\0\0h\0\0\0\370" \
+  "\245\0\0\0\377\2\3\5\1\3779R\23\377\217\0\0\0\377\2\40.\13\377j\232$" \
+  "\377\205u\251(\377\1Ii\31\377\213\0\0\0\377\2\11\15\3\377Qu\34\377\213" \
+  "u\251(\377\1>Y\25\377\207\0\0\0\377\3\6\10\2\377:T\24\377o\240&\377\217" \
+  "u\251(\377\1=Y\25\377\216\0\0\0\377\4\24\34\7\3771G\21\377Kl\32\377e" \
+  "\222#\377\211u\251(\377\2Pt\33\377\4\6\1\377\301\0\0\0\377\2\0\0\0\300" \
+  "\0\0\0,\314\0\0\0\0\2\0\0\0\24\0\0\0\247\306\0\0\0\377\2.B\20\377u\250" \
+  "(\377\213u\251(\377\4o\241&\377Rv\34\3771F\21\377\20\27\5\377\213\0\0" \
+  "\0\377\1d\220\"\377\220u\251(\377\3s\246'\377@]\26\377\6\11\2\377\205" \
+  "\0\0\0\377\1""4L\22\377\214u\251(\377\2r\245'\3770F\20\377\212\0\0\0" \
+  "\377\1%5\15\377\207u\251(\377\2Rw\34\377\6\11\2\377\215\0\0\0\377\3""6" \
+  "N\23\377l\234%\377\33'\11\377\244\0\0\0\377\3\0\0\0\373\0\0\0v\0\0\0" \
+  "\1\302\0\0\0\0\2\0\0\0\13\0\0\0\243\246\0\0\0\377\3\11\15\3\377Y\201" \
+  "\37\377Z\203\37\377\216\0\0\0\377\2""6N\23\377t\250(\377\206u\251(\377" \
+  "\1Hh\31\377\212\0\0\0\377\2\27\"\10\377h\226#\377\214u\251(\377\1W~\36" \
+  "\377\205\0\0\0\377\3\0\1\0\377*=\16\377j\231$\377\221u\251(\377\1\21" \
+  "\31\6\377\212\0\0\0\377\4\10\13\3\377'8\15\377Hg\30\377h\226$\377\214" \
+  "u\251(\377\2Pt\33\377\2\3\1\377\303\0\0\0\377\3\0\0\0\371\0\0\0\200\0" \
+  "\0\0\5\311\0\0\0\0\2\0\0\0$\0\0\0\337\310\0\0\0\377\1""8P\23\377\217" \
+  "u\251(\377\4d\221\"\377Db\27\377\"2\14\377\3\5\1\377\207\0\0\0\377\1" \
+  "Y\200\36\377\222u\251(\377\2i\227$\377'9\15\377\203\0\0\0\377\2\4\5\1" \
+  "\377e\222#\377\216u\251(\377\2Gf\30\377\3\4\1\377\210\0\0\0\377\1:T\24" \
+  "\377\210u\251(\377\2a\215!\377\20\27\5\377\214\0\0\0\377\4.B\20\377u" \
+  "\251(\377r\244'\377)<\16\377\245\0\0\0\377\2\0\0\0\256\0\0\0\11\300\0" \
+  "\0\0\0\2\0\0\0\36\0\0\0\324\246\0\0\0\377\4\22\33\6\377e\222#\377u\251" \
+  "(\377Rv\34\377\214\0\0\0\377\2\4\5\1\377Jk\31\377\210u\251(\377\1^\210" \
+  "\40\377\211\0\0\0\377\2*=\16\377q\243'\377\215u\251(\377\2u\250(\377" \
+  "\30\"\10\377\203\0\0\0\377\2\24\34\7\377X\177\36\377\223u\251(\377\1" \
+  "\6\11\2\377\207\0\0\0\377\4\30\"\10\377:T\24\377Z\203\37\377t\247(\377" \
+  "\216u\251(\377\2X\177\36\377\3\5\1\377\306\0\0\0\377\2\0\0\0\276\0\0" \
+  "\0\15\307\0\0\0\0\2\0\0\0#\0\0\0\341\311\0\0\0\377\2\0\1\0\377Tz\35\377" \
+  "\221u\251(\377\4n\236%\377Hh\31\377\37,\13\377\1\2\0\377\203\0\0\0\377" \
+  "\2\6\10\2\377o\240&\377\224u\251(\377\4V|\35\377\22\32\6\377\0\0\0\377" \
+  "Ca\27\377\220u\251(\377\2Z\203\37\377\12\16\3\377\206\0\0\0\377\2\0\1" \
+  "\0\377a\214!\377\211u\251(\377\2l\234%\377\31$\11\377\213\0\0\0\377\1" \
+  "%6\15\377\202u\251(\377\2u\250(\3773J\22\377\245\0\0\0\377\2\0\0\0\274" \
+  "\0\0\0\16\276\0\0\0\0\2\0\0\0(\0\0\0\337\246\0\0\0\377\2\30#\10\377l" \
+  "\234%\377\202u\251(\377\1Ii\31\377\213\0\0\0\377\2\7\13\3\377Z\202\37" \
+  "\377\211u\251(\377\2t\250(\377\21\31\6\377\206\0\0\0\377\2\1\1\0\377" \
+  "\77[\26\377\220u\251(\377\5a\215!\377\6\11\2\377\6\10\2\377@\\\26\377" \
+  "s\246'\377\224u\251(\377\1\"1\14\377\204\0\0\0\377\3\22\33\6\377;U\24" \
+  "\377d\220\"\377\221u\251(\377\2m\235%\377\14\22\4\377\310\0\0\0\377\2" \
+  "\0\0\0\276\0\0\0\11\305\0\0\0\0\2\0\0\0\16\0\0\0\331\313\0\0\0\377\2" \
+  "\16\25\5\377s\246'\377\223u\251(\377\5j\230$\377B_\26\377\31$\10\377" \
+  "\0\0\0\377Ca\27\377\226u\251(\377\2r\244'\377Sw\34\377\222u\251(\377" \
+  "\2e\222#\377\22\32\6\377\205\0\0\0\377\1(:\16\377\213u\251(\377\2o\241" \
+  "&\377\36,\12\377\212\0\0\0\377\1\33'\11\377\204u\251(\377\1:T\24\377" \
+  "\245\0\0\0\377\2\0\0\0\326\0\0\0\37\274\0\0\0\0\2\0\0\0G\0\0\0\363\246" \
+  "\0\0\0\377\2\34)\12\377o\240&\377\203u\251(\377\1\77[\25\377\212\0\0" \
+  "\0\377\2\13\17\4\377_\212!\377\213u\251(\377\1Km\32\377\205\0\0\0\377" \
+  "\2\4\6\1\377Or\33\377\222u\251(\377\2\\\205\40\377h\226$\377\226u\251" \
+  "(\377\5`\213!\377\6\11\2\377\15\23\4\3775L\22\377^\210\40\377\224u\251" \
+  "(\377\1""1F\21\377\312\0\0\0\377\1\0\0\0\250\305\0\0\0\0\1\0\0\0\242" \
+  "\251\0\0\0\377\10\21\30\6\377&7\15\3779R\23\377Kl\32\377Ty\35\377_\211" \
+  "\40\377h\226$\377q\244'\377\202u\251(\377\1s\246'\377\202m\236%\377\7" \
+  "d\221\"\377U{\35\377Gf\30\3778Q\23\377)<\16\377\27!\10\377\4\5\1\377" \
+  "\220\0\0\0\377\1Or\33\377\226u\251(\377\1i\230$\377\254u\251(\377\2m" \
+  "\235%\377\35*\12\377\203\0\0\0\377\2\15\23\5\377l\234%\377\214u\251(" \
+  "\377\2q\244'\377#2\14\377\211\0\0\0\377\1\24\34\7\377\205u\251(\377\2" \
+  "@]\26\377\0\1\0\377\244\0\0\0\377\2\0\0\0\341\0\0\0'\272\0\0\0\0\2\0" \
+  "\0\0O\0\0\0\367\246\0\0\0\377\2!0\13\377p\242&\377\204u\251(\377\1""7" \
+  "P\23\377\211\0\0\0\377\2\15\23\5\377d\220\"\377\215u\251(\377\1(:\16" \
+  "\377\203\0\0\0\377\2\12\17\3\377[\204\37\377\254u\251(\377\2j\231$\377" \
+  "t\250(\377\225u\251(\377\2m\236%\377\5\7\2\377\217\0\0\0\377\12\1\1\0" \
+  "\377\21\30\6\377$4\14\3773J\22\377B_\27\377Qu\34\377`\213!\377l\234%" \
+  "\377m\236%\377q\243'\377\202u\251(\377\11t\247(\377j\232$\377a\215!\377" \
+  "X\177\36\377Nq\33\377\77[\25\377,@\17\377\27\"\10\377\2\3\1\377\247\0" \
+  "\0\0\377\1\0\0\0h\303\0\0\0\0\1\0\0\0E\250\0\0\0\377\2\24\35\7\377j\232" \
+  "$\377\223u\251(\377\6t\247(\377d\220\"\377Nq\33\3779S\24\377\35*\12\377" \
+  "\4\6\1\377\213\0\0\0\377\1:T\24\377\304u\251(\377\5r\245'\377*=\16\377" \
+  "\0\0\0\377\3\5\1\377\\\205\37\377\216u\251(\377\2r\244'\377!/\13\377" \
+  "\210\0\0\0\377\1\23\33\6\377\206u\251(\377\1@]\26\377\245\0\0\0\377\2" \
+  "\0\0\0\352\0\0\0+\270\0\0\0\0\2\0\0\0X\0\0\0\374\246\0\0\0\377\2\40." \
+  "\13\377r\244'\377\205u\251(\377\1""7P\23\377\210\0\0\0\377\2\13\20\4" \
+  "\377d\220\"\377\216u\251(\377\5o\241&\377\24\34\7\377\0\0\0\377\22\33" \
+  "\6\377e\222#\377\304u\251(\377\1X\177\36\377\213\0\0\0\377\6\1\1\0\377" \
+  "\25\36\7\3772H\21\377Hi\31\377]\207\40\377p\242&\377\223u\251(\377\2" \
+  "q\244'\3772H\21\377\246\0\0\0\377\2\0\0\0\363\0\0\0\30\301\0\0\0\0\2" \
+  "\0\0\0\2\0\0\0\320\251\0\0\0\377\2+>\17\377t\250(\377\227u\251(\377\5" \
+  "r\245'\377Y\201\37\377=X\25\377\34)\12\377\1\2\0\377\207\0\0\0\377\1" \
+  "=W\25\377\305u\251(\377\3u\250(\377:T\24\377Fe\30\377\220u\251(\377\2" \
+  "p\242&\377\35*\12\377\207\0\0\0\377\1\34)\12\377\207u\251(\377\1;U\24" \
+  "\377\245\0\0\0\377\2\0\0\0\351\0\0\0*\266\0\0\0\0\2\0\0\0P\0\0\0\372" \
+  "\246\0\0\0\377\2\34(\11\377p\242&\377\206u\251(\377\1@]\26\377\207\0" \
+  "\0\0\377\2\11\15\3\377a\214!\377\220u\251(\377\3d\220\"\377$4\14\377" \
+  "m\236%\377\305u\251(\377\1`\213!\377\210\0\0\0\377\4\21\31\6\3774K\22" \
+  "\377Qu\34\377m\235%\377\230u\251(\377\2Mo\32\377\1\2\0\377\247\0\0\0" \
+  "\377\1\0\0\0\224\301\0\0\0\0\1\0\0\0>\253\0\0\0\377\2-B\20\377u\250(" \
+  "\377\232u\251(\377\4l\234%\377Kl\32\377'8\15\377\6\11\2\377\203\0\0\0" \
+  "\377\2\4\6\1\377f\223#\377\331u\251(\377\2o\240&\377\26\37\7\377\206" \
+  "\0\0\0\377\1""1F\21\377\210u\251(\377\1""5L\22\377\245\0\0\0\377\2\0" \
+  "\0\0\340\0\0\0\37\264\0\0\0\0\2\0\0\0E\0\0\0\367\246\0\0\0\377\2\27\"" \
+  "\10\377n\237&\377\207u\251(\377\1Ty\35\377\206\0\0\0\377\2\5\7\2\377" \
+  "\\\205\40\377\331u\251(\377\2u\250(\377\31$\10\377\203\0\0\0\377\4\1" \
+  "\2\0\377\34)\12\377@\\\26\377c\217\"\377\233u\251(\377\2Os\33\377\2\3" \
+  "\1\377\250\0\0\0\377\2\0\0\0\365\0\0\0\15\300\0\0\0\0\1\0\0\0\227\254" \
+  "\0\0\0\377\2""0F\20\377u\250(\377\234u\251(\377\5r\245'\377V|\35\377" \
+  "2I\21\377\22\32\6\377Or\33\377\333u\251(\377\2h\226$\377\14\22\4\377" \
+  "\205\0\0\0\377\1Z\202\37\377\210u\251(\377\2u\250(\377/D\20\377\245\0" \
+  "\0\0\377\2\0\0\0\335\0\0\0\30\262\0\0\0\0\2\0\0\0<\0\0\0\365\246\0\0" \
+  "\0\377\2\24\34\7\377l\234%\377\210u\251(\377\2s\246'\377\13\20\4\377" \
+  "\204\0\0\0\377\2\1\1\0\377Ps\33\377\333u\251(\377\5f\223#\377\26\40\10" \
+  "\377'9\15\377Kl\32\377l\234%\377\235u\251(\377\2Rv\34\377\3\4\1\377\252" \
+  "\0\0\0\377\1\0\0\0[\300\0\0\0\0\1\0\0\0\351\255\0\0\0\377\1""3J\21\377" \
+  "\375u\251(\377\2_\211\40\377\5\7\2\377\203\0\0\0\377\1\40.\13\377\212" \
+  "u\251(\377\2t\250(\377*<\16\377\245\0\0\0\377\2\0\0\0\314\0\0\0\14\260" \
+  "\0\0\0\0\2\0\0\0(\0\0\0\355\246\0\0\0\377\2\21\30\6\377j\230$\377\212" \
+  "u\251(\377\1Db\27\377\204\0\0\0\377\1@]\26\377\375u\251(\377\2Ty\35\377" \
+  "\3\5\1\377\253\0\0\0\377\1\0\0\0\257\277\0\0\0\0\1\0\0\0\40\257\0\0\0" \
+  "\377\1""6N\22\377\375u\251(\377\1Lm\32\377\202\0\0\0\377\2\16\24\5\377" \
+  "k\232%\377\213u\251(\377\2s\246'\377%5\15\377\245\0\0\0\377\2\0\0\0\277" \
+  "\0\0\0\7\256\0\0\0\0\2\0\0\0\35\0\0\0\345\246\0\0\0\377\2\15\23\5\377" \
+  "g\224#\377\214u\251(\377\1'9\15\377\202\0\0\0\377\1(:\16\377\375u\251" \
+  "(\377\2V}\35\377\4\6\1\377\254\0\0\0\377\1\0\0\0\343\277\0\0\0\0\1\0" \
+  "\0\0N\260\0\0\0\377\1""8R\23\377\375u\251(\377\3""2H\21\377\31$\10\377" \
+  "i\230$\377\215u\251(\377\2r\244'\377\34)\12\377\245\0\0\0\377\2\0\0\0" \
+  "\246\0\0\0\1\254\0\0\0\0\2\0\0\0\20\0\0\0\324\246\0\0\0\377\2\10\14\3" \
+  "\377b\216\"\377\215u\251(\377\4s\246'\3773J\21\377\23\33\6\377o\241&" \
+  "\377\374u\251(\377\2X\177\36\377\5\7\2\377\256\0\0\0\377\1\0\0\0\23\276" \
+  "\0\0\0\0\1\0\0\0l\261\0\0\0\377\1<V\24\377\374u\251(\377\2s\246'\377" \
+  "q\244'\377\217u\251(\377\2m\236%\377\23\34\7\377\214\0\0\0\377\1\15\23" \
+  "\4\377\230\0\0\0\377\1\0\0\0u\253\0\0\0\0\2\0\0\0\2\0\0\0\262\231\0\0" \
+  "\0\377\1\15\23\4\377\214\0\0\0\377\2\4\5\1\377Y\201\36\377\220u\251(" \
+  "\377\1o\240&\377\374u\251(\377\2Z\203\37\377\6\10\2\377\257\0\0\0\377" \
+  "\1\0\0\0""0\276\0\0\0\0\1\0\0\0v\262\0\0\0\377\1A]\26\377\377u\251(\377" \
+  "\216u\251(\377\2g\224#\377\14\21\4\377\213\0\0\0\377\2Np\33\3775L\22" \
+  "\377\227\0\0\0\377\2\0\0\0\375\0\0\0H\252\0\0\0\0\1\0\0\0\203\231\0\0" \
+  "\0\377\3\27\"\10\377i\227$\377\2\3\1\377\212\0\0\0\377\2\1\1\0\377Nq" \
+  "\33\377\377u\251(\377\216u\251(\377\2_\211\40\377\7\12\2\377\260\0\0" \
+  "\0\377\1\0\0\0;\276\0\0\0\0\1\0\0\0~\221\0\0\0\377\1\1\2\0\377\207\20" \
+  "\27\5\377\1\26\40\10\377\206\27\"\10\377\1\34(\11\377\206\37-\13\377" \
+  "\14!0\13\377'8\15\377);\16\377/D\20\3770F\20\3777O\23\3778P\23\377>Z" \
+  "\25\377\77[\25\377Jk\31\377X\177\36\377j\232$\377\377u\251(\377\217u" \
+  "\251(\377\2_\211\40\377\6\11\2\377\212\0\0\0\377\3h\226#\377u\250(\377" \
+  "1F\21\377\227\0\0\0\377\2\0\0\0\350\0\0\0\32\250\0\0\0\0\2\0\0\0E\0\0" \
+  "\0\375\230\0\0\0\377\4\25\36\7\377l\234%\377u\251(\377\27!\10\377\212" \
+  "\0\0\0\377\1A^\26\377\377u\251(\377\217u\251(\377\14p\242&\377\\\205" \
+  "\37\377Nq\33\377A^\26\377>Z\25\377:T\24\3777O\23\3772I\21\377/D\20\377" \
+  "+>\17\377'8\15\377$4\14\377\206\37-\13\377\1\36,\12\377\207\27\"\10\377" \
+  "\1\21\31\6\377\206\20\27\5\377\1\6\11\2\377\220\0\0\0\377\1\0\0\0D\276" \
+  "\0\0\0\0\1\0\0\0p\222\0\0\0\377\1Np\33\377\377u\251(\377\260u\251(\377" \
+  "\2Y\200\36\377\3\5\1\377\210\0\0\0\377\1\16\25\5\377\202u\251(\377\2" \
+  "u\250(\3771F\21\377\227\0\0\0\377\2\0\0\0\311\0\0\0\7\246\0\0\0\0\2\0" \
+  "\0\0\"\0\0\0\356\230\0\0\0\377\2\27!\10\377n\236%\377\202u\251(\377\1" \
+  "2H\21\377\211\0\0\0\377\1""7P\23\377\377u\251(\377\260u\251(\377\2j\230" \
+  "$\377\11\15\3\377\220\0\0\0\377\1\0\0\0""5\276\0\0\0\0\1\0\0\0X\222\0" \
+  "\0\0\377\2\13\17\4\377k\232%\377\377u\251(\377\260u\251(\377\2Ij\31\377" \
+  "\0\1\0\377\207\0\0\0\377\1(:\16\377\203u\251(\377\2t\247(\377)<\16\377" \
+  "\227\0\0\0\377\1\0\0\0\215\245\0\0\0\0\2\0\0\0\5\0\0\0\307\230\0\0\0" \
+  "\377\2\21\30\6\377i\230$\377\203u\251(\377\1Ln\32\377\210\0\0\0\377\2" \
+  "'8\15\377t\250(\377\377u\251(\377\260u\251(\377\1%5\15\377\221\0\0\0" \
+  "\377\1\0\0\0\36\276\0\0\0\0\1\0\0\0>\223\0\0\0\377\1$4\14\377\377u\251" \
+  "(\377\261u\251(\377\1<V\24\377\207\0\0\0\377\1Kl\32\377\204u\251(\377" \
+  "\2s\246'\377!/\13\377\226\0\0\0\377\2\0\0\0\376\0\0\0E\244\0\0\0\0\1" \
+  "\0\0\0\203\230\0\0\0\377\2\13\17\4\377f\224#\377\204u\251(\377\2m\235" \
+  "%\377\2\3\1\377\206\0\0\0\377\2\34(\12\377q\244'\377\377u\251(\377\260" \
+  "u\251(\377\1Hh\31\377\221\0\0\0\377\2\0\0\0\374\0\0\0\6\276\0\0\0\0\2" \
+  "\0\0\0\15\0\0\0\374\223\0\0\0\377\1Ec\30\377\377u\251(\377\261u\251(" \
+  "\377\1""2I\21\377\205\0\0\0\377\2\3\4\1\377n\237&\377\205u\251(\377\2" \
+  "p\242&\377\30#\10\377\226\0\0\0\377\2\0\0\0\352\0\0\0\27\242\0\0\0\0" \
+  "\2\0\0\0A\0\0\0\375\227\0\0\0\377\2\5\7\2\377_\211\40\377\206u\251(\377" \
+  "\1\37,\13\377\205\0\0\0\377\2\26\37\7\377o\240&\377\377u\251(\377\260" \
+  "u\251(\377\2c\217\"\377\5\7\2\377\221\0\0\0\377\1\0\0\0\317\300\0\0\0" \
+  "\0\1\0\0\0\321\223\0\0\0\377\2\6\11\2\377e\222#\377\377u\251(\377\260" \
+  "u\251(\377\2s\246'\377\"2\14\377\204\0\0\0\377\1\36,\12\377\207u\251" \
+  "(\377\2f\224#\377\13\17\4\377\226\0\0\0\377\1\0\0\0\260\241\0\0\0\0\2" \
+  "\0\0\0\21\0\0\0\343\227\0\0\0\377\2\0\1\0\377Mo\32\377\207u\251(\377" \
+  "\1B_\27\377\204\0\0\0\377\2\13\20\4\377f\224#\377\377u\251(\377\260u" \
+  "\251(\377\2t\247(\377\33'\11\377\222\0\0\0\377\1\0\0\0\226\300\0\0\0" \
+  "\0\1\0\0\0\227\224\0\0\0\377\2\34)\12\377t\250(\377\377u\251(\377\260" \
+  "u\251(\377\2p\242&\377\30\"\10\377\203\0\0\0\377\1Pt\33\377\210u\251" \
+  "(\377\2[\204\37\377\4\6\1\377\226\0\0\0\377\1\0\0\0]\240\0\0\0\0\1\0" \
+  "\0\0\235\230\0\0\0\377\1<W\25\377\210u\251(\377\2n\236%\377\6\11\2\377" \
+  "\202\0\0\0\377\2\6\10\2\377^\210\40\377\377u\251(\377\261u\251(\377\1" \
+  "\77[\25\377\223\0\0\0\377\1\0\0\0]\300\0\0\0\0\1\0\0\0A\225\0\0\0\377" \
+  "\1Dc\27\377\377u\251(\377\261u\251(\377\5j\232$\377\20\27\5\377\0\0\0" \
+  "\377\23\33\6\377t\250(\377\211u\251(\377\2Mo\32\377\0\1\0\377\225\0\0" \
+  "\0\377\2\0\0\0\361\0\0\0\34\236\0\0\0\0\1\0\0\0O\230\0\0\0\377\2+>\17" \
+  "\377u\250(\377\211u\251(\377\4""6N\22\377\0\0\0\377\2\3\1\377Ty\35\377" \
+  "\377u\251(\377\261u\251(\377\2d\220\"\377\4\6\1\377\222\0\0\0\377\2\0" \
+  "\0\0\366\0\0\0\16\300\0\0\0\0\2\0\0\0\2\0\0\0\343\224\0\0\0\377\2\6\11" \
+  "\2\377g\225#\377\377u\251(\377\261u\251(\377\3d\220\"\377\13\20\4\377" \
+  "W}\36\377\213u\251(\377\1:T\24\377\226\0\0\0\377\1\0\0\0\264\235\0\0" \
+  "\0\0\2\0\0\0\17\0\0\0\345\227\0\0\0\377\2\32&\11\377r\244'\377\212u\251" \
+  "(\377\3n\236%\377\17\25\5\377Hg\30\377\377u\251(\377\261u\251(\377\2" \
+  "t\250(\377\34(\11\377\223\0\0\0\377\1\0\0\0\254\302\0\0\0\0\1\0\0\0\215" \
+  "\225\0\0\0\377\1%5\15\377\377u\251(\377\262u\251(\377\1o\240&\377\214" \
+  "u\251(\377\2t\250(\377\40.\13\377\226\0\0\0\377\1\0\0\0N\234\0\0\0\0" \
+  "\1\0\0\0\216\227\0\0\0\377\2\11\15\3\377h\226#\377\214u\251(\377\1o\240" \
+  "&\377\377u\251(\377\262u\251(\377\1Gg\30\377\224\0\0\0\377\1\0\0\0R\302" \
+  "\0\0\0\0\2\0\0\0\30\0\0\0\366\225\0\0\0\377\1Qu\34\377\377u\251(\377" \
+  "\277u\251(\377\2m\236%\377\17\26\5\377\225\0\0\0\377\2\0\0\0\347\0\0" \
+  "\0\21\232\0\0\0\0\2\0\0\0;\0\0\0\375\226\0\0\0\377\2\2\3\1\377X\177\36" \
+  "\377\377u\251(\377\277u\251(\377\2k\233%\377\10\13\3\377\223\0\0\0\377" \
+  "\2\0\0\0\324\0\0\0\1\303\0\0\0\0\1\0\0\0\233\225\0\0\0\377\2\21\31\6" \
+  "\377r\244'\377\377u\251(\377\277u\251(\377\2[\203\37\377\2\3\1\377\225" \
+  "\0\0\0\377\1\0\0\0\220\231\0\0\0\0\2\0\0\0\2\0\0\0\314\227\0\0\0\377" \
+  "\1:T\24\377\377u\251(\377\300u\251(\377\1""1G\21\377\224\0\0\0\377\1" \
+  "\0\0\0b\304\0\0\0\0\1\0\0\0D\226\0\0\0\377\1C`\27\377\377u\251(\377\300" \
+  "u\251(\377\1Dc\27\377\225\0\0\0\377\2\0\0\0\372\0\0\0(\230\0\0\0\0\1" \
+  "\0\0\0b\227\0\0\0\377\2%5\15\377u\250(\377\377u\251(\377\277u\251(\377" \
+  "\2c\217\"\377\1\2\0\377\223\0\0\0\377\2\0\0\0\373\0\0\0\17\303\0\0\0" \
+  "\0\2\0\0\0\3\0\0\0\311\226\0\0\0\377\2\13\20\4\377p\242&\377\377u\251" \
+  "(\377\300u\251(\377\1+>\17\377\225\0\0\0\377\1\0\0\0\275\227\0\0\0\0" \
+  "\2\0\0\0\20\0\0\0\352\226\0\0\0\377\2\17\26\5\377m\236%\377\377u\251" \
+  "(\377\300u\251(\377\1+>\17\377\225\0\0\0\377\1\0\0\0\220\303\0\0\0\0" \
+  "\1\0\0\0o\230\0\0\0\377\1Ca\27\377\377u\251(\377\300u\251(\377\2n\237" \
+  "&\377\16\24\5\377\225\0\0\0\377\1\0\0\0L\226\0\0\0\0\1\0\0\0\215\226" \
+  "\0\0\0\377\2\1\1\0\377X\177\36\377\377u\251(\377\300u\251(\377\2d\220" \
+  "\"\377\2\3\1\377\225\0\0\0\377\2\0\0\0\375\0\0\0:\301\0\0\0\0\2\0\0\0" \
+  "\27\0\0\0\361\230\0\0\0\377\2\14\21\4\377r\245'\377\377u\251(\377\300" \
+  "u\251(\377\2Z\202\37\377\1\1\0\377\224\0\0\0\377\2\0\0\0\324\0\0\0\3" \
+  "\224\0\0\0\0\2\0\0\0!\0\0\0\370\226\0\0\0\377\1""6N\22\377\377u\251(" \
+  "\377\301u\251(\377\1-A\17\377\227\0\0\0\377\2\0\0\0\313\0\0\0\1\300\0" \
+  "\0\0\0\1\0\0\0\233\232\0\0\0\377\1Km\32\377\377u\251(\377\301u\251(\377" \
+  "\1""2I\21\377\225\0\0\0\377\1\0\0\0b\224\0\0\0\0\1\0\0\0\244\226\0\0" \
+  "\0\377\2\24\34\7\377r\244'\377\377u\251(\377\300u\251(\377\2j\231$\377" \
+  "\3\5\1\377\230\0\0\0\377\1\0\0\0`\277\0\0\0\0\2\0\0\0-\0\0\0\374\232" \
+  "\0\0\0\377\1\27!\10\377\377u\251(\377\301u\251(\377\2p\242&\377\21\31" \
+  "\6\377\224\0\0\0\377\2\0\0\0\340\0\0\0\7\222\0\0\0\0\2\0\0\0.\0\0\0\375" \
+  "\225\0\0\0\377\2\2\3\1\377^\210\40\377\377u\251(\377\301u\251(\377\1" \
+  ";U\24\377\231\0\0\0\377\2\0\0\0\344\0\0\0\12\276\0\0\0\0\1\0\0\0\246" \
+  "\234\0\0\0\377\1\\\205\40\377\377u\251(\377\301u\251(\377\2X\177\36\377" \
+  "\1\1\0\377\224\0\0\0\377\1\0\0\0f\222\0\0\0\0\1\0\0\0\250\226\0\0\0\377" \
+  "\1""5L\22\377\377u\251(\377\301u\251(\377\2t\247(\377\14\22\4\377\232" \
+  "\0\0\0\377\1\0\0\0k\275\0\0\0\0\2\0\0\0\26\0\0\0\371\234\0\0\0\377\1" \
+  "1F\21\377\377u\251(\377\302u\251(\377\1""5L\22\377\224\0\0\0\377\2\0" \
+  "\0\0\342\0\0\0\7\220\0\0\0\0\2\0\0\0/\0\0\0\375\225\0\0\0\377\2\25\36" \
+  "\7\377r\245'\377\377u\251(\377\301u\251(\377\1Ty\35\377\233\0\0\0\377" \
+  "\1\0\0\0\323\275\0\0\0\0\1\0\0\0|\235\0\0\0\377\2\12\17\3\377s\246'\377" \
+  "\377u\251(\377\301u\251(\377\2p\242&\377\20\27\5\377\224\0\0\0\377\1" \
+  "\0\0\0l\220\0\0\0\0\1\0\0\0\256\225\0\0\0\377\2\1\1\0\377[\204\37\377" \
+  "\377u\251(\377\302u\251(\377\1,\77\17\377\234\0\0\0\377\1\0\0\0@\274" \
+  "\0\0\0\0\1\0\0\0\327\236\0\0\0\377\1Rw\34\377\377u\251(\377\302u\251" \
+  "(\377\1U{\35\377\224\0\0\0\377\2\0\0\0\335\0\0\0\4\216\0\0\0\0\2\0\0" \
+  "\0(\0\0\0\375\225\0\0\0\377\1""1F\21\377\377u\251(\377\302u\251(\377" \
+  "\2o\241&\377\5\7\2\377\234\0\0\0\377\1\0\0\0\233\273\0\0\0\0\1\0\0\0" \
+  "\35\237\0\0\0\377\1-@\17\377\377u\251(\377\303u\251(\377\1\"2\14\377" \
+  "\224\0\0\0\377\1\0\0\0\\\216\0\0\0\0\1\0\0\0\237\225\0\0\0\377\2\10\14" \
+  "\3\377l\234%\377\377u\251(\377\302u\251(\377\1Qu\34\377\235\0\0\0\377" \
+  "\1\0\0\0\340\273\0\0\0\0\1\0\0\0Q\237\0\0\0\377\2\13\20\4\377u\250(\377" \
+  "\377u\251(\377\302u\251(\377\2g\225#\377\5\7\2\377\223\0\0\0\377\2\0" \
+  "\0\0\330\0\0\0\2\214\0\0\0\0\2\0\0\0$\0\0\0\374\225\0\0\0\377\1Gg\30" \
+  "\377\377u\251(\377\303u\251(\377\1/D\20\377\236\0\0\0\377\1\0\0\0\25" \
+  "\272\0\0\0\0\1\0\0\0t\240\0\0\0\377\1`\213!\377\252u\251(\377\4q\244" \
+  "'\377_\211\40\377\\\205\40\377u\250(\377\377u\251(\377\225u\251(\377" \
+  "\1""8R\23\377\224\0\0\0\377\1\0\0\0L\214\0\0\0\0\1\0\0\0\217\225\0\0" \
+  "\0\377\2\26\40\10\377t\247(\377\377u\251(\377\225u\251(\377\3g\225#\377" \
+  "X\177\36\377l\234%\377\253u\251(\377\1\17\26\5\377\236\0\0\0\377\1\0" \
+  "\0\0:\272\0\0\0\0\1\0\0\0\202\240\0\0\0\377\1>Y\25\377\254u\251(\377" \
+  "\5g\225#\377;U\24\3774L\22\377Z\202\37\377u\250(\377\377u\251(\377\222" \
+  "u\251(\377\2q\244'\377\20\27\5\377\223\0\0\0\377\1\0\0\0\277\213\0\0" \
+  "\0\0\2\0\0\0\20\0\0\0\363\224\0\0\0\377\2\1\1\0\377^\207\40\377\377u" \
+  "\251(\377\223u\251(\377\4f\224#\377;U\24\377,\77\17\377V|\35\377\254" \
+  "u\251(\377\1c\216\"\377\237\0\0\0\377\1\0\0\0H\272\0\0\0\0\1\0\0\0\206" \
+  "\222\0\0\0\377\7\31$\11\3778R\23\377-A\17\377$4\14\377\32&\11\377\21" \
+  "\30\6\377\6\11\2\377\206\0\0\0\377\2\12\16\3\377Ca\27\377\256u\251(\377" \
+  "\5]\207\40\377\40.\13\377\26\37\7\377\77[\25\377h\226#\377\377u\251(" \
+  "\377\221u\251(\377\1Nq\33\377\223\0\0\0\377\2\0\0\0\376\0\0\0-\212\0" \
+  "\0\0\0\1\0\0\0o\225\0\0\0\377\1,\77\17\377\377u\251(\377\221u\251(\377" \
+  "\6p\242&\377Km\32\377\"2\14\377\22\32\6\377Kl\32\377t\250(\377\255u\251" \
+  "(\377\3^\210\40\377\22\33\6\377\1\1\0\377\205\0\0\0\377\7\4\6\1\377\15" \
+  "\23\5\377\26\40\10\377!0\13\377+>\17\3774L\22\377,@\17\377\221\0\0\0" \
+  "\377\1\0\0\0K\272\0\0\0\0\1\0\0\0s\222\0\0\0\377\2\10\13\3\377n\236%" \
+  "\377\205u\251(\377\2s\246'\377j\231$\377\202e\222#\377\2l\234%\377o\240" \
+  "&\377\262u\251(\377\6X\177\36\377\32&\11\377\1\1\0\377\34)\12\377Fe\30" \
+  "\377n\236%\377\377u\251(\377\217u\251(\377\1\34(\11\377\223\0\0\0\377" \
+  "\1\0\0\0\240\211\0\0\0\0\2\0\0\0\4\0\0\0\340\224\0\0\0\377\2\4\6\1\377" \
+  "j\230$\377\377u\251(\377\216u\251(\377\7t\247(\377Sx\34\377);\16\377" \
+  "\5\7\2\377\13\21\4\377Dc\27\377s\246'\377\261u\251(\377\6q\244'\377m" \
+  "\236%\377g\224#\377e\222#\377h\226#\377p\242&\377\206u\251(\377\1%5\15" \
+  "\377\221\0\0\0\377\1\0\0\0""7\272\0\0\0\0\1\0\0\0U\223\0\0\0\377\1""8" \
+  "Q\23\377\277u\251(\377\7Qu\34\377\25\36\7\377\0\0\0\377\4\5\1\377(:\16" \
+  "\377Sx\34\377s\246'\377\377u\251(\377\214u\251(\377\1V}\35\377\223\0" \
+  "\0\0\377\2\0\0\0\366\0\0\0\20\210\0\0\0\0\1\0\0\0I\225\0\0\0\377\1""3" \
+  "J\22\377\377u\251(\377\215u\251(\377\7`\213!\3775L\22\377\13\20\4\377" \
+  "\0\0\0\377\10\14\3\377>Z\25\377p\242&\377\276u\251(\377\2[\204\37\377" \
+  "\0\1\0\377\221\0\0\0\377\1\0\0\0\32\272\0\0\0\0\1\0\0\0#\223\0\0\0\377" \
+  "\2\3\4\1\377d\220\"\377\300u\251(\377\2V|\35\377\25\36\7\377\202\0\0" \
+  "\0\377\4\7\13\3\377/D\20\377Z\202\37\377u\250(\377\377u\251(\377\212" \
+  "u\251(\377\1\36+\12\377\223\0\0\0\377\1\0\0\0m\210\0\0\0\0\1\0\0\0\256" \
+  "\224\0\0\0\377\2\6\10\2\377l\234%\377\377u\251(\377\212u\251(\377\3f" \
+  "\223#\377;U\24\377\22\32\6\377\202\0\0\0\377\3\7\13\3\377>Z\25\377p\242" \
+  "&\377\277u\251(\377\2t\247(\377\27!\10\377\221\0\0\0\377\1\0\0\0\345" \
+  "\273\0\0\0\0\2\0\0\0\2\0\0\0\347\223\0\0\0\377\1$4\14\377\301u\251(\377" \
+  "\3s\246'\377Ec\30\377\13\20\4\377\203\0\0\0\377\3\26\40\10\377B_\26\377" \
+  "k\232%\377\377u\251(\377\210u\251(\377\1V}\35\377\223\0\0\0\377\1\0\0" \
+  "\0\313\207\0\0\0\0\2\0\0\0\24\0\0\0\371\224\0\0\0\377\1""3J\22\377\377" \
+  "u\251(\377\210u\251(\377\4r\244'\377Nq\33\377#3\14\377\2\3\1\377\202" \
+  "\0\0\0\377\3\3\4\1\3772H\21\377j\232$\377\301u\251(\377\1Hg\30\377\222" \
+  "\0\0\0\377\1\0\0\0\253\274\0\0\0\0\1\0\0\0\225\224\0\0\0\377\1Or\33\377" \
+  "\302u\251(\377\3p\242&\377<W\25\377\6\11\2\377\203\0\0\0\377\4\2\3\1" \
+  "\377$4\14\377Rv\34\377t\247(\377\377u\251(\377\206u\251(\377\1\34(\12" \
+  "\377\223\0\0\0\377\1\0\0\0""1\206\0\0\0\0\1\0\0\0s\224\0\0\0\377\2\4" \
+  "\6\1\377j\231$\377\377u\251(\377\206u\251(\377\3_\212!\3772H\21\377\10" \
+  "\14\3\377\203\0\0\0\377\3\1\1\0\377);\16\377e\222#\377\302u\251(\377" \
+  "\2j\230$\377\11\15\3\377\222\0\0\0\377\1\0\0\0Z\274\0\0\0\0\1\0\0\0\77" \
+  "\224\0\0\0\377\2\7\13\3\377h\226#\377\303u\251(\377\3o\241&\377;U\24" \
+  "\377\4\6\1\377\204\0\0\0\377\3\7\13\3\377/D\20\377_\212!\377\377u\251" \
+  "(\377\204u\251(\377\1Z\202\37\377\223\0\0\0\377\1\0\0\0\217\206\0\0\0" \
+  "\0\1\0\0\0\321\224\0\0\0\377\1""6N\22\377\377u\251(\377\204u\251(\377" \
+  "\3k\233%\377>Z\25\377\22\33\6\377\204\0\0\0\377\3\0\1\0\377'8\15\377" \
+  "c\216\"\377\303u\251(\377\2u\250(\377\37,\13\377\222\0\0\0\377\2\0\0" \
+  "\0\363\0\0\0\20\275\0\0\0\0\1\0\0\0\312\224\0\0\0\377\2\37-\13\377s\246" \
+  "'\377\304u\251(\377\3f\223#\377*<\16\377\1\1\0\377\204\0\0\0\377\4\0" \
+  "\1\0\377\36+\12\377Km\32\377q\244'\377\377u\251(\377\202u\251(\377\1" \
+  "\34(\12\377\222\0\0\0\377\2\0\0\0\355\0\0\0\7\204\0\0\0\0\1\0\0\0""7" \
+  "\224\0\0\0\377\2\5\7\2\377j\231$\377\377u\251(\377\5u\251(\377u\250(" \
+  "\377Y\201\36\377+>\17\377\5\7\2\377\205\0\0\0\377\2\27\"\10\377V|\35" \
+  "\377\305u\251(\377\1A]\26\377\223\0\0\0\377\1\0\0\0\220\276\0\0\0\0\1" \
+  "\0\0\0[\225\0\0\0\377\1""3J\21\377\306u\251(\377\2_\211\40\377!0\13\377" \
+  "\206\0\0\0\377\3\10\13\3\3772H\21\377_\212!\377\377u\251(\377\1U{\35" \
+  "\377\223\0\0\0\377\1\0\0\0S\204\0\0\0\0\1\0\0\0\225\224\0\0\0\377\1""2" \
+  "H\21\377\377u\251(\377\3j\232$\377\77[\25\377\22\32\6\377\206\0\0\0\377" \
+  "\3\21\30\6\377Mo\32\377u\250(\377\305u\251(\377\2Tz\35\377\1\2\0\377" \
+  "\222\0\0\0\377\2\0\0\0\372\0\0\0#\276\0\0\0\0\2\0\0\0\2\0\0\0\321\225" \
+  "\0\0\0\377\1=X\25\377\307u\251(\377\2\\\205\37\377\35*\12\377\207\0\0" \
+  "\0\377\3\23\33\6\377>Z\25\377m\236%\377\375u\251(\377\1\26\40\10\377" \
+  "\222\0\0\0\377\1\0\0\0\263\203\0\0\0\0\2\0\0\0\10\0\0\0\356\223\0\0\0" \
+  "\377\2\2\3\1\377g\224#\377\374u\251(\377\4t\247(\377Nq\33\377\37-\13" \
+  "\377\1\1\0\377\206\0\0\0\377\3\17\26\5\377Nq\33\377t\250(\377\306u\251" \
+  "(\377\2Y\201\37\377\5\7\2\377\223\0\0\0\377\1\0\0\0\227\300\0\0\0\0\1" \
+  "\0\0\0J\225\0\0\0\377\2\0\1\0\377Ii\31\377\307u\251(\377\3u\250(\377" \
+  "Nq\33\377\21\31\6\377\207\0\0\0\377\3\10\14\3\3774L\22\377d\220\"\377" \
+  "\373u\251(\377\1Hg\30\377\222\0\0\0\377\2\0\0\0\371\0\0\0\17\202\0\0" \
+  "\0\0\1\0\0\0L\224\0\0\0\377\1&6\15\377\373u\251(\377\3n\236%\377B_\27" \
+  "\377\23\33\6\377\207\0\0\0\377\3\6\11\2\377;U\24\377o\241&\377\307u\251" \
+  "(\377\2c\216\"\377\12\16\3\377\223\0\0\0\377\2\0\0\0\364\0\0\0\32\301" \
+  "\0\0\0\0\1\0\0\0\246\225\0\0\0\377\2\2\3\1\377Pt\33\377\310u\251(\377" \
+  "\3s\246'\377Ca\27\377\12\16\3\377\207\0\0\0\377\4\0\1\0\377\37,\13\377" \
+  "Nq\33\377s\246'\377\370u\251(\377\2q\244'\377\12\17\3\377\222\0\0\0\377" \
+  "\1\0\0\0]\202\0\0\0\0\1\0\0\0\237\224\0\0\0\377\1Y\201\37\377\371u\251" \
+  "(\377\3]\206\40\377-A\17\377\5\7\2\377\207\0\0\0\377\3\2\3\1\3770E\20" \
+  "\377j\232$\377\310u\251(\377\2g\225#\377\15\23\5\377\224\0\0\0\377\1" \
+  "\0\0\0l\302\0\0\0\0\2\0\0\0\24\0\0\0\352\225\0\0\0\377\2\3\5\1\377Ps" \
+  "\33\377\311u\251(\377\3n\237&\3777P\23\377\4\6\1\377\210\0\0\0\377\3" \
+  "\13\21\4\3779R\23\377h\226$\377\367u\251(\377\1""5M\22\377\222\0\0\0" \
+  "\377\4\0\0\0\256\0\0\0\0\0\0\0\4\0\0\0\354\223\0\0\0\377\1\24\34\7\377" \
+  "\367u\251(\377\3p\242&\377Hg\30\377\27\"\10\377\211\0\0\0\377\2$4\14" \
+  "\377c\216\"\377\311u\251(\377\2e\222#\377\21\30\6\377\224\0\0\0\377\2" \
+  "\0\0\0\303\0\0\0\2\303\0\0\0\0\1\0\0\0Z\226\0\0\0\377\2\0\1\0\377;U\24" \
+  "\377\312u\251(\377\3l\234%\3773J\21\377\2\3\1\377\210\0\0\0\377\4\1\1" \
+  "\0\377\37-\13\377Rw\34\377u\250(\377\364u\251(\377\2d\220\"\377\0\1\0" \
+  "\377\221\0\0\0\377\3\0\0\0\363\0\0\0\10\0\0\0>\224\0\0\0\377\1B_\27\377" \
+  "\365u\251(\377\3b\215!\377/D\20\377\6\11\2\377\211\0\0\0\377\2\35*\12" \
+  "\377]\206\40\377\312u\251(\377\2Y\201\36\377\10\14\3\377\224\0\0\0\377" \
+  "\2\0\0\0\365\0\0\0*\305\0\0\0\0\1\0\0\0\224\227\0\0\0\377\2""6N\22\377" \
+  "u\250(\377\312u\251(\377\2_\211\40\377\37-\13\377\212\0\0\0\377\3\26" \
+  "\40\10\377Hi\31\377q\244'\377\363u\251(\377\1\33&\11\377\222\0\0\0\377" \
+  "\2\0\0\0P\0\0\0\221\223\0\0\0\377\2\2\3\1\377k\232%\377\363u\251(\377" \
+  "\3X\177\36\377&6\15\377\1\2\0\377\211\0\0\0\377\3\17\26\5\377Mo\32\377" \
+  "u\250(\377\312u\251(\377\2Ty\35\377\6\10\2\377\225\0\0\0\377\1\0\0\0" \
+  "V\306\0\0\0\0\2\0\0\0\11\0\0\0\331\227\0\0\0\377\2&7\15\377p\242&\377" \
+  "\313u\251(\377\2Ty\35\377\24\35\7\377\212\0\0\0\377\3\12\16\3\3778Q\23" \
+  "\377h\226$\377\361u\251(\377\1Gg\30\377\222\0\0\0\377\2\0\0\0\236\0\0" \
+  "\0\337\223\0\0\0\377\1%5\15\377\361u\251(\377\3q\243'\377Gg\30\377\25" \
+  "\36\7\377\212\0\0\0\377\3\10\13\3\377@]\26\377r\244'\377\313u\251(\377" \
+  "\2Ca\27\377\2\3\1\377\225\0\0\0\377\1\0\0\0\251\307\0\0\0\0\2\0\0\0\7" \
+  "\0\0\0\353\230\0\0\0\377\2\27\"\10\377i\227$\377\313u\251(\377\3t\247" \
+  "(\377Hg\30\377\14\21\4\377\212\0\0\0\377\3\2\3\1\377'9\15\377Z\203\37" \
+  "\377\357u\251(\377\2m\235%\377\2\3\1\377\221\0\0\0\377\1\0\0\0\370\224" \
+  "\0\0\0\377\1Mo\32\377\357u\251(\377\3h\226$\3777O\23\377\11\15\3\377" \
+  "\212\0\0\0\377\3\3\5\1\3774L\22\377m\235%\377\313u\251(\377\2s\246'\377" \
+  "1F\21\377\227\0\0\0\377\1\0\0\0\270\307\0\0\0\0\1\0\0\0Z\232\0\0\0\377" \
+  "\2\14\22\4\377^\207\40\377\314u\251(\377\3p\242&\3779R\23\377\4\6\1\377" \
+  "\213\0\0\0\377\3\34(\11\377Rv\34\377u\250(\377\355u\251(\377\1!0\13\377" \
+  "\245\0\0\0\377\2\5\7\2\377p\242&\377\355u\251(\377\3a\215!\377,\77\17" \
+  "\377\3\4\1\377\213\0\0\0\377\2%6\15\377e\222#\377\314u\251(\377\2n\236" \
+  "%\377\40.\13\377\230\0\0\0\377\2\0\0\0\376\0\0\0#\306\0\0\0\0\1\0\0\0" \
+  "\273\233\0\0\0\377\2\3\5\1\377Jk\31\377\315u\251(\377\3j\230$\377/D\20" \
+  "\377\1\1\0\377\213\0\0\0\377\3\17\26\5\377C`\27\377p\242&\377\353u\251" \
+  "(\377\1Kl\32\377\245\0\0\0\377\1(:\16\377\353u\251(\377\3u\250(\377R" \
+  "w\34\377\34(\11\377\214\0\0\0\377\2\32&\11\377]\206\40\377\315u\251(" \
+  "\377\2b\215!\377\20\27\5\377\232\0\0\0\377\1\0\0\0\177\305\0\0\0\0\2" \
+  "\0\0\0\15\0\0\0\373\234\0\0\0\377\2\0\1\0\377A^\26\377\316u\251(\377" \
+  "\2X\177\36\377\26\40\10\377\214\0\0\0\377\3\15\23\5\377A^\26\377o\241" \
+  "&\377\351u\251(\377\2m\235%\377\2\3\1\377\244\0\0\0\377\1Ln\32\377\351" \
+  "u\251(\377\3u\250(\377Rv\34\377\33'\11\377\214\0\0\0\377\3\11\15\3\377" \
+  "Dc\27\377s\246'\377\315u\251(\377\2]\206\40\377\10\14\3\377\233\0\0\0" \
+  "\377\1\0\0\0\314\305\0\0\0\0\1\0\0\0\77\236\0\0\0\377\2\0\1\0\377Ca\27" \
+  "\377\316u\251(\377\3t\247(\377Fe\30\377\12\16\3\377\214\0\0\0\377\3\10" \
+  "\13\3\3779R\23\377k\232%\377\350u\251(\377\1\34(\11\377\243\0\0\0\377" \
+  "\2\1\2\0\377l\234%\377\347u\251(\377\3r\245'\377Ii\31\377\23\34\7\377" \
+  "\214\0\0\0\377\3\2\3\1\3772H\21\377m\235%\377\316u\251(\377\2_\211\40" \
+  "\377\10\13\3\377\234\0\0\0\377\2\0\0\0\373\0\0\0\10\304\0\0\0\0\1\0\0" \
+  "\0d\237\0\0\0\377\2\0\1\0\377Jk\31\377\317u\251(\377\3n\236%\3774L\22" \
+  "\377\2\3\1\377\214\0\0\0\377\3\4\6\1\3772H\21\377h\226#\377\346u\251" \
+  "(\377\1=X\25\377\243\0\0\0\377\1\32&\11\377\346u\251(\377\3q\243'\377" \
+  "Ca\27\377\15\23\5\377\215\0\0\0\377\2\40.\13\377a\215!\377\317u\251(" \
+  "\377\2e\222#\377\12\16\3\377\236\0\0\0\377\1\0\0\0*\304\0\0\0\0\1\0\0" \
+  "\0y\240\0\0\0\377\2\4\6\1\377d\220\"\377\320u\251(\377\2c\217\"\377\"" \
+  "1\14\377\215\0\0\0\377\3\3\4\1\377-B\20\377d\220\"\377\344u\251(\377" \
+  "\1_\211\40\377\243\0\0\0\377\1;U\24\377\344u\251(\377\3o\240&\377>Y\25" \
+  "\377\12\17\3\377\215\0\0\0\377\2\21\30\6\377Qu\34\377\320u\251(\377\2" \
+  "t\250(\377\27\"\10\377\237\0\0\0\377\1\0\0\0>\304\0\0\0\0\1\0\0\0\200" \
+  "\222\0\0\0\377\2\15\23\4\377\2\3\1\377\215\0\0\0\377\1@]\26\377\322u" \
+  "\251(\377\2Sw\34\377\20\27\5\377\215\0\0\0\377\3\1\2\0\377(:\16\377`" \
+  "\213!\377\342u\251(\377\2t\250(\377\10\14\3\377\242\0\0\0\377\1Y\200" \
+  "\36\377\342u\251(\377\3l\234%\3779S\24\377\7\13\3\377\215\0\0\0\377\3" \
+  "\5\7\2\377=Y\25\377r\244'\377\321u\251(\377\2`\213!\377\4\6\1\377\215" \
+  "\0\0\0\377\1\17\26\5\377\221\0\0\0\377\1\0\0\0D\304\0\0\0\0\1\0\0\0s" \
+  "\222\0\0\0\377\5\34(\11\377n\236%\377Nq\33\377,@\17\377\13\17\4\377\207" \
+  "\0\0\0\377\3\0\1\0\377\35*\12\377Ty\35\377\324u\251(\377\3q\244'\377" \
+  ";U\24\377\4\6\1\377\215\0\0\0\377\3\0\1\0\377$4\14\377\\\205\37\377\341" \
+  "u\251(\377\1#2\14\377\241\0\0\0\377\2\3\5\1\377q\244'\377\340u\251(\377" \
+  "\3i\230$\3774L\22\377\5\7\2\377\216\0\0\0\377\2&7\15\377g\225#\377\324" \
+  "u\251(\377\3e\222#\377+>\17\377\4\6\1\377\207\0\0\0\377\5\4\6\1\377!" \
+  "0\13\377Db\27\377e\222#\377@\\\26\377\221\0\0\0\377\1\0\0\0""7\304\0" \
+  "\0\0\0\1\0\0\0U\223\0\0\0\377\1Ps\33\377\203u\251(\377\10f\224#\377P" \
+  "s\33\377B_\26\3778P\23\3777O\23\3779S\24\377Mo\32\377e\222#\377\330u" \
+  "\251(\377\2f\223#\377$4\14\377\217\0\0\0\377\2\37-\13\377Z\202\37\377" \
+  "\337u\251(\377\1>Y\25\377\241\0\0\0\377\1\33'\11\377\337u\251(\377\3" \
+  "h\226$\3770F\20\377\3\5\1\377\216\0\0\0\377\2\22\32\6\377U{\35\377\330" \
+  "u\251(\377\3m\236%\377Sx\34\377>Y\25\377\2027O\23\377\4>Y\25\377Kl\32" \
+  "\377_\212!\377s\246'\377\202u\251(\377\2l\234%\377\7\13\3\377\221\0\0" \
+  "\0\377\1\0\0\0\32\304\0\0\0\0\1\0\0\0!\223\0\0\0\377\2\21\31\6\377s\246" \
+  "'\377\344u\251(\377\2Sx\34\377\20\27\5\377\217\0\0\0\377\2!/\13\377\\" \
+  "\205\40\377\335u\251(\377\1X\177\36\377\241\0\0\0\377\1""5M\22\377\335" \
+  "u\251(\377\3j\230$\3772I\21\377\4\5\1\377\216\0\0\0\377\3\5\7\2\377>" \
+  "Y\25\377r\245'\377\344u\251(\377\1""2I\21\377\221\0\0\0\377\1\0\0\0\345" \
+  "\306\0\0\0\0\1\0\0\0\354\223\0\0\0\377\1=Y\25\377\345u\251(\377\3q\244" \
+  "'\377<V\24\377\4\6\1\377\217\0\0\0\377\2#2\14\377^\210\40\377\333u\251" \
+  "(\377\1l\234%\377\241\0\0\0\377\1Jk\31\377\333u\251(\377\3k\232%\377" \
+  "5L\22\377\4\6\1\377\217\0\0\0\377\2'8\15\377h\226#\377\345u\251(\377" \
+  "\2^\210\40\377\2\3\1\377\221\0\0\0\377\1\0\0\0\262\306\0\0\0\0\1\0\0" \
+  "\0\264\223\0\0\0\377\2\2\3\1\377Z\202\37\377\346u\251(\377\3j\230$\377" \
+  "+>\17\377\0\1\0\377\217\0\0\0\377\2\37-\13\377\\\205\40\377\332u\251" \
+  "(\377\1\14\22\4\377\240\0\0\0\377\1_\211\40\377\331u\251(\377\3i\230" \
+  "$\377/D\20\377\3\4\1\377\217\0\0\0\377\2\25\36\7\377Y\201\36\377\346" \
+  "u\251(\377\2o\240&\377\20\27\5\377\222\0\0\0\377\1\0\0\0z\306\0\0\0\0" \
+  "\1\0\0\0T\224\0\0\0\377\2\20\27\5\377o\240&\377\347u\251(\377\2Rw\34" \
+  "\377\17\25\5\377\217\0\0\0\377\3\1\1\0\377'9\15\377b\215!\377\330u\251" \
+  "(\377\1\40.\13\377\237\0\0\0\377\2\1\2\0\377q\243'\377\327u\251(\377" \
+  "\3n\236%\3779S\24\377\6\11\2\377\217\0\0\0\377\3\4\6\1\377=X\25\377r" \
+  "\245'\377\347u\251(\377\1-A\17\377\222\0\0\0\377\2\0\0\0\374\0\0\0\33" \
+  "\306\0\0\0\0\2\0\0\0\6\0\0\0\353\224\0\0\0\377\2(:\16\377u\250(\377\347" \
+  "u\251(\377\3p\242&\3777P\23\377\2\3\1\377\217\0\0\0\377\3\1\2\0\377-" \
+  "B\20\377h\226$\377\326u\251(\377\1""0F\20\377\237\0\0\0\377\1\15\23\5" \
+  "\377\326u\251(\377\3r\244'\377@]\26\377\10\14\3\377\220\0\0\0\377\2\"" \
+  "1\14\377e\222#\377\350u\251(\377\1Km\32\377\223\0\0\0\377\1\0\0\0\267" \
+  "\310\0\0\0\0\1\0\0\0\225\225\0\0\0\377\1""6N\23\377\351u\251(\377\2e" \
+  "\222#\377!0\13\377\220\0\0\0\377\3\2\3\1\377/D\20\377j\232$\377\324u" \
+  "\251(\377\1=X\25\377\237\0\0\0\377\1\33&\11\377\324u\251(\377\3s\246" \
+  "'\377C`\27\377\12\16\3\377\220\0\0\0\377\2\17\26\5\377Sw\34\377\351u" \
+  "\251(\377\2U{\35\377\2\3\1\377\223\0\0\0\377\1\0\0\0X\310\0\0\0\0\2\0" \
+  "\0\0\33\0\0\0\365\225\0\0\0\377\1Db\27\377\352u\251(\377\2Rw\34\377\15" \
+  "\23\5\377\220\0\0\0\377\3\6\10\2\3777O\23\377o\240&\377\322u\251(\377" \
+  "\1Ij\31\377\237\0\0\0\377\1'8\15\377\322u\251(\377\3u\250(\377Nq\33\377" \
+  "\22\32\6\377\220\0\0\0\377\3\3\5\1\377;U\24\377q\243'\377\351u\251(\377" \
+  "\2`\213!\377\6\11\2\377\223\0\0\0\377\2\0\0\0\323\0\0\0\3\311\0\0\0\0" \
+  "\1\0\0\0\206\225\0\0\0\377\2\2\3\1\377Tz\35\377\352u\251(\377\3m\235" \
+  "%\377.B\20\377\0\1\0\377\220\0\0\0\377\3\16\25\5\377Kl\32\377t\250(\377" \
+  "\320u\251(\377\1U{\35\377\237\0\0\0\377\1""3J\21\377\321u\251(\377\2" \
+  "]\206\40\377\36+\12\377\221\0\0\0\377\2\31$\11\377_\211\40\377\352u\251" \
+  "(\377\2j\231$\377\20\27\5\377\224\0\0\0\377\1\0\0\0K\312\0\0\0\0\2\0" \
+  "\0\0\15\0\0\0\351\225\0\0\0\377\2\4\6\1\377V}\35\377\353u\251(\377\2" \
+  "Z\202\37\377\25\36\7\377\221\0\0\0\377\2\26\40\10\377U{\35\377\317u\251" \
+  "(\377\1[\204\37\377\237\0\0\0\377\1""9S\24\377\317u\251(\377\3e\222#" \
+  "\377'9\15\377\0\1\0\377\220\0\0\0\377\3\7\13\3\377Ed\30\377t\250(\377" \
+  "\352u\251(\377\2j\232$\377\23\34\7\377\224\0\0\0\377\1\0\0\0\274\314" \
+  "\0\0\0\0\1\0\0\0l\226\0\0\0\377\2\3\4\1\377Sw\34\377\353u\251(\377\3" \
+  "t\250(\377Fe\30\377\6\10\2\377\221\0\0\0\377\2\36,\12\377`\213!\377\315" \
+  "u\251(\377\1`\213!\377\237\0\0\0\377\1=Y\25\377\315u\251(\377\3l\234" \
+  "%\377/D\20\377\2\3\1\377\221\0\0\0\377\2/D\20\377m\236%\377\353u\251" \
+  "(\377\2i\230$\377\21\31\6\377\224\0\0\0\377\2\0\0\0\373\0\0\0""4\315" \
+  "\0\0\0\0\1\0\0\0\262\226\0\0\0\377\2\5\7\2\377W~\36\377\354u\251(\377" \
+  "\2c\217\"\377\34(\12\377\221\0\0\0\377\3\3\4\1\3775M\22\377n\237&\377" \
+  "\313u\251(\377\1d\221\"\377\237\0\0\0\377\1B_\27\377\313u\251(\377\3" \
+  "t\250(\377Hi\31\377\13\21\4\377\221\0\0\0\377\2\14\21\4\377Pt\33\377" \
+  "\354u\251(\377\2k\232%\377\25\36\7\377\225\0\0\0\377\1\0\0\0y\316\0\0" \
+  "\0\0\2\0\0\0\25\0\0\0\347\226\0\0\0\377\2\4\5\1\377Rv\34\377\354u\251" \
+  "(\377\3u\250(\377Ed\30\377\7\12\2\377\221\0\0\0\377\3\12\17\3\377Fe\30" \
+  "\377t\247(\377\311u\251(\377\1g\224#\377\237\0\0\0\377\1Db\27\377\312" \
+  "u\251(\377\2Z\202\37\377\30\"\10\377\221\0\0\0\377\3\0\1\0\377/D\20\377" \
+  "n\237&\377\354u\251(\377\2g\225#\377\21\31\6\377\225\0\0\0\377\2\0\0" \
+  "\0\277\0\0\0\2\317\0\0\0\0\2\0\0\0H\0\0\0\376\226\0\0\0\377\2\1\2\0\377" \
+  "Gf\30\377\355u\251(\377\2k\232%\377+>\17\377\222\0\0\0\377\2\21\31\6" \
+  "\377Rw\34\377\310u\251(\377\1b\216\"\377\237\0\0\0\377\1@\\\26\377\310" \
+  "u\251(\377\2b\215!\377\37-\13\377\222\0\0\0\377\2\27!\10\377_\211\40" \
+  "\377\355u\251(\377\2_\212!\377\13\20\4\377\225\0\0\0\377\2\0\0\0\356" \
+  "\0\0\0\34\321\0\0\0\0\1\0\0\0\217\227\0\0\0\377\2\1\1\0\377Db\27\377" \
+  "\356u\251(\377\2Nq\33\377\13\20\4\377\222\0\0\0\377\2&7\15\377g\224#" \
+  "\377\306u\251(\377\1^\207\40\377\237\0\0\0\377\1<V\24\377\306u\251(\377" \
+  "\3q\243'\377:T\24\377\4\6\1\377\221\0\0\0\377\3\2\3\1\3778Q\23\377q\244" \
+  "'\377\355u\251(\377\2_\211\40\377\12\17\3\377\225\0\0\0\377\2\0\0\0\376" \
+  "\0\0\0U\322\0\0\0\0\2\0\0\0\2\0\0\0\260\230\0\0\0\377\1=W\25\377\356" \
+  "u\251(\377\2m\236%\377,\77\17\377\222\0\0\0\377\3\5\7\2\377=W\25\377" \
+  "r\244'\377\304u\251(\377\1Y\201\36\377\237\0\0\0\377\1""7P\23\377\305" \
+  "u\251(\377\2Rv\34\377\17\26\5\377\222\0\0\0\377\2\26\40\10\377`\213!" \
+  "\377\356u\251(\377\2Y\201\36\377\7\12\2\377\226\0\0\0\377\1\0\0\0w\324" \
+  "\0\0\0\0\2\0\0\0\14\0\0\0\320\230\0\0\0\377\2""0E\20\377t\250(\377\356" \
+  "u\251(\377\2U{\35\377\16\24\5\377\222\0\0\0\377\2\14\22\4\377Jk\31\377" \
+  "\303u\251(\377\1Np\33\377\237\0\0\0\377\1,\77\17\377\303u\251(\377\2" \
+  "a\215!\377\35*\12\377\222\0\0\0\377\3\3\5\1\377C`\27\377t\250(\377\356" \
+  "u\251(\377\2Nq\33\377\3\4\1\377\226\0\0\0\377\1\0\0\0\233\326\0\0\0\0" \
+  "\2\0\0\0\"\0\0\0\354\230\0\0\0\377\2-A\17\377s\246'\377\356u\251(\377" \
+  "\2l\234%\377(:\16\377\223\0\0\0\377\2&6\15\377g\225#\377\301u\251(\377" \
+  "\1@]\26\377\237\0\0\0\377\1\36+\12\377\301u\251(\377\3q\244'\377:T\24" \
+  "\377\4\5\1\377\222\0\0\0\377\2\24\34\7\377^\207\40\377\357u\251(\377" \
+  "\2Nq\33\377\3\4\1\377\226\0\0\0\377\2\0\0\0\314\0\0\0\11\327\0\0\0\0" \
+  "\1\0\0\0\326\231\0\0\0\377\2\37,\13\377o\240&\377\357u\251(\377\2Ty\35" \
+  "\377\14\22\4\377\222\0\0\0\377\3\2\3\1\3773J\21\377o\241&\377\277u\251" \
+  "(\377\1""2I\21\377\237\0\0\0\377\1\20\27\5\377\300u\251(\377\2Jk\31\377" \
+  "\14\21\4\377\222\0\0\0\377\3\3\4\1\377>Z\25\377s\246'\377\357u\251(\377" \
+  "\2C`\27\377\0\1\0\377\227\0\0\0\377\1\0\0\0\234\327\0\0\0\0\2\0\0\0\11" \
+  "\0\0\0\373\232\0\0\0\377\2\34(\12\377n\236%\377\357u\251(\377\2j\232" \
+  "$\377%6\15\377\223\0\0\0\377\2\22\32\6\377V}\35\377\276u\251(\377\1\"" \
+  "1\14\377\237\0\0\0\377\2\3\4\1\377r\244'\377\275u\251(\377\2g\224#\377" \
+  "#3\14\377\223\0\0\0\377\2\21\31\6\377[\203\37\377\360u\251(\377\2Ca\27" \
+  "\377\0\1\0\377\230\0\0\0\377\1\0\0\0\311\327\0\0\0\0\1\0\0\0+\234\0\0" \
+  "\0\377\2\26\40\10\377l\234%\377\360u\251(\377\2Kl\32\377\10\13\3\377" \
+  "\222\0\0\0\377\3\0\1\0\377,\77\17\377l\234%\377\274u\251(\377\1\12\16" \
+  "\3\377\240\0\0\0\377\1\\\205\40\377\273u\251(\377\3t\247(\377B_\26\377" \
+  "\6\10\2\377\222\0\0\0\377\3\0\1\0\3772I\21\377p\242&\377\360u\251(\377" \
+  "\1>Y\25\377\232\0\0\0\377\1\0\0\0\356\327\0\0\0\0\1\0\0\0E\235\0\0\0" \
+  "\377\2\22\32\6\377i\230$\377\360u\251(\377\2k\232%\377$4\14\377\223\0" \
+  "\0\0\377\3\7\13\3\377C`\27\377t\250(\377\271u\251(\377\1e\222#\377\241" \
+  "\0\0\0\377\1C`\27\377\272u\251(\377\2\\\205\37\377\25\36\7\377\223\0" \
+  "\0\0\377\2\21\30\6\377[\204\37\377\360u\251(\377\2u\250(\3771G\21\377" \
+  "\234\0\0\0\377\1\0\0\0\12\326\0\0\0\0\1\0\0\0V\236\0\0\0\377\2\25\36" \
+  "\7\377k\233%\377\360u\251(\377\3u\250(\377B_\26\377\4\5\1\377\223\0\0" \
+  "\0\377\2!0\13\377f\224#\377\270u\251(\377\1Mo\32\377\241\0\0\0\377\1" \
+  "*=\16\377\270u\251(\377\3q\243'\3778P\23\377\2\3\1\377\223\0\0\0\377" \
+  "\2(:\16\377m\236%\377\360u\251(\377\2u\250(\3772I\21\377\235\0\0\0\377" \
+  "\1\0\0\0\32\326\0\0\0\0\1\0\0\0]\235\0\0\0\377\3\14\21\4\377Ca\27\377" \
+  "r\245'\377\362u\251(\377\2a\215!\377\26\40\10\377\223\0\0\0\377\3\5\7" \
+  "\2\377A^\26\377t\247(\377\266u\251(\377\1*=\16\377\241\0\0\0\377\2\11" \
+  "\15\3\377t\247(\377\266u\251(\377\2W~\36\377\21\31\6\377\223\0\0\0\377" \
+  "\2\7\13\3\377Ln\32\377\363u\251(\377\2V}\35\377\32%\11\377\234\0\0\0" \
+  "\377\1\0\0\0\40\326\0\0\0\0\1\0\0\0V\222\0\0\0\377\5""2I\21\377Lm\32" \
+  "\377Ca\27\377:T\24\3772H\21\377\202/D\20\377\5""6N\22\3777O\23\377Fe" \
+  "\30\377^\207\40\377t\250(\377\365u\251(\377\3r\245'\3776N\23\377\1\1" \
+  "\0\377\223\0\0\0\377\2\30\"\10\377_\212!\377\264u\251(\377\2s\246'\377" \
+  "\10\13\3\377\242\0\0\0\377\1W~\36\377\264u\251(\377\3m\236%\377-A\17" \
+  "\377\0\1\0\377\223\0\0\0\377\2\36,\12\377h\226#\377\366u\251(\377\5g" \
+  "\224#\377Mo\32\3779S\24\3777O\23\3771F\21\377\202/D\20\377\5""8Q\23\377" \
+  "A]\26\377Ij\31\377Fe\30\377\5\7\2\377\220\0\0\0\377\1\0\0\0\31\326\0" \
+  "\0\0\0\1\0\0\0F\222\0\0\0\377\2\3\5\1\377Sw\34\377\377u\251(\377\202" \
+  "u\251(\377\2Y\200\36\377\16\25\5\377\223\0\0\0\377\3\2\3\1\377;U\24\377" \
+  "s\246'\377\262u\251(\377\1U{\35\377\243\0\0\0\377\1""2H\21\377\263u\251" \
+  "(\377\2Sx\34\377\14\21\4\377\223\0\0\0\377\3\4\5\1\377A]\26\377t\250" \
+  "(\377\377u\251(\377\3u\251(\377i\230$\377\21\31\6\377\221\0\0\0\377\1" \
+  "\0\0\0\12\326\0\0\0\0\1\0\0\0%\223\0\0\0\377\2\3\5\1\377Sw\34\377\377" \
+  "u\251(\377\202u\251(\377\2n\237&\377(:\16\377\224\0\0\0\377\2\27\"\10" \
+  "\377a\214!\377\261u\251(\377\1);\16\377\243\0\0\0\377\2\11\15\3\377q" \
+  "\244'\377\260u\251(\377\2n\237&\377-A\17\377\224\0\0\0\377\2\23\33\6" \
+  "\377`\213!\377\377u\251(\377\202u\251(\377\2i\230$\377\21\31\6\377\221" \
+  "\0\0\0\377\1\0\0\0\350\327\0\0\0\0\2\0\0\0\5\0\0\0\370\223\0\0\0\377" \
+  "\2\1\2\0\377Mo\32\377\377u\251(\377\203u\251(\377\2Jk\31\377\6\10\2\377" \
+  "\223\0\0\0\377\3\2\3\1\3777O\23\377r\245'\377\256u\251(\377\2h\226#\377" \
+  "\2\3\1\377\244\0\0\0\377\1Gf\30\377\257u\251(\377\2Pt\33\377\13\17\4" \
+  "\377\224\0\0\0\377\2""3J\21\377r\244'\377\377u\251(\377\202u\251(\377" \
+  "\2f\223#\377\16\24\5\377\222\0\0\0\377\1\0\0\0\301\330\0\0\0\0\1\0\0" \
+  "\0\302\224\0\0\0\377\2\1\2\0\377Mo\32\377\377u\251(\377\203u\251(\377" \
+  "\2d\220\"\377\26\40\10\377\224\0\0\0\377\2\25\36\7\377_\211\40\377\255" \
+  "u\251(\377\1""8P\23\377\245\0\0\0\377\2\24\34\7\377u\250(\377\254u\251" \
+  "(\377\2m\235%\377'8\15\377\224\0\0\0\377\2\10\13\3\377Pt\33\377\377u" \
+  "\251(\377\203u\251(\377\2f\223#\377\16\24\5\377\223\0\0\0\377\1\0\0\0" \
+  "\206\330\0\0\0\0\1\0\0\0\200\225\0\0\0\377\2\3\5\1\377Sw\34\377\377u" \
+  "\251(\377\203u\251(\377\2p\242&\377,@\17\377\224\0\0\0\377\3\4\6\1\377" \
+  "A^\26\377t\250(\377\252u\251(\377\2n\237&\377\11\15\3\377\246\0\0\0\377" \
+  "\1Tz\35\377\253u\251(\377\2X\177\36\377\17\26\5\377\224\0\0\0\377\2\26" \
+  "\40\10\377c\217\"\377\377u\251(\377\203u\251(\377\2i\227$\377\21\31\6" \
+  "\377\224\0\0\0\377\1\0\0\0D\330\0\0\0\0\1\0\0\0)\226\0\0\0\377\2\2\3" \
+  "\1\377Hi\31\377\377u\251(\377\204u\251(\377\2Jk\31\377\6\10\2\377\224" \
+  "\0\0\0\377\2\34)\12\377g\224#\377\251u\251(\377\1""7O\23\377\247\0\0" \
+  "\0\377\2\26\37\7\377t\250(\377\250u\251(\377\3r\244'\3774K\22\377\1\1" \
+  "\0\377\224\0\0\0\377\2""0F\20\377q\244'\377\377u\251(\377\203u\251(\377" \
+  "\2a\214!\377\16\24\5\377\224\0\0\0\377\2\0\0\0\350\0\0\0\3\331\0\0\0" \
+  "\0\1\0\0\0\275\227\0\0\0\377\2:T\24\377u\250(\377\377u\251(\377\203u" \
+  "\251(\377\2c\217\"\377\25\36\7\377\224\0\0\0\377\2\7\13\3\377Mo\32\377" \
+  "\247u\251(\377\2h\226#\377\4\6\1\377\250\0\0\0\377\1Ii\31\377\247u\251" \
+  "(\377\2b\215!\377\26\37\7\377\224\0\0\0\377\2\6\11\2\377Nq\33\377\377" \
+  "u\251(\377\204u\251(\377\2W}\36\377\7\13\3\377\225\0\0\0\377\1\0\0\0" \
+  "\202\332\0\0\0\0\1\0\0\0L\230\0\0\0\377\2,\77\17\377s\246'\377\377u\251" \
+  "(\377\203u\251(\377\2p\242&\377*<\16\377\225\0\0\0\377\2,\77\17\377o" \
+  "\240&\377\245u\251(\377\1'8\15\377\251\0\0\0\377\2\14\21\4\377m\236%" \
+  "\377\244u\251(\377\3u\250(\377Ec\30\377\4\6\1\377\224\0\0\0\377\2\24" \
+  "\34\7\377c\217\"\377\377u\251(\377\204u\251(\377\2Jk\31\377\3\4\1\377" \
+  "\225\0\0\0\377\2\0\0\0\366\0\0\0\34\333\0\0\0\0\1\0\0\0\264\230\0\0\0" \
+  "\377\2\32&\11\377k\233%\377\377u\251(\377\204u\251(\377\2Jk\31\377\5" \
+  "\7\2\377\224\0\0\0\377\2\15\23\5\377X\177\36\377\243u\251(\377\1Hh\31" \
+  "\377\253\0\0\0\377\1$4\14\377\243u\251(\377\2i\227$\377\37,\13\377\225" \
+  "\0\0\0\377\2.C\20\377q\244'\377\377u\251(\377\203u\251(\377\2t\250(\377" \
+  "3J\21\377\227\0\0\0\377\1\0\0\0z\334\0\0\0\0\2\0\0\0#\0\0\0\370\230\0" \
+  "\0\0\377\2\21\30\6\377d\220\"\377\377u\251(\377\204u\251(\377\2_\211" \
+  "\40\377\20\27\5\377\224\0\0\0\377\3\0\1\0\3773J\21\377r\245'\377\240" \
+  "u\251(\377\2d\220\"\377\5\7\2\377\254\0\0\0\377\1Ii\31\377\241u\251(" \
+  "\377\2Qu\34\377\11\15\3\377\224\0\0\0\377\2\4\6\1\377Jk\31\377\377u\251" \
+  "(\377\204u\251(\377\2q\244'\377'8\15\377\227\0\0\0\377\2\0\0\0\331\0" \
+  "\0\0\6\335\0\0\0\0\1\0\0\0\203\231\0\0\0\377\2\14\21\4\377Y\201\36\377" \
+  "\377u\251(\377\204u\251(\377\2k\232%\377\36,\12\377\225\0\0\0\377\2\34" \
+  ")\12\377g\225#\377\236u\251(\377\2q\244'\377\33'\11\377\255\0\0\0\377" \
+  "\2\7\13\3\377b\216\"\377\236u\251(\377\3r\244'\3774L\22\377\0\1\0\377" \
+  "\224\0\0\0\377\2\14\21\4\377Z\202\37\377\377u\251(\377\204u\251(\377" \
+  "\2k\232%\377\37,\13\377\227\0\0\0\377\2\0\0\0\375\0\0\0I\336\0\0\0\0" \
+  "\2\0\0\0\1\0\0\0\253\231\0\0\0\377\3\2\3\1\377>Y\25\377u\250(\377\377" \
+  "u\251(\377\203u\251(\377\3t\247(\3776N\23\377\0\1\0\377\224\0\0\0\377" \
+  "\2\10\14\3\377Rv\34\377\234u\251(\377\2t\250(\377'8\15\377\257\0\0\0" \
+  "\377\2\17\25\5\377j\230$\377\234u\251(\377\2e\222#\377\27\"\10\377\225" \
+  "\0\0\0\377\2\34)\12\377j\232$\377\377u\251(\377\204u\251(\377\2X\177" \
+  "\36\377\13\21\4\377\230\0\0\0\377\1\0\0\0w\340\0\0\0\0\2\0\0\0\15\0\0" \
+  "\0\324\232\0\0\0\377\2\35*\12\377j\230$\377\377u\251(\377\204u\251(\377" \
+  "\2Sw\34\377\6\11\2\377\225\0\0\0\377\2/D\20\377r\244'\377\232u\251(\377" \
+  "\1/D\20\377\261\0\0\0\377\2\23\34\7\377m\236%\377\232u\251(\377\2Lm\32" \
+  "\377\6\10\2\377\225\0\0\0\377\2""7O\23\377t\247(\377\377u\251(\377\203" \
+  "u\251(\377\3s\246'\3773J\21\377\0\1\0\377\230\0\0\0\377\2\0\0\0\247\0" \
+  "\0\0\1\341\0\0\0\0\2\0\0\0&\0\0\0\344\232\0\0\0\377\2\15\23\4\377Z\202" \
+  "\37\377\377u\251(\377\204u\251(\377\2]\207\40\377\15\23\4\377\225\0\0" \
+  "\0\377\2\33'\11\377h\226$\377\230u\251(\377\1:T\24\377\263\0\0\0\377" \
+  "\2\34)\12\377o\240&\377\227u\251(\377\3s\246'\3774K\22\377\0\1\0\377" \
+  "\224\0\0\0\377\2\2\3\1\377Dc\27\377\377u\251(\377\204u\251(\377\2k\232" \
+  "%\377\40.\13\377\231\0\0\0\377\2\0\0\0\303\0\0\0\14\343\0\0\0\0\2\0\0" \
+  "\0\35\0\0\0\332\232\0\0\0\377\3\0\1\0\3777O\23\377t\247(\377\377u\251" \
+  "(\377\203u\251(\377\2l\234%\377\36,\12\377\225\0\0\0\377\2\6\11\2\377" \
+  "Nq\33\377\225u\251(\377\2t\250(\377/D\20\377\265\0\0\0\377\2\26\40\10" \
+  "\377k\233%\377\225u\251(\377\2d\221\"\377\26\40\10\377\225\0\0\0\377" \
+  "\2\13\20\4\377[\203\37\377\377u\251(\377\204u\251(\377\2Ty\35\377\11" \
+  "\15\3\377\231\0\0\0\377\2\0\0\0\257\0\0\0\7\345\0\0\0\0\2\0\0\0\35\0" \
+  "\0\0\330\233\0\0\0\377\2!0\13\377h\226$\377\377u\251(\377\203u\251(\377" \
+  "\2r\244'\377,@\17\377\225\0\0\0\377\3\1\1\0\3779R\23\377t\247(\377\222" \
+  "u\251(\377\2t\247(\377/D\20\377\267\0\0\0\377\2\25\36\7\377j\231$\377" \
+  "\223u\251(\377\2Sw\34\377\11\15\3\377\225\0\0\0\377\2\24\35\7\377e\222" \
+  "#\377\377u\251(\377\203u\251(\377\3r\245'\3779S\24\377\1\2\0\377\231" \
+  "\0\0\0\377\2\0\0\0\262\0\0\0\10\347\0\0\0\0\2\0\0\0\14\0\0\0\247\233" \
+  "\0\0\0\377\3\7\12\2\377Hh\31\377u\250(\377\377u\251(\377\203u\251(\377" \
+  "\2A^\26\377\1\2\0\377\225\0\0\0\377\2\36+\12\377j\231$\377\220u\251(" \
+  "\377\2k\232%\377\37,\13\377\271\0\0\0\377\2\14\22\4\377Z\202\37\377\220" \
+  "u\251(\377\3s\246'\3777P\23\377\0\1\0\377\225\0\0\0\377\2$4\14\377o\240" \
+  "&\377\377u\251(\377\203u\251(\377\2^\210\40\377\25\36\7\377\231\0\0\0" \
+  "\377\3\0\0\0\374\0\0\0w\0\0\0\1\352\0\0\0\0\2\0\0\0f\0\0\0\371\233\0" \
+  "\0\0\377\2\33'\11\377d\220\"\377\377u\251(\377\203u\251(\377\2V|\35\377" \
+  "\7\12\2\377\225\0\0\0\377\2\11\15\3\377W}\36\377\216u\251(\377\2U{\35" \
+  "\377\12\16\3\377\273\0\0\0\377\3\1\2\0\377;U\24\377t\250(\377\215u\251" \
+  "(\377\2j\230$\377\33'\11\377\226\0\0\0\377\2;U\24\377u\250(\377\377u" \
+  "\251(\377\202u\251(\377\3p\242&\377/D\20\377\0\1\0\377\231\0\0\0\377" \
+  "\2\0\0\0\347\0\0\0@\355\0\0\0\0\1\0\0\0\214\234\0\0\0\377\3\6\11\2\377" \
+  "Gf\30\377u\250(\377\377u\251(\377\202u\251(\377\2]\206\40\377\13\20\4" \
+  "\377\225\0\0\0\377\2\3\5\1\377Gg\30\377\213u\251(\377\3s\246'\377=X\25" \
+  "\377\2\3\1\377\276\0\0\0\377\2%5\15\377j\230$\377\213u\251(\377\2_\211" \
+  "\40\377\17\25\5\377\225\0\0\0\377\2\1\2\0\377C`\27\377\377u\251(\377" \
+  "\203u\251(\377\2]\207\40\377\24\35\7\377\233\0\0\0\377\1\0\0\0S\356\0" \
+  "\0\0\0\1\0\0\0\216\236\0\0\0\377\2\33&\11\377c\217\"\377\377u\251(\377" \
+  "\202u\251(\377\2j\230$\377\27!\10\377\226\0\0\0\377\2*<\16\377p\242&" \
+  "\377\210u\251(\377\2U{\35\377\20\27\5\377\301\0\0\0\377\3\5\7\2\377>" \
+  "Z\25\377s\246'\377\210u\251(\377\2Gg\30\377\3\5\1\377\225\0\0\0\377\2" \
+  "\7\12\2\377V|\35\377\377u\251(\377\202u\251(\377\3o\241&\377/D\20\377" \
+  "\0\1\0\377\234\0\0\0\377\1\0\0\0T\356\0\0\0\0\1\0\0\0\230\236\0\0\0\377" \
+  "\2\2\3\1\377Ca\27\377\377u\251(\377\203u\251(\377\2n\236%\377\36+\12" \
+  "\377\226\0\0\0\377\2\33'\11\377j\230$\377\205u\251(\377\3l\234%\377/" \
+  "D\20\377\1\1\0\377\304\0\0\0\377\2\32&\11\377_\211\40\377\205u\251(\377" \
+  "\2t\247(\3775M\22\377\226\0\0\0\377\2\13\21\4\377]\207\40\377\377u\251" \
+  "(\377\203u\251(\377\2_\211\40\377\13\17\4\377\235\0\0\0\377\1\0\0\0^" \
+  "\356\0\0\0\0\1\0\0\0\222\232\0\0\0\377\5\1\1\0\377\17\25\5\377$4\14\377" \
+  "Ca\27\377j\230$\377\377u\251(\377\205u\251(\377\2r\245'\377*=\16\377" \
+  "\226\0\0\0\377\2\14\21\4\377[\204\37\377\202u\251(\377\3o\241&\377;U" \
+  "\24\377\6\11\2\377\307\0\0\0\377\3\1\1\0\377);\16\377d\220\"\377\202" \
+  "u\251(\377\2l\234%\377\37-\13\377\226\0\0\0\377\2\23\33\6\377g\224#\377" \
+  "\377u\251(\377\205u\251(\377\5q\244'\377Nq\33\377-A\17\377\24\35\7\377" \
+  "\3\5\1\377\231\0\0\0\377\1\0\0\0W\356\0\0\0\0\1\0\0\0z\222\0\0\0\377" \
+  "\11+>\17\377Nq\33\377Ty\35\377V|\35\377Z\203\37\377_\212!\377e\222#\377" \
+  "l\234%\377q\244'\377\377u\251(\377\212u\251(\377\2t\250(\3772H\21\377" \
+  "\226\0\0\0\377\4\3\5\1\377Fe\30\377B_\27\377\12\17\3\377\313\0\0\0\377" \
+  "\4\2\3\1\377/D\20\377Tz\35\377\17\26\5\377\226\0\0\0\377\2\27\"\10\377" \
+  "l\234%\377\377u\251(\377\212u\251(\377\5t\247(\377m\236%\377g\224#\377" \
+  "b\215!\377]\206\40\377\202V|\35\377\3Nq\33\377A]\26\377\3\4\1\377\220" \
+  "\0\0\0\377\1\0\0\0>\356\0\0\0\0\1\0\0\0`\222\0\0\0\377\2\0\1\0\377@]" \
+  "\26\377\377u\251(\377\223u\251(\377\2>Z\25\377\0\1\0\377\374\0\0\0\377" \
+  "\2!0\13\377p\242&\377\377u\251(\377\222u\251(\377\2^\207\40\377\13\17" \
+  "\4\377\221\0\0\0\377\1\0\0\0%\356\0\0\0\0\1\0\0\0,\224\0\0\0\377\2""3" \
+  "J\21\377u\250(\377\377u\251(\377\222u\251(\377\2Fe\30\377\1\1\0\377\372" \
+  "\0\0\0\377\2'9\15\377r\245'\377\377u\251(\377\222u\251(\377\2Ty\35\377" \
+  "\5\7\2\377\221\0\0\0\377\2\0\0\0\355\0\0\0\1\356\0\0\0\0\2\0\0\0\1\0" \
+  "\0\0\355\224\0\0\0\377\2/D\20\377r\245'\377\377u\251(\377\222u\251(\377" \
+  "\2Ij\31\377\2\3\1\377\370\0\0\0\377\2*<\16\377s\246'\377\377u\251(\377" \
+  "\222u\251(\377\2Mo\32\377\3\5\1\377\222\0\0\0\377\1\0\0\0\263\360\0\0" \
+  "\0\0\1\0\0\0\253\225\0\0\0\377\2\32&\11\377i\227$\377\377u\251(\377\222" \
+  "u\251(\377\2Os\33\377\2\3\1\377\366\0\0\0\377\2/D\20\377t\250(\377\377" \
+  "u\251(\377\221u\251(\377\2s\246'\3773J\22\377\224\0\0\0\377\1\0\0\0n" \
+  "\360\0\0\0\0\1\0\0\0M\226\0\0\0\377\2\10\14\3\377Ty\35\377\377u\251(" \
+  "\377\222u\251(\377\2Tz\35\377\4\6\1\377\364\0\0\0\377\1""8P\23\377\377" \
+  "u\251(\377\222u\251(\377\2f\223#\377\27!\10\377\224\0\0\0\377\2\0\0\0" \
+  "\372\0\0\0\25\360\0\0\0\0\2\0\0\0\6\0\0\0\351\226\0\0\0\377\3\1\2\0\377" \
+  "<W\25\377s\246'\377\377u\251(\377\221u\251(\377\2Qu\34\377\3\4\1\377" \
+  "\362\0\0\0\377\2""1G\21\377u\250(\377\377u\251(\377\221u\251(\377\2T" \
+  "z\35\377\13\20\4\377\225\0\0\0\377\1\0\0\0\264\362\0\0\0\0\1\0\0\0r\230" \
+  "\0\0\0\377\2\24\34\7\377]\206\40\377\377u\251(\377\221u\251(\377\2U{" \
+  "\35\377\4\6\1\377\360\0\0\0\377\1""8R\23\377\377u\251(\377\221u\251(" \
+  "\377\2k\233%\377'8\15\377\226\0\0\0\377\2\0\0\0\376\0\0\0""3\362\0\0" \
+  "\0\0\2\0\0\0\14\0\0\0\351\230\0\0\0\377\3\3\4\1\377;U\24\377s\246'\377" \
+  "\377u\251(\377\220u\251(\377\2Sw\34\377\3\5\1\377\356\0\0\0\377\2""2" \
+  "I\21\377u\250(\377\377u\251(\377\220u\251(\377\2Rv\34\377\14\21\4\377" \
+  "\227\0\0\0\377\1\0\0\0\270\364\0\0\0\0\1\0\0\0Y\232\0\0\0\377\2\24\34" \
+  "\7\377W}\36\377\377u\251(\377\220u\251(\377\2Pt\33\377\2\3\1\377\354" \
+  "\0\0\0\377\2.C\20\377u\250(\377\377u\251(\377\217u\251(\377\2g\225#\377" \
+  "'8\15\377\230\0\0\0\377\2\0\0\0\366\0\0\0$\364\0\0\0\0\2\0\0\0\1\0\0" \
+  "\0\273\233\0\0\0\377\2\37-\13\377b\216\"\377\377u\251(\377\217u\251(" \
+  "\377\2Os\33\377\1\2\0\377\352\0\0\0\377\2-@\17\377u\250(\377\377u\251" \
+  "(\377\216u\251(\377\3o\240&\3773J\21\377\2\3\1\377\231\0\0\0\377\1\0" \
+  "\0\0\177\366\0\0\0\0\2\0\0\0\27\0\0\0\346\233\0\0\0\377\3\5\7\2\377:" \
+  "T\24\377o\240&\377\377u\251(\377\216u\251(\377\1A^\26\377\351\0\0\0\377" \
+  "\2\40.\13\377r\245'\377\377u\251(\377\215u\251(\377\3u\250(\377Nq\33" \
+  "\377\17\26\5\377\232\0\0\0\377\2\0\0\0\273\0\0\0\2\367\0\0\0\0\2\0\0" \
+  "\0G\0\0\0\374\234\0\0\0\377\3\6\11\2\3777O\23\377o\240&\377\377u\251" \
+  "(\377\215u\251(\377\1=W\25\377\347\0\0\0\377\2\35*\12\377q\243'\377\377" \
+  "u\251(\377\214u\251(\377\3u\250(\377Nq\33\377\23\33\6\377\233\0\0\0\377" \
+  "\2\0\0\0\352\0\0\0\35\371\0\0\0\0\2\0\0\0\\\0\0\0\376\235\0\0\0\377\3" \
+  "\15\23\5\377Gg\30\377s\246'\377\377u\251(\377\214u\251(\377\1#3\14\377" \
+  "\345\0\0\0\377\2\7\12\2\377m\235%\377\377u\251(\377\214u\251(\377\2Z" \
+  "\202\37\377\34)\12\377\234\0\0\0\377\2\0\0\0\357\0\0\0-\373\0\0\0\0\1" \
+  "\0\0\0y\237\0\0\0\377\3\15\23\5\377Fe\30\377s\246'\377\377u\251(\377" \
+  "\212u\251(\377\1\26\40\10\377\346\0\0\0\377\1g\224#\377\377u\251(\377" \
+  "\212u\251(\377\2Y\200\36\377\33'\11\377\235\0\0\0\377\2\0\0\0\366\0\0" \
+  "\0G\375\0\0\0\0\2\0\0\0g\0\0\0\375\237\0\0\0\377\2\26\40\10\377Sw\34" \
+  "\377\377u\251(\377\210u\251(\377\2j\230$\377\0\1\0\377\346\0\0\0\377" \
+  "\1Fe\30\377\377u\251(\377\210u\251(\377\3d\220\"\377(:\16\377\0\1\0\377" \
+  "\235\0\0\0\377\2\0\0\0\354\0\0\0""5\377\0\0\0\0\2\0\0\0X\0\0\0\372\240" \
+  "\0\0\0\377\3\24\35\7\377Nq\33\377u\250(\377\377u\251(\377\205u\251(\377" \
+  "\1Gf\30\377\347\0\0\0\377\1#2\14\377\377u\251(\377\206u\251(\377\3c\217" \
+  "\"\377'8\15\377\0\1\0\377\236\0\0\0\377\2\0\0\0\345\0\0\0+\377\0\0\0" \
+  "\0\202\0\0\0\0\2\0\0\0T\0\0\0\366\241\0\0\0\377\2\35*\12\377Z\202\37" \
+  "\377\377u\251(\377\204u\251(\377\1$4\14\377\347\0\0\0\377\2\5\7\2\377" \
+  "q\243'\377\377u\251(\377\203u\251(\377\3i\227$\3770F\20\377\3\4\1\377" \
+  "\237\0\0\0\377\2\0\0\0\343\0\0\0,\377\0\0\0\0\204\0\0\0\0\2\0\0\0(\0" \
+  "\0\0\326\242\0\0\0\377\2\33'\11\377W~\36\377\377u\251(\377\3u\251(\377" \
+  "j\231$\377\2\3\1\377\350\0\0\0\377\1Jk\31\377\377u\251(\377\4u\251(\377" \
+  "f\223#\377+>\17\377\2\3\1\377\240\0\0\0\377\2\0\0\0\270\0\0\0\22\377" \
+  "\0\0\0\0\206\0\0\0\0\2\0\0\0\15\0\0\0\255\243\0\0\0\377\2\37-\13\377" \
+  "\\\205\40\377\376u\251(\377\1A^\26\377\351\0\0\0\377\1\36,\12\377\376" \
+  "u\251(\377\3j\230$\377/D\20\377\3\4\1\377\240\0\0\0\377\3\0\0\0\375\0" \
+  "\0\0w\0\0\0\1\377\0\0\0\0\210\0\0\0\0\3\0\0\0\3\0\0\0{\0\0\0\371\242" \
+  "\0\0\0\377\2\40.\13\377o\240&\377\375u\251(\377\1\27!\10\377\351\0\0" \
+  "\0\377\2\1\1\0\377h\226#\377\375u\251(\377\2=W\25\377\2\3\1\377\240\0" \
+  "\0\0\377\2\0\0\0\352\0\0\0S\377\0\0\0\0\214\0\0\0\0\2\0\0\0#\0\0\0\302" \
+  "\237\0\0\0\377\2\24\34\7\377Km\32\377\376u\251(\377\1^\207\40\377\353" \
+  "\0\0\0\377\1;U\24\377\376u\251(\377\3_\211\40\377\"2\14\377\1\1\0\377" \
+  "\235\0\0\0\377\2\0\0\0\231\0\0\0\20\377\0\0\0\0\216\0\0\0\0\3\0\0\0\3" \
+  "\0\0\0w\0\0\0\370\231\0\0\0\377\5\0\1\0\377\21\31\6\3772H\21\377X\177" \
+  "\36\377u\250(\377\377u\251(\377\1(:\16\377\353\0\0\0\377\2\11\15\3\377" \
+  "p\242&\377\377u\251(\377\4e\222#\377=X\25\377\33&\11\377\3\4\1\377\230" \
+  "\0\0\0\377\2\0\0\0\345\0\0\0J\377\0\0\0\0\222\0\0\0\0\2\0\0\0""2\0\0" \
+  "\0\340\221\0\0\0\377\2\6\11\2\377Hg\30\377\204^\207\40\377\2^\210\40" \
+  "\377n\237&\377\377u\251(\377\203u\251(\377\2e\222#\377\1\2\0\377\354" \
+  "\0\0\0\377\1Ca\27\377\377u\251(\377\203u\251(\377\2s\246'\377a\214!\377" \
+  "\204^\207\40\377\2W}\36\377\25\36\7\377\220\0\0\0\377\2\0\0\0\300\0\0" \
+  "\0\31\377\0\0\0\0\224\0\0\0\0\1\0\0\0\205\222\0\0\0\377\3\3\5\1\377@" \
+  "]\26\377u\250(\377\377u\251(\377\207u\251(\377\1""0E\20\377\355\0\0\0" \
+  "\377\2\17\25\5\377s\246'\377\377u\251(\377\207u\251(\377\2Y\200\36\377" \
+  "\16\25\5\377\221\0\0\0\377\1\0\0\0L\377\0\0\0\0\225\0\0\0\0\1\0\0\0J" \
+  "\224\0\0\0\377\2\37,\13\377c\217\"\377\377u\251(\377\205u\251(\377\2" \
+  "d\221\"\377\3\4\1\377\356\0\0\0\377\1Ec\30\377\377u\251(\377\205u\251" \
+  "(\377\3o\240&\3775M\22\377\1\2\0\377\221\0\0\0\377\2\0\0\0\375\0\0\0" \
+  "\21\377\0\0\0\0\225\0\0\0\0\2\0\0\0\17\0\0\0\374\224\0\0\0\377\3\1\1" \
+  "\0\377+>\17\377j\231$\377\377u\251(\377\203u\251(\377\1#2\14\377\357" \
+  "\0\0\0\377\2\10\13\3\377l\234%\377\377u\251(\377\202u\251(\377\3r\245" \
+  "'\377>Z\25\377\10\13\3\377\223\0\0\0\377\1\0\0\0\322\377\0\0\0\0\227" \
+  "\0\0\0\0\1\0\0\0\304\226\0\0\0\377\3\10\14\3\377@]\26\377o\241&\377\377" \
+  "u\251(\377\1W~\36\377\361\0\0\0\377\1""4K\22\377\377u\251(\377\3u\250" \
+  "(\377Rv\34\377\26\37\7\377\225\0\0\0\377\1\0\0\0\211\377\0\0\0\0\227" \
+  "\0\0\0\0\1\0\0\0h\230\0\0\0\377\3\10\14\3\377:T\24\377l\234%\377\374" \
+  "u\251(\377\2r\245'\377\25\36\7\377\361\0\0\0\377\2\3\4\1\377`\213!\377" \
+  "\374u\251(\377\3s\246'\377Jk\31\377\24\35\7\377\227\0\0\0\377\1\0\0\0" \
+  "-\377\0\0\0\0\227\0\0\0\0\2\0\0\0\22\0\0\0\371\231\0\0\0\377\3\5\7\2" \
+  "\3771F\21\377`\213!\377\372u\251(\377\1""8Q\23\377\363\0\0\0\377\2\27" \
+  "!\10\377s\246'\377\371u\251(\377\3k\233%\377\77[\26\377\16\24\5\377\230" \
+  "\0\0\0\377\1\0\0\0\323\377\0\0\0\0\231\0\0\0\0\1\0\0\0\253\234\0\0\0" \
+  "\377\3\23\34\7\377C`\27\377o\240&\377\366u\251(\377\2Y\200\36\377\1\1" \
+  "\0\377\364\0\0\0\377\1""8R\23\377\366u\251(\377\4t\247(\377Nq\33\377" \
+  "\37-\13\377\1\1\0\377\232\0\0\0\377\1\0\0\0q\377\0\0\0\0\231\0\0\0\0" \
+  "\2\0\0\0)\0\0\0\374\235\0\0\0\377\4\10\13\3\377,@\17\377Sw\34\377r\244" \
+  "'\377\362u\251(\377\2o\240&\377\22\33\6\377\365\0\0\0\377\2\2\3\1\377" \
+  "\\\205\40\377\363u\251(\377\3^\210\40\3778Q\23\377\21\31\6\377\234\0" \
+  "\0\0\377\2\0\0\0\343\0\0\0\7\377\0\0\0\0\232\0\0\0\0\1\0\0\0\245\240" \
+  "\0\0\0\377\4\4\6\1\377#3\14\377Jk\31\377o\240&\377\356u\251(\377\2t\247" \
+  "(\377\40.\13\377\367\0\0\0\377\2\13\17\4\377h\226$\377\356u\251(\377" \
+  "\4s\246'\377Rw\34\377+>\17\377\12\16\3\377\237\0\0\0\377\1\0\0\0j\377" \
+  "\0\0\0\0\233\0\0\0\0\2\0\0\0'\0\0\0\367\242\0\0\0\377\4\4\5\1\377#3\14" \
+  "\377Jk\31\377n\237&\377\353u\251(\377\1""8Q\23\377\371\0\0\0\377\2\26" \
+  "\40\10\377p\242&\377\352u\251(\377\4s\246'\377Rw\34\377+>\17\377\11\15" \
+  "\3\377\241\0\0\0\377\2\0\0\0\332\0\0\0\10\377\0\0\0\0\234\0\0\0\0\1\0" \
+  "\0\0p\245\0\0\0\377\4\5\7\2\377&6\15\377Jk\31\377m\235%\377\347u\251" \
+  "(\377\2Np\33\377\1\1\0\377\372\0\0\0\377\2,\77\17\377u\250(\377\346u" \
+  "\251(\377\4s\246'\377U{\35\3771F\21\377\14\22\4\377\243\0\0\0\377\2\0" \
+  "\0\0\373\0\0\0""8\377\0\0\0\0\236\0\0\0\0\1\0\0\0\235\247\0\0\0\377\4" \
+  "\1\1\0\377\27\"\10\377;U\24\377b\215!\377\343u\251(\377\2Sx\34\377\2" \
+  "\3\1\377\374\0\0\0\377\1""1F\21\377\343u\251(\377\4j\232$\377Fe\30\377" \
+  "#3\14\377\4\6\1\377\246\0\0\0\377\1\0\0\0i\377\0\0\0\0\237\0\0\0\0\2" \
+  "\0\0\0\13\0\0\0\305\252\0\0\0\377\4\20\27\5\3773J\21\377Z\202\37\377" \
+  "t\250(\377\336u\251(\377\2Y\201\37\377\4\6\1\377\376\0\0\0\377\1=W\25" \
+  "\377\337u\251(\377\4d\220\"\377>Z\25\377\34(\11\377\1\2\0\377\250\0\0" \
+  "\0\377\1\0\0\0\225\377\0\0\0\0\241\0\0\0\0\2\0\0\0\16\0\0\0\307\253\0" \
+  "\0\0\377\2\25\36\7\377q\244'\377\335u\251(\377\2\\\205\37\377\11\15\3" \
+  "\377\377\0\0\0\377\2\0\1\0\377A^\26\377\336u\251(\377\1""6N\22\377\252" \
+  "\0\0\0\377\2\0\0\0\230\0\0\0\1\377\0\0\0\0\242\0\0\0\0\2\0\0\0\7\0\0" \
+  "\0\247\251\0\0\0\377\2\7\12\2\377b\215!\377\335u\251(\377\2V|\35\377" \
+  "\6\10\2\377\377\0\0\0\377\203\0\0\0\377\1""8Q\23\377\335u\251(\377\2" \
+  "r\244'\377\32&\11\377\247\0\0\0\377\2\0\0\0\375\0\0\0o\377\0\0\0\0\245" \
+  "\0\0\0\0\3\0\0\0\3\0\0\0~\0\0\0\373\246\0\0\0\377\2\6\11\2\377W~\36\377" \
+  "\335u\251(\377\2Mo\32\377\3\5\1\377\377\0\0\0\377\205\0\0\0\377\2.C\20" \
+  "\377s\246'\377\334u\251(\377\2k\233%\377\26\40\10\377\245\0\0\0\377\2" \
+  "\0\0\0\354\0\0\0S\377\0\0\0\0\250\0\0\0\0\2\0\0\0""5\0\0\0\313\244\0" \
+  "\0\0\377\2\26\40\10\377a\215!\377\334u\251(\377\3u\250(\377:T\24\377" \
+  "\0\1\0\377\377\0\0\0\377\207\0\0\0\377\2\37,\13\377m\235%\377\334u\251" \
+  "(\377\2o\240&\377,\77\17\377\243\0\0\0\377\2\0\0\0\252\0\0\0\32\377\0" \
+  "\0\0\0\252\0\0\0\0\3\0\0\0\2\0\0\0c\0\0\0\344\237\0\0\0\377\4\0\1\0\377" \
+  "\33&\11\377Jk\31\377s\246'\377\334u\251(\377\2p\242&\377&7\15\377\377" \
+  "\0\0\0\377\212\0\0\0\377\2\21\31\6\377c\216\"\377\335u\251(\377\3\\\205" \
+  "\37\377'9\15\377\4\6\1\377\236\0\0\0\377\2\0\0\0\315\0\0\0A\377\0\0\0" \
+  "\0\256\0\0\0\0\3\0\0\0\11\0\0\0r\0\0\0\347\232\0\0\0\377\4\15\23\4\377" \
+  "2H\21\377Nq\33\377j\231$\377\336u\251(\377\2_\211\40\377\22\32\6\377" \
+  "\377\0\0\0\377\214\0\0\0\377\2\6\10\2\377Hi\31\377\336u\251(\377\4p\242" \
+  "&\377W~\36\377;U\24\377\32%\11\377\231\0\0\0\377\3\0\0\0\321\0\0\0S\0" \
+  "\0\0\1\377\0\0\0\0\261\0\0\0\0\4\0\0\0\5\0\0\0V\0\0\0\276\0\0\0\375\227" \
+  "\0\0\0\377\3\2\3\1\377,@\17\377e\222#\377\335u\251(\377\3u\250(\377A" \
+  "^\26\377\3\5\1\377\377\0\0\0\377\217\0\0\0\377\2(:\16\377n\237&\377\335" \
+  "u\251(\377\3o\241&\377>Y\25\377\11\15\3\377\226\0\0\0\377\3\0\0\0\367" \
+  "\0\0\0\246\0\0\0=\377\0\0\0\0\267\0\0\0\0\4\0\0\0\35\0\0\0s\0\0\0\313" \
+  "\0\0\0\376\226\0\0\0\377\4\2\3\1\377&7\15\377V|\35\377u\250(\377\331" \
+  "u\251(\377\2b\216\"\377\34)\12\377\377\0\0\0\377\222\0\0\0\377\2\14\22" \
+  "\4\377Pt\33\377\332u\251(\377\3d\220\"\3775L\22\377\11\15\3\377\225\0" \
+  "\0\0\377\4\0\0\0\371\0\0\0\267\0\0\0_\0\0\0\17\377\0\0\0\0\274\0\0\0" \
+  "\0\3\0\0\0\31\0\0\0c\0\0\0\264\227\0\0\0\377\4\20\27\5\3774K\22\377V" \
+  "}\35\377s\246'\377\324u\251(\377\3r\244'\377:T\24\377\3\5\1\377\377\0" \
+  "\0\0\377\225\0\0\0\377\2%5\15\377h\226$\377\325u\251(\377\4a\214!\377" \
+  ">Z\25\377\33'\11\377\0\1\0\377\224\0\0\0\377\4\0\0\0\373\0\0\0\234\0" \
+  "\0\0R\0\0\0\15\377\0\0\0\0\301\0\0\0\0\2\0\0\0\6\0\0\0\363\231\0\0\0" \
+  "\377\5\5\7\2\377\37,\13\377;U\24\377Ty\35\377g\224#\377\317u\251(\377" \
+  "\2Nq\33\377\17\26\5\377\377\0\0\0\377\230\0\0\0\377\3\5\7\2\377;U\24" \
+  "\377p\242&\377\316u\251(\377\5m\236%\377Y\201\37\377Ca\27\377'9\15\377" \
+  "\13\20\4\377\230\0\0\0\377\1\0\0\0\300\377\0\0\0\0\305\0\0\0\0\1\0\0" \
+  "\0\263\236\0\0\0\377\10\6\11\2\377\31$\11\377-B\20\377@]\26\377Mo\32" \
+  "\377Y\201\36\377d\220\"\377p\242&\377\305u\251(\377\2\\\205\40\377\34" \
+  "(\12\377\377\0\0\0\377\234\0\0\0\377\3\15\23\4\377Ij\31\377t\247(\377" \
+  "\304u\251(\377\10s\246'\377h\226$\377\\\205\37\377Qu\34\377Dc\27\377" \
+  "3J\22\377\37-\13\377\14\21\4\377\235\0\0\0\377\1\0\0\0y\377\0\0\0\0\305" \
+  "\0\0\0\0\1\0\0\0e\246\0\0\0\377\14\6\10\2\377\20\27\5\377\27\"\10\377" \
+  "\37-\13\377'8\15\377/D\20\3778R\23\377C`\27\377Mo\32\377X\177\36\377" \
+  "d\220\"\377t\247(\377\267u\251(\377\2Z\202\37\377!/\13\377\377\0\0\0" \
+  "\377\240\0\0\0\377\3\21\31\6\377Ii\31\377s\246'\377\267u\251(\377\13" \
+  "i\230$\377Z\203\37\377Qu\34\377Ed\30\377;U\24\3771G\21\377)<\16\377!" \
+  "0\13\377\32%\11\377\22\33\6\377\13\17\4\377\245\0\0\0\377\1\0\0\0)\377" \
+  "\0\0\0\0\305\0\0\0\0\2\0\0\0\13\0\0\0\362\260\0\0\0\377\5\5\7\2\377\30" \
+  "#\10\377.C\20\377Kl\32\377n\236%\377\260u\251(\377\3t\250(\377Rw\34\377" \
+  "\35*\12\377\377\0\0\0\377\244\0\0\0\377\3\17\26\5\377Ca\27\377o\240&" \
+  "\377\260u\251(\377\5s\246'\377V}\35\3775M\22\377\37-\13\377\12\16\3\377" \
+  "\257\0\0\0\377\1\0\0\0\303\377\0\0\0\0\307\0\0\0\0\1\0\0\0\230\264\0" \
+  "\0\0\377\2\6\11\2\377Mo\32\377\255u\251(\377\3o\240&\377Db\27\377\21" \
+  "\31\6\377\377\0\0\0\377\250\0\0\0\377\3\7\12\2\3775L\22\377e\222#\377" \
+  "\255u\251(\377\2e\222#\377\22\33\6\377\263\0\0\0\377\1\0\0\0\\\377\0" \
+  "\0\0\0\307\0\0\0\0\2\0\0\0\31\0\0\0\366\264\0\0\0\377\1Tz\35\377\253" \
+  "u\251(\377\3Z\203\37\377-A\17\377\5\7\2\377\377\0\0\0\377\254\0\0\0\377" \
+  "\4\1\1\0\377\37-\13\377Mo\32\377r\244'\377\252u\251(\377\2p\242&\377" \
+  "\10\14\3\377\262\0\0\0\377\2\0\0\0\321\0\0\0\2\377\0\0\0\0\310\0\0\0" \
+  "\0\1\0\0\0\210\263\0\0\0\377\1!/\13\377\251u\251(\377\3d\220\"\377;U" \
+  "\24\377\22\33\6\377\377\0\0\0\377\262\0\0\0\377\4\11\15\3\377/D\20\377" \
+  "X\177\36\377t\250(\377\250u\251(\377\1Dc\27\377\262\0\0\0\377\1\0\0\0" \
+  "K\377\0\0\0\0\311\0\0\0\0\2\0\0\0\7\0\0\0\323\261\0\0\0\377\2\14\22\4" \
+  "\377i\227$\377\245u\251(\377\4t\247(\377[\204\37\377;U\24\377\30\"\10" \
+  "\377\377\0\0\0\377\270\0\0\0\377\4\14\22\4\3771F\21\377Qu\34\377o\241" \
+  "&\377\245u\251(\377\2t\250(\377%5\15\377\260\0\0\0\377\1\0\0\0\236\377" \
+  "\0\0\0\0\313\0\0\0\0\2\0\0\0\40\0\0\0\352\257\0\0\0\377\2\13\21\4\377" \
+  "`\213!\377\243u\251(\377\4h\226#\377Hg\30\377'8\15\377\10\13\3\377\377" \
+  "\0\0\0\377\276\0\0\0\377\5\2\3\1\377\35*\12\377=Y\25\377^\210\40\377" \
+  "u\250(\377\242u\251(\377\2p\242&\377\37-\13\377\256\0\0\0\377\2\0\0\0" \
+  "\310\0\0\0\10\377\0\0\0\0\314\0\0\0\0\2\0\0\0B\0\0\0\365\255\0\0\0\377" \
+  "\2\33&\11\377g\224#\377\237u\251(\377\5s\246'\377_\212!\377Gf\30\377" \
+  ".B\20\377\23\34\7\377\377\0\0\0\377\306\0\0\0\377\5\12\17\3\377'8\15" \
+  "\377\77[\26\377X\177\36\377o\240&\377\237u\251(\377\3r\245'\3772I\21" \
+  "\377\0\1\0\377\253\0\0\0\377\2\0\0\0\336\0\0\0\35\377\0\0\0\0\316\0\0" \
+  "\0\0\2\0\0\0>\0\0\0\360\252\0\0\0\377\3\2\3\1\377=W\25\377t\247(\377" \
+  "\233u\251(\377\6r\244'\377`\213!\377Mo\32\3774K\22\377\34(\11\377\5\7" \
+  "\2\377\377\0\0\0\377\316\0\0\0\377\6\1\2\0\377\24\34\7\377-@\17\377E" \
+  "d\30\377[\203\37\377m\236%\377\234u\251(\377\2U{\35\377\14\21\4\377\251" \
+  "\0\0\0\377\2\0\0\0\326\0\0\0\34\377\0\0\0\0\320\0\0\0\0\2\0\0\0&\0\0" \
+  "\0\325\250\0\0\0\377\2#3\14\377`\213!\377\226u\251(\377\10q\243'\377" \
+  "e\222#\377Y\200\36\377Gf\30\3775L\22\377\"1\14\377\20\27\5\377\1\2\0" \
+  "\377\377\0\0\0\377\331\0\0\0\377\7\12\17\3\377\35*\12\377/D\20\377A]" \
+  "\26\377Ty\35\377a\215!\377m\236%\377\226u\251(\377\3m\235%\3776N\23\377" \
+  "\5\7\2\377\246\0\0\0\377\2\0\0\0\262\0\0\0\16\377\0\0\0\0\322\0\0\0\0" \
+  "\3\0\0\0\11\0\0\0\204\0\0\0\371\244\0\0\0\377\4\14\21\4\377Ec\30\377" \
+  "e\222#\377j\232$\377\210m\236%\377\1k\233%\377\202e\222#\377\13c\216" \
+  "\"\377[\204\37\377Ty\35\377Ln\32\377Dc\27\377=X\25\3776N\22\377+>\17" \
+  "\377\37-\13\377\24\34\7\377\10\13\3\377\377\0\0\0\377\350\0\0\0\377\13" \
+  "\4\6\1\377\20\27\5\377\34(\11\377(:\16\3773J\21\377;U\24\377B_\27\377" \
+  "Jk\31\377Qu\34\377Y\200\36\377`\213!\377\202e\222#\377\1i\230$\377\210" \
+  "m\236%\377\4m\235%\377e\222#\377V|\35\377\33&\11\377\243\0\0\0\377\3" \
+  "\0\0\0\353\0\0\0_\0\0\0\1\377\0\0\0\0\325\0\0\0\0\3\0\0\0\25\0\0\0\210" \
+  "\0\0\0\366\377\0\0\0\377\377\0\0\0\377\340\0\0\0\377\3\0\0\0\346\0\0" \
+  "\0o\0\0\0\12\377\0\0\0\0\331\0\0\0\0\3\0\0\0\40\0\0\0\230\0\0\0\360\377" \
+  "\0\0\0\377\245\0\0\0\377\6\1\0\0\377\22\2\6\377\31\2\11\377!\3\14\377" \
+  "&\3\15\3771\4\21\377\2022\5\22\377\7.\4\20\377&\3\15\377\"\3\14\377\31" \
+  "\2\11\377\27\2\10\377\15\1\4\377\14\1\4\377\377\0\0\0\377\250\0\0\0\377" \
+  "\3\0\0\0\342\0\0\0}\0\0\0\17\377\0\0\0\0\335\0\0\0\0\4\0\0\0\11\0\0\0" \
+  "V\0\0\0\262\0\0\0\372\377\0\0\0\377\233\0\0\0\377\10\15\1\4\3771\4\21" \
+  "\377M\7\33\377f\11$\377\200\14-\377\227\16""5\377\251\17;\377\271\21" \
+  "A\377\216\274\21B\377\10\265\20@\377\235\16""7\377\206\14/\377o\12'\377" \
+  "X\10\37\377@\6\27\377&\3\15\377\5\0\2\377\377\0\0\0\377\235\0\0\0\377" \
+  "\4\0\0\0\360\0\0\0\235\0\0\0@\0\0\0\2\377\0\0\0\0\342\0\0\0\0\4\0\0\0" \
+  "\11\0\0\0D\0\0\0\221\0\0\0\341\377\0\0\0\377\222\0\0\0\377\6\1\0\0\377" \
+  "\40\3\13\377E\6\30\377k\12&\377\221\15""3\377\257\20>\377\236\274\21" \
+  "B\377\5\252\17<\377\204\14.\377^\11!\3779\5\24\377\17\1\5\377\377\0\0" \
+  "\0\377\224\0\0\0\377\5\0\0\0\376\0\0\0\314\0\0\0\200\0\0\0""3\0\0\0\2" \
+  "\377\0\0\0\0\350\0\0\0\0\5\0\0\0\2\0\0\0""5\0\0\0z\0\0\0\300\0\0\0\371" \
+  "\377\0\0\0\377\213\0\0\0\377\4\4\0\2\3771\4\21\377h\11$\377\240\16""8" \
+  "\377\247\274\21B\377\5\272\21A\377\223\15""4\377^\11!\377*\4\17\377\2" \
+  "\0\1\377\377\0\0\0\377\215\0\0\0\377\4\0\0\0\361\0\0\0\260\0\0\0j\0\0" \
+  "\0%\377\0\0\0\0\357\0\0\0\0\3\0\0\0\12\0\0\0\217\0\0\0\376\377\0\0\0" \
+  "\377\207\0\0\0\377\4\22\2\6\377H\7\31\377\177\13-\377\262\20\77\377\256" \
+  "\274\21B\377\4\257\20>\377}\13,\377I\7\32\377\22\2\6\377\377\0\0\0\377" \
+  "\211\0\0\0\377\3\0\0\0\370\0\0\0e\0\0\0\1\377\0\0\0\0\357\0\0\0\0\3\0" \
+  "\0\0\1\0\0\0^\0\0\0\346\377\0\0\0\377\206\0\0\0\377\3\17\1\5\377R\7\35" \
+  "\377\226\16""5\377\266\274\21B\377\3\235\16""7\377X\10\37\377\22\2\6" \
+  "\377\377\0\0\0\377\210\0\0\0\377\2\0\0\0\317\0\0\0""9\377\0\0\0\0\355" \
+  "\0\0\0\0\2\0\0\0+\0\0\0\300\377\0\0\0\377\205\0\0\0\377\4\4\0\2\377\77" \
+  "\6\26\377\204\14.\377\267\21@\377\272\274\21B\377\4\273\21A\377\221\15" \
+  "3\377R\7\35\377\17\1\5\377\377\0\0\0\377\206\0\0\0\377\3\0\0\0\376\0" \
+  "\0\0\242\0\0\0\25\377\0\0\0\0\351\0\0\0\0\3\0\0\0\15\0\0\0\221\0\0\0" \
+  "\372\377\0\0\0\377\204\0\0\0\377\3\20\1\6\377^\11!\377\250\17;\377\300" \
+  "\274\21B\377\3\264\20\77\377o\12'\377\36\3\13\377\377\0\0\0\377\206\0" \
+  "\0\0\377\3\0\0\0\356\0\0\0o\0\0\0\3\377\0\0\0\0\346\0\0\0\0\2\0\0\0@" \
+  "\0\0\0\333\377\0\0\0\377\204\0\0\0\377\3(\4\16\377}\13,\377\270\21A\377" \
+  "\305\274\21B\377\3\226\16""5\377E\6\30\377\3\0\1\377\377\0\0\0\377\205" \
+  "\0\0\0\377\2\0\0\0\276\0\0\0#\377\0\0\0\0\343\0\0\0\0\2\0\0\0\24\0\0" \
+  "\0\252\377\0\0\0\377\204\0\0\0\377\3/\4\21\377\203\14.\377\273\21A\377" \
+  "\311\274\21B\377\3\241\17""8\377P\7\34\377\7\1\3\377\377\0\0\0\377\204" \
+  "\0\0\0\377\3\0\0\0\372\0\0\0\210\0\0\0\6\377\0\0\0\0\340\0\0\0\0\2\0" \
+  "\0\0^\0\0\0\351\377\0\0\0\377\203\0\0\0\377\2.\4\20\377\221\15""3\377" \
+  "\316\274\21B\377\3\252\17<\377R\7\35\377\6\1\2\377\377\0\0\0\377\204" \
+  "\0\0\0\377\2\0\0\0\322\0\0\0""5\377\0\0\0\0\335\0\0\0\0\2\0\0\0\34\0" \
+  "\0\0\264\377\0\0\0\377\203\0\0\0\377\2""0\4\21\377\222\15""3\377\322" \
+  "\274\21B\377\3\255\20=\377^\11!\377\12\1\4\377\377\0\0\0\377\203\0\0" \
+  "\0\377\3\0\0\0\373\0\0\0\221\0\0\0\13\377\0\0\0\0\332\0\0\0\0\2\0\0\0" \
+  "O\0\0\0\352\377\0\0\0\377\202\0\0\0\377\3\40\3\13\377\200\14-\377\273" \
+  "\21B\377\325\274\21B\377\3\247\17:\377L\7\33\377\3\0\1\377\377\0\0\0" \
+  "\377\203\0\0\0\377\2\0\0\0\321\0\0\0-\377\0\0\0\0\327\0\0\0\0\2\0\0\0" \
+  "\22\0\0\0\252\377\0\0\0\377\202\0\0\0\377\3\12\1\4\377k\12&\377\272\21" \
+  "A\377\331\274\21B\377\2\232\16""6\377-\4\20\377\377\0\0\0\377\203\0\0" \
+  "\0\377\3\0\0\0\373\0\0\0\200\0\0\0\3\377\0\0\0\0\324\0\0\0\0\2\0\0\0" \
+  "@\0\0\0\341\276\0\0\0\377\3\6\1\2\377\15\1\4\377\25\2\7\377\205\31\2" \
+  "\11\377\2\15\1\4\377\1\0\1\377\270\0\0\0\377\3\1\0\0\377K\7\32\377\257" \
+  "\20=\377\335\274\21B\377\2\204\14.\377\30\2\10\377\377\0\0\0\377\203" \
+  "\0\0\0\377\2\0\0\0\307\0\0\0$\377\0\0\0\0\321\0\0\0\0\3\0\0\0\7\0\0\0" \
+  "\221\0\0\0\376\264\0\0\0\377\12\24\2\7\377.\4\20\377F\6\31\377Z\10\40" \
+  "\377k\12&\377~\13,\377\221\15""3\377\243\17""9\377\257\20>\377\263\20" \
+  "\77\377\213\274\21B\377\13\263\20\77\377\250\17;\377\236\16""7\377\223" \
+  "\15""4\377\202\14.\377q\12(\377_\11!\377P\7\34\377<\5\25\377+\4\17\377" \
+  "\17\1\5\377\254\0\0\0\377\2\35\3\12\377\216\15""2\377\340\274\21B\377" \
+  "\3\265\20@\377^\11!\377\6\1\2\377\377\0\0\0\377\202\0\0\0\377\2\0\0\0" \
+  "\362\0\0\0f\377\0\0\0\0\317\0\0\0\0\2\0\0\0\35\0\0\0\307\260\0\0\0\377" \
+  "\6\23\2\7\377:\5\24\377a\11\"\377\202\14.\377\234\16""7\377\265\20@\377" \
+  "\240\274\21B\377\6\260\20>\377\224\15""4\377y\13*\377\\\10\40\377<\5" \
+  "\25\377\12\1\4\377\244\0\0\0\377\3\1\0\0\377O\7\34\377\264\20\77\377" \
+  "\343\274\21B\377\2\232\16""6\377#\3\14\377\260\0\0\0\377\2\12\1\4\377" \
+  "\25\2\7\377\204\31\2\11\377\3\30\2\11\377\15\1\4\377\12\1\3\377\311\0" \
+  "\0\0\377\2\0\0\0\237\0\0\0\11\377\0\0\0\0\314\0\0\0\0\2\0\0\0P\0\0\0" \
+  "\361\254\0\0\0\377\5\3\0\1\377*\4\17\377X\10\37\377\202\14.\377\251\17" \
+  ";\377\253\274\21B\377\2\255\20=\377-\4\20\377\242\0\0\0\377\2\24\2\7" \
+  "\377\213\15""1\377\346\274\21B\377\3\271\21A\377d\11#\377\5\0\2\377\242" \
+  "\0\0\0\377\14\7\1\3\377#\3\14\3778\5\24\377H\7\31\377[\10\40\377k\12" \
+  "&\377}\13,\377\217\15""2\377\231\16""6\377\244\17:\377\257\20>\377\273" \
+  "\21B\377\212\274\21B\377\13\270\21@\377\257\20>\377\251\17;\377\226\16" \
+  "5\377\204\14.\377r\12(\377^\11!\377M\7\33\3775\5\23\377\33\2\12\377\4" \
+  "\0\2\377\276\0\0\0\377\2\0\0\0\330\0\0\0*\377\0\0\0\0\311\0\0\0\0\3\0" \
+  "\0\0\2\0\0\0\210\0\0\0\376\251\0\0\0\377\5\1\0\0\377&\3\15\377X\10\37" \
+  "\377\210\14""0\377\263\20\77\377\260\274\21B\377\1\236\16""7\377\241" \
+  "\0\0\0\377\2:\5\24\377\255\20=\377\351\274\21B\377\2\234\16""7\377%\3" \
+  "\15\377\233\0\0\0\377\6\1\0\1\377-\4\20\377T\10\36\377o\12'\377\213\15" \
+  "1\377\247\17:\377\240\274\21B\377\7\272\21A\377\244\17""9\377\212\14" \
+  "0\377l\12&\377F\6\31\377\40\3\13\377\2\0\1\377\271\0\0\0\377\2\0\0\0" \
+  "\362\0\0\0T\377\0\0\0\0\307\0\0\0\0\2\0\0\0\21\0\0\0\265\250\0\0\0\377" \
+  "\4\4\0\2\3773\5\22\377n\12'\377\247\17;\377\264\274\21B\377\2\273\21" \
+  "B\377\1\0\1\377\236\0\0\0\377\3\4\0\2\377f\11$\377\273\21B\377\353\274" \
+  "\21B\377\2\265\20@\377Q\7\34\377\231\0\0\0\377\2\15\1\5\377\221\15""3" \
+  "\377\253\274\21B\377\5\263\20\77\377\216\15""2\377f\11$\3778\5\24\377" \
+  "\13\1\4\377\266\0\0\0\377\3\0\0\0\376\0\0\0\210\0\0\0\3\377\0\0\0\0\304" \
+  "\0\0\0\0\2\0\0\0'\0\0\0\325\246\0\0\0\377\4\1\0\0\377/\4\21\377v\13)" \
+  "\377\261\20>\377\267\274\21B\377\1\255\20=\377\236\0\0\0\377\2\25\2\10" \
+  "\377\230\16""5\377\357\274\21B\377\2}\13,\377\10\1\3\377\227\0\0\0\377" \
+  "\1b\11\"\377\260\274\21B\377\5\272\21A\377\226\16""5\377g\11$\3777\5" \
+  "\23\377\7\1\2\377\264\0\0\0\377\2\0\0\0\262\0\0\0\20\377\0\0\0\0\302" \
+  "\0\0\0\0\2\0\0\0L\0\0\0\363\245\0\0\0\377\3#\3\14\377k\12&\377\252\17" \
+  "<\377\272\274\21B\377\1w\13*\377\235\0\0\0\377\2'\4\16\377\251\17;\377" \
+  "\361\274\21B\377\2\232\16""6\377\30\2\10\377\226\0\0\0\377\1\202\14." \
+  "\377\264\274\21B\377\4\264\20\77\377\200\14-\377E\6\30\377\16\1\5\377" \
+  "\262\0\0\0\377\2\0\0\0\335\0\0\0'\377\0\0\0\0\300\0\0\0\0\2\0\0\0j\0" \
+  "\0\0\374\243\0\0\0\377\4\1\0\1\3777\5\23\377\210\14""0\377\273\21B\377" \
+  "\274\274\21B\377\1A\6\27\377\234\0\0\0\377\2C\6\30\377\266\20@\377\363" \
+  "\274\21B\377\2\256\20=\3770\4\21\377\225\0\0\0\377\1s\12(\377\267\274" \
+  "\21B\377\4\272\21A\377\213\15""1\377E\6\30\377\10\1\3\377\260\0\0\0\377" \
+  "\2\0\0\0\355\0\0\0>\377\0\0\0\0\275\0\0\0\0\2\0\0\0\2\0\0\0\221\243\0" \
+  "\0\0\377\3\17\1\5\377^\11!\377\252\17<\377\276\274\21B\377\2\244\17:" \
+  "\377\4\0\1\377\233\0\0\0\377\2T\10\36\377\273\21A\377\365\274\21B\377" \
+  "\2\266\20@\377A\6\27\377\224\0\0\0\377\1=\6\25\377\272\274\21B\377\4" \
+  "\267\21@\377}\13,\3779\5\24\377\3\0\1\377\256\0\0\0\377\2\0\0\0\370\0" \
+  "\0\0Y\377\0\0\0\0\273\0\0\0\0\2\0\0\0\11\0\0\0\254\242\0\0\0\377\3\13" \
+  "\1\4\377^\11!\377\261\20>\377\300\274\21B\377\1O\7\34\377\233\0\0\0\377" \
+  "\1f\11$\377\370\274\21B\377\2\273\21B\377S\7\35\377\223\0\0\0\377\2\12" \
+  "\1\4\377\267\21@\377\274\274\21B\377\3\237\16""8\377P\7\34\377\12\1\3" \
+  "\377\255\0\0\0\377\2\0\0\0\376\0\0\0\200\377\0\0\0\0\271\0\0\0\0\2\0" \
+  "\0\0\16\0\0\0\274\241\0\0\0\377\3\12\1\4\377\\\10\40\377\257\20>\377" \
+  "\301\274\21B\377\2\247\17:\377\5\0\2\377\232\0\0\0\377\1g\11$\377\373" \
+  "\274\21B\377\1^\10!\377\223\0\0\0\377\1o\12'\377\276\274\21B\377\3\267" \
+  "\21@\377w\13*\377!\3\14\377\255\0\0\0\377\2\0\0\0\214\0\0\0\1\377\0\0" \
+  "\0\0\266\0\0\0\0\2\0\0\0\23\0\0\0\317\240\0\0\0\377\3\4\0\1\377T\10\36" \
+  "\377\257\20=\377\303\274\21B\377\1=\6\25\377\231\0\0\0\377\2\1\0\0\377" \
+  "o\12'\377\375\274\21B\377\1d\11#\377\222\0\0\0\377\2\30\2\11\377\270" \
+  "\21A\377\277\274\21B\377\3\273\21A\377|\13+\377\37\3\13\377\254\0\0\0" \
+  "\377\2\0\0\0\240\0\0\0\2\377\0\0\0\0\264\0\0\0\0\2\0\0\0\22\0\0\0\317" \
+  "\240\0\0\0\377\2E\6\30\377\247\17:\377\304\274\21B\377\1\177\13-\377" \
+  "\232\0\0\0\377\1c\11#\377\377\274\21B\377\1_\11!\377\222\0\0\0\377\1" \
+  "r\12(\377\301\274\21B\377\3\273\21A\377z\13+\377\35\3\12\377\253\0\0" \
+  "\0\377\2\0\0\0\237\0\0\0\2\377\0\0\0\0\262\0\0\0\0\2\0\0\0\22\0\0\0\316" \
+  "\237\0\0\0\377\2\30\2\11\377\202\14.\377\305\274\21B\377\2\263\20\77" \
+  "\377\26\2\10\377\231\0\0\0\377\1Q\7\34\377\377\274\21B\377\202\274\21" \
+  "B\377\1M\7\33\377\221\0\0\0\377\2\20\1\6\377\257\20=\377\302\274\21B" \
+  "\377\3\272\21A\377u\13)\377\22\2\6\377\252\0\0\0\377\2\0\0\0\236\0\0" \
+  "\0\2\377\0\0\0\0\260\0\0\0\0\2\0\0\0\22\0\0\0\315\236\0\0\0\377\3\1\0" \
+  "\1\377S\7\35\377\265\20\77\377\306\274\21B\377\1K\7\32\377\231\0\0\0" \
+  "\377\2;\5\25\377\273\21A\377\377\274\21B\377\202\274\21B\377\2\270\21" \
+  "A\3771\4\21\377\221\0\0\0\377\1E\6\30\377\304\274\21B\377\3\265\20@\377" \
+  "^\11!\377\7\1\2\377\251\0\0\0\377\2\0\0\0\235\0\0\0\2\377\0\0\0\0\256" \
+  "\0\0\0\0\2\0\0\0\21\0\0\0\315\236\0\0\0\377\2%\3\15\377\231\16""6\377" \
+  "\307\274\21B\377\1w\13*\377\231\0\0\0\377\2)\4\16\377\265\20@\377\377" \
+  "\274\21B\377\204\274\21B\377\2\257\20>\377\35\3\12\377\220\0\0\0\377" \
+  "\2\1\0\0\377\216\15""2\377\305\274\21B\377\2\237\16""8\3775\5\23\377" \
+  "\251\0\0\0\377\2\0\0\0\235\0\0\0\2\377\0\0\0\0\254\0\0\0\0\2\0\0\0\5" \
+  "\0\0\0\274\235\0\0\0\377\3\1\0\0\377V\10\36\377\266\20@\377\307\274\21" \
+  "B\377\2\243\17""9\377\13\1\4\377\230\0\0\0\377\2\14\1\4\377\245\17:\377" \
+  "\377\274\21B\377\206\274\21B\377\2\236\16""7\377\12\1\4\377\220\0\0\0" \
+  "\377\2\33\2\11\377\262\20>\377\306\274\21B\377\2x\13*\377\16\1\5\377" \
+  "\250\0\0\0\377\1\0\0\0\204\377\0\0\0\0\253\0\0\0\0\2\0\0\0\1\0\0\0\251" \
+  "\235\0\0\0\377\2\16\1\5\377\205\14/\377\310\274\21B\377\2\270\21@\377" \
+  "(\4\16\377\231\0\0\0\377\1\200\14-\377\377\274\21B\377\210\274\21B\377" \
+  "\1\200\14-\377\221\0\0\0\377\1=\6\25\377\307\274\21B\377\2\260\20>\377" \
+  "K\7\32\377\250\0\0\0\377\1\0\0\0l\377\0\0\0\0\252\0\0\0\0\1\0\0\0\204" \
+  "\235\0\0\0\377\2""2\5\22\377\254\20<\377\311\274\21B\377\1E\6\30\377" \
+  "\231\0\0\0\377\1E\6\30\377\377\274\21B\377\212\274\21B\377\1E\6\30\377" \
+  "\221\0\0\0\377\1t\12)\377\310\274\21B\377\2}\13,\377\15\1\4\377\246\0" \
+  "\0\0\377\2\0\0\0\374\0\0\0O\377\0\0\0\0\250\0\0\0\0\1\0\0\0h\235\0\0" \
+  "\0\377\2P\7\34\377\270\21@\377\311\274\21B\377\1o\12'\377\231\0\0\0\377" \
+  "\2\30\2\11\377\262\20>\377\377\274\21B\377\212\274\21B\377\2\260\20>" \
+  "\377\23\2\7\377\220\0\0\0\377\2\10\1\3\377\236\16""7\377\310\274\21B" \
+  "\377\2\244\17:\377(\4\16\377\246\0\0\0\377\2\0\0\0\363\0\0\0""1\377\0" \
+  "\0\0\0\246\0\0\0\0\2\0\0\0E\0\0\0\372\233\0\0\0\377\2\6\1\2\377{\13+" \
+  "\377\312\274\21B\377\2\207\14/\377\2\0\1\377\231\0\0\0\377\1\200\14-" \
+  "\377\377\274\21B\377\214\274\21B\377\1\200\14-\377\221\0\0\0\377\2\30" \
+  "\2\10\377\255\20=\377\310\274\21B\377\3\271\21A\377^\11!\377\1\0\1\377" \
+  "\245\0\0\0\377\2\0\0\0\346\0\0\0\36\377\0\0\0\0\244\0\0\0\0\2\0\0\0'" \
+  "\0\0\0\355\233\0\0\0\377\2\14\1\4\377\211\14""0\377\312\274\21B\377\2" \
+  "\246\17:\377\20\1\6\377\231\0\0\0\377\1/\4\21\377\377\274\21B\377\216" \
+  "\274\21B\377\1""6\5\23\377\221\0\0\0\377\2""6\5\23\377\272\21A\377\311" \
+  "\274\21B\377\2\177\13-\377\11\1\3\377\245\0\0\0\377\2\0\0\0\314\0\0\0" \
+  "\13\377\0\0\0\0\242\0\0\0\0\2\0\0\0\20\0\0\0\333\233\0\0\0\377\2\31\2" \
+  "\11\377\236\16""7\377\312\274\21B\377\2\261\20>\377\40\3\13\377\232\0" \
+  "\0\0\377\1\221\15""3\377\377\274\21B\377\216\274\21B\377\2\233\16""6" \
+  "\377\1\0\1\377\221\0\0\0\377\1R\7\35\377\312\274\21B\377\2\241\17""8" \
+  "\377\33\2\12\377\245\0\0\0\377\2\0\0\0\261\0\0\0\1\377\0\0\0\0\240\0" \
+  "\0\0\0\2\0\0\0\2\0\0\0\263\233\0\0\0\377\2#\3\14\377\254\20<\377\312" \
+  "\274\21B\377\2\267\21@\377-\4\20\377\232\0\0\0\377\1""3\5\22\377\377" \
+  "\274\21B\377\220\274\21B\377\1:\5\24\377\222\0\0\0\377\1y\13*\377\312" \
+  "\274\21B\377\2\251\17;\377&\3\15\377\245\0\0\0\377\1\0\0\0v\377\0\0\0" \
+  "\0\240\0\0\0\0\1\0\0\0u\233\0\0\0\377\2*\4\17\377\260\20>\377\312\274" \
+  "\21B\377\2\273\21B\377@\6\27\377\233\0\0\0\377\1\206\14/\377\377\274" \
+  "\21B\377\220\274\21B\377\1\216\15""2\377\222\0\0\0\377\2\6\1\2\377\221" \
+  "\15""3\377\312\274\21B\377\2\265\20\77\377<\5\25\377\244\0\0\0\377\2" \
+  "\0\0\0\372\0\0\0<\377\0\0\0\0\236\0\0\0\0\2\0\0\0>\0\0\0\375\232\0\0" \
+  "\0\377\2""2\5\22\377\264\20\77\377\313\274\21B\377\1]\10!\377\233\0\0" \
+  "\0\377\2\22\2\6\377\272\21A\377\377\274\21B\377\221\274\21B\377\1\40" \
+  "\3\13\377\222\0\0\0\377\2\12\1\4\377\233\16""6\377\312\274\21B\377\2" \
+  "\273\21B\377R\7\35\377\244\0\0\0\377\2\0\0\0\346\0\0\0\24\377\0\0\0\0" \
+  "\234\0\0\0\0\2\0\0\0\15\0\0\0\336\232\0\0\0\377\2)\4\16\377\263\20\77" \
+  "\377\313\274\21B\377\2v\13)\377\1\0\0\377\233\0\0\0\377\1J\7\32\377\377" \
+  "\274\21B\377\222\274\21B\377\1e\11#\377\223\0\0\0\377\2\30\2\10\377\253" \
+  "\17<\377\312\274\21B\377\2\273\21B\377V\10\36\377\244\0\0\0\377\1\0\0" \
+  "\0\257\377\0\0\0\0\234\0\0\0\0\1\0\0\0\234\232\0\0\0\377\2%\3\15\377" \
+  "\262\20>\377\313\274\21B\377\2|\13+\377\1\0\1\377\234\0\0\0\377\1w\13" \
+  "*\377\377\274\21B\377\222\274\21B\377\1\244\17""9\377\224\0\0\0\377\2" \
+  "&\3\15\377\264\20\77\377\313\274\21B\377\1d\11#\377\244\0\0\0\377\1\0" \
+  "\0\0b\377\0\0\0\0\232\0\0\0\0\2\0\0\0F\0\0\0\376\231\0\0\0\377\2\35\3" \
+  "\12\377\255\20=\377\313\274\21B\377\2\207\14/\377\4\0\1\377\235\0\0\0" \
+  "\377\1\231\16""6\377\377\274\21B\377\223\274\21B\377\1\33\2\12\377\224" \
+  "\0\0\0\377\2>\6\26\377\272\21A\377\313\274\21B\377\1Z\10\40\377\243\0" \
+  "\0\0\377\2\0\0\0\357\0\0\0\32\377\0\0\0\0\230\0\0\0\0\2\0\0\0\21\0\0" \
+  "\0\346\231\0\0\0\377\2\17\1\5\377\240\16""8\377\313\274\21B\377\2\227" \
+  "\16""5\377\12\1\4\377\236\0\0\0\377\1\253\17<\377\377\274\21B\377\223" \
+  "\274\21B\377\1K\7\32\377\225\0\0\0\377\2D\6\30\377\273\21A\377\313\274" \
+  "\21B\377\1T\10\36\377\243\0\0\0\377\1\0\0\0\266\377\0\0\0\0\230\0\0\0" \
+  "\0\1\0\0\0\233\231\0\0\0\377\2\4\0\1\377\217\15""2\377\313\274\21B\377" \
+  "\2\237\16""8\377\20\1\6\377\237\0\0\0\377\1\262\20\77\377\377\274\21" \
+  "B\377\223\274\21B\377\1n\12'\377\226\0\0\0\377\1O\7\34\377\313\274\21" \
+  "B\377\2\273\21B\377G\6\31\377\243\0\0\0\377\1\0\0\0_\377\0\0\0\0\226" \
+  "\0\0\0\0\2\0\0\0=\0\0\0\376\231\0\0\0\377\1w\13*\377\313\274\21B\377" \
+  "\2\234\16""7\377\17\1\5\377\240\0\0\0\377\1\254\20<\377\377\274\21B\377" \
+  "\223\274\21B\377\1\213\15""1\377\227\0\0\0\377\1g\11$\377\313\274\21" \
+  "B\377\2\267\21@\3771\4\21\377\242\0\0\0\377\2\0\0\0\353\0\0\0\22\377" \
+  "\0\0\0\0\224\0\0\0\0\2\0\0\0\5\0\0\0\325\231\0\0\0\377\1M\7\33\377\313" \
+  "\274\21B\377\2\234\16""7\377\20\1\6\377\241\0\0\0\377\1\237\16""8\377" \
+  "\377\274\21B\377\223\274\21B\377\1\237\16""8\377\227\0\0\0\377\2\1\0" \
+  "\0\377t\12)\377\313\274\21B\377\2\260\20>\377\33\2\12\377\242\0\0\0\377" \
+  "\1\0\0\0\231\377\0\0\0\0\224\0\0\0\0\1\0\0\0n\231\0\0\0\377\2(\4\16\377" \
+  "\267\21@\377\312\274\21B\377\2\242\17""9\377\25\2\10\377\242\0\0\0\377" \
+  "\1\206\14/\377\377\274\21B\377\223\274\21B\377\1\251\17;\377\230\0\0" \
+  "\0\377\2\1\0\0\377o\12'\377\313\274\21B\377\2\241\17""8\377\14\1\4\377" \
+  "\241\0\0\0\377\2\0\0\0\375\0\0\0""6\377\0\0\0\0\222\0\0\0\0\2\0\0\0\22" \
+  "\0\0\0\354\230\0\0\0\377\2\16\1\5\377\247\17;\377\312\274\21B\377\2\235" \
+  "\16""7\377\21\2\6\377\243\0\0\0\377\1h\11$\377\377\274\21B\377\223\274" \
+  "\21B\377\1\255\20=\377\231\0\0\0\377\2\1\0\0\377o\12'\377\313\274\21" \
+  "B\377\2\210\14""0\377\2\0\1\377\241\0\0\0\377\1\0\0\0\301\377\0\0\0\0" \
+  "\222\0\0\0\0\1\0\0\0\222\231\0\0\0\377\1\200\14-\377\312\274\21B\377" \
+  "\2\236\16""7\377\21\2\6\377\244\0\0\0\377\1>\6\26\377\377\274\21B\377" \
+  "\223\274\21B\377\1\244\17:\377\232\0\0\0\377\2\2\0\1\377z\13+\377\313" \
+  "\274\21B\377\1]\10!\377\242\0\0\0\377\1\0\0\0V\377\0\0\0\0\220\0\0\0" \
+  "\0\2\0\0\0%\0\0\0\372\230\0\0\0\377\1K\7\32\377\312\274\21B\377\2\242" \
+  "\17""9\377\25\2\7\377\245\0\0\0\377\2\16\1\5\377\272\21A\377\377\274" \
+  "\21B\377\222\274\21B\377\1\226\16""5\377\233\0\0\0\377\2\1\0\1\377v\13" \
+  ")\377\312\274\21B\377\2\273\21A\3773\5\22\377\241\0\0\0\377\2\0\0\0\336" \
+  "\0\0\0\6\377\0\0\0\0\217\0\0\0\0\1\0\0\0\252\230\0\0\0\377\2\33\2\12" \
+  "\377\263\20\77\377\311\274\21B\377\2\247\17:\377\31\2\11\377\247\0\0" \
+  "\0\377\1\217\15""2\377\377\274\21B\377\222\274\21B\377\1~\13,\377\234" \
+  "\0\0\0\377\2\1\0\1\377w\13*\377\312\274\21B\377\2\253\17<\377\21\2\6" \
+  "\377\241\0\0\0\377\1\0\0\0l\377\0\0\0\0\216\0\0\0\0\2\0\0\0""0\0\0\0" \
+  "\376\227\0\0\0\377\2\1\0\1\377\223\15""4\377\311\274\21B\377\2\243\17" \
+  "9\377\25\2\10\377\250\0\0\0\377\1K\7\32\377\377\274\21B\377\222\274\21" \
+  "B\377\1`\11\"\377\235\0\0\0\377\2\2\0\1\377x\13*\377\312\274\21B\377" \
+  "\2\206\14/\377\1\0\0\377\240\0\0\0\377\2\0\0\0\346\0\0\0\11\377\0\0\0" \
+  "\0\215\0\0\0\0\1\0\0\0\257\230\0\0\0\377\1K\7\32\377\311\274\21B\377" \
+  "\2\244\17""9\377\26\2\10\377\251\0\0\0\377\2\12\1\3\377\262\20\77\377" \
+  "\377\274\21B\377\221\274\21B\377\1""5\5\23\377\236\0\0\0\377\2\4\0\1" \
+  "\377\200\14-\377\312\274\21B\377\1K\7\32\377\241\0\0\0\377\1\0\0\0q\377" \
+  "\0\0\0\0\214\0\0\0\0\2\0\0\0-\0\0\0\376\227\0\0\0\377\2\17\1\5\377\255" \
+  "\20=\377\310\274\21B\377\2\246\17:\377\33\2\12\377\253\0\0\0\377\1e\11" \
+  "#\377\377\274\21B\377\220\274\21B\377\2\266\20@\377\11\1\3\377\237\0" \
+  "\0\0\377\2\2\0\1\377z\13+\377\311\274\21B\377\2\265\20\77\377\30\2\11" \
+  "\377\240\0\0\0\377\2\0\0\0\347\0\0\0\11\377\0\0\0\0\213\0\0\0\0\1\0\0" \
+  "\0\246\230\0\0\0\377\1z\13+\377\310\274\21B\377\2\233\16""6\377\22\2" \
+  "\6\377\254\0\0\0\377\2\20\1\6\377\263\20\77\377\377\274\21B\377\217\274" \
+  "\21B\377\1\204\14.\377\241\0\0\0\377\2\2\0\1\377z\13+\377\311\274\21" \
+  "B\377\1\206\14/\377\241\0\0\0\377\1\0\0\0j\377\0\0\0\0\212\0\0\0\0\2" \
+  "\0\0\0\36\0\0\0\373\227\0\0\0\377\2*\4\17\377\273\21B\377\307\274\21" \
+  "B\377\2\233\16""6\377\22\2\6\377\256\0\0\0\377\1O\7\34\377\377\274\21" \
+  "B\377\217\274\21B\377\1>\6\26\377\242\0\0\0\377\2\5\0\2\377\201\14-\377" \
+  "\311\274\21B\377\1:\5\24\377\240\0\0\0\377\2\0\0\0\332\0\0\0\2\377\0" \
+  "\0\0\0\211\0\0\0\0\1\0\0\0\215\227\0\0\0\377\2\1\0\0\377\224\15""4\377" \
+  "\307\274\21B\377\2\213\15""1\377\11\1\3\377\257\0\0\0\377\2\2\0\1\377" \
+  "\227\16""5\377\377\274\21B\377\215\274\21B\377\2\254\20<\377\4\0\2\377" \
+  "\243\0\0\0\377\2\2\0\1\377r\12(\377\310\274\21B\377\2\252\17<\377\14" \
+  "\1\4\377\240\0\0\0\377\1\0\0\0Q\377\0\0\0\0\210\0\0\0\0\2\0\0\0\16\0" \
+  "\0\0\362\227\0\0\0\377\1>\6\26\377\307\274\21B\377\2\207\14/\377\7\1" \
+  "\3\377\261\0\0\0\377\2!\3\14\377\270\21A\377\377\274\21B\377\214\274" \
+  "\21B\377\1V\10\36\377\245\0\0\0\377\2\1\0\1\377o\12'\377\310\274\21B" \
+  "\377\1d\11#\377\240\0\0\0\377\1\0\0\0\300\377\0\0\0\0\210\0\0\0\0\1\0" \
+  "\0\0j\227\0\0\0\377\2\4\0\2\377\243\17""9\377\306\274\21B\377\2~\13," \
+  "\377\4\0\2\377\263\0\0\0\377\1a\11\"\377\377\274\21B\377\213\274\21B" \
+  "\377\2\254\20<\377\11\1\3\377\247\0\0\0\377\1X\10\37\377\307\274\21B" \
+  "\377\2\270\21@\377\31\2\11\377\237\0\0\0\377\2\0\0\0\376\0\0\0-\377\0" \
+  "\0\0\0\206\0\0\0\0\2\0\0\0\1\0\0\0\330\227\0\0\0\377\1J\7\32\377\306" \
+  "\274\21B\377\2}\13,\377\4\0\1\377\264\0\0\0\377\2\1\0\0\377|\13+\377" \
+  "\377\274\21B\377\212\274\21B\377\1C\6\30\377\251\0\0\0\377\2P\7\34\377" \
+  "\273\21B\377\306\274\21B\377\1w\13*\377\240\0\0\0\377\1\0\0\0\230\377" \
+  "\0\0\0\0\206\0\0\0\0\1\0\0\0""9\227\0\0\0\377\2\4\0\2\377\247\17:\377" \
+  "\305\274\21B\377\2i\12%\377\1\0\0\377\266\0\0\0\377\2\12\1\4\377\235" \
+  "\16""7\377\377\274\21B\377\210\274\21B\377\2\214\15""1\377\1\0\0\377" \
+  "\252\0\0\0\377\2K\7\32\377\273\21A\377\305\274\21B\377\2\273\21A\377" \
+  "%\3\15\377\237\0\0\0\377\2\0\0\0\361\0\0\0\12\377\0\0\0\0\205\0\0\0\0" \
+  "\1\0\0\0\233\227\0\0\0\377\1E\6\30\377\305\274\21B\377\1^\11!\377\271" \
+  "\0\0\0\377\2\32\2\11\377\256\20=\377\377\274\21B\377\206\274\21B\377" \
+  "\2\261\20>\377\26\2\10\377\254\0\0\0\377\2H\7\31\377\272\21A\377\305" \
+  "\274\21B\377\1\204\14.\377\240\0\0\0\377\1\0\0\0]\377\0\0\0\0\204\0\0" \
+  "\0\0\2\0\0\0\14\0\0\0\363\226\0\0\0\377\2\1\0\1\377\236\16""7\377\304" \
+  "\274\21B\377\1X\10\37\377\273\0\0\0\377\2#\3\14\377\255\20=\377\377\274" \
+  "\21B\377\204\274\21B\377\2\272\21A\3779\5\24\377\256\0\0\0\377\2""8\5" \
+  "\24\377\266\20@\377\305\274\21B\377\1)\4\16\377\237\0\0\0\377\1\0\0\0" \
+  "\300\377\0\0\0\0\204\0\0\0\0\1\0\0\0X\227\0\0\0\377\1""7\5\23\377\303" \
+  "\274\21B\377\2\273\21A\377S\10\35\377\275\0\0\0\377\2\34\3\12\377\250" \
+  "\17;\377\377\274\21B\377\203\274\21B\377\1H\7\31\377\260\0\0\0\377\2" \
+  "/\4\21\377\262\20\77\377\304\274\21B\377\1\177\13-\377\237\0\0\0\377" \
+  "\2\0\0\0\375\0\0\0\34\377\0\0\0\0\203\0\0\0\0\1\0\0\0\262\227\0\0\0\377" \
+  "\1\214\15""1\377\302\274\21B\377\2\266\20@\377\77\6\26\377\277\0\0\0" \
+  "\377\2\30\2\10\377\244\17""9\377\377\274\21B\377\2\274\21B\377_\11!\377" \
+  "\262\0\0\0\377\2'\4\16\377\256\20=\377\303\274\21B\377\2\273\21A\377" \
+  "\37\3\13\377\237\0\0\0\377\1\0\0\0u\377\0\0\0\0\202\0\0\0\0\2\0\0\0\22" \
+  "\0\0\0\372\226\0\0\0\377\1\40\3\13\377\302\274\21B\377\2\253\17<\377" \
+  "'\4\16\377\301\0\0\0\377\2\32\2\11\377\234\16""7\377\376\274\21B\377" \
+  "\2r\12(\377\1\0\0\377\263\0\0\0\377\2'\4\16\377\254\20<\377\303\274\21" \
+  "B\377\1q\12(\377\237\0\0\0\377\1\0\0\0\314\377\0\0\0\0\202\0\0\0\0\1" \
+  "\0\0\0b\227\0\0\0\377\1i\12%\377\301\274\21B\377\2\237\16""8\377\30\2" \
+  "\11\377\303\0\0\0\377\2\6\1\2\377w\13*\377\374\274\21B\377\1X\10\37\377" \
+  "\266\0\0\0\377\2\32\2\11\377\240\16""8\377\302\274\21B\377\2\267\21@" \
+  "\377\21\2\6\377\237\0\0\0\377\1\0\0\0%\377\0\0\0\0\2\0\0\0\0\0\0\0\263" \
+  "\226\0\0\0\377\2\7\1\3\377\260\20>\377\300\274\21B\377\2\220\15""2\377" \
+  "\15\1\5\377\306\0\0\0\377\2R\7\35\377\272\21A\377\370\274\21B\377\2\271" \
+  "\21A\377G\6\31\377\270\0\0\0\377\2\14\1\4\377\215\15""1\377\302\274\21" \
+  "B\377\1Z\10\40\377\237\0\0\0\377\1\0\0\0u\377\0\0\0\0\2\0\0\0\12\0\0" \
+  "\0\367\226\0\0\0\377\1D\6\30\377\300\274\21B\377\2}\13,\377\5\0\2\377" \
+  "\310\0\0\0\377\2:\5\24\377\254\20<\377\366\274\21B\377\2\263\20\77\377" \
+  "@\6\27\377\272\0\0\0\377\2\4\0\2\377y\13*\377\301\274\21B\377\2\244\17" \
+  "9\377\1\0\1\377\236\0\0\0\377\1\0\0\0\303\377\0\0\0\0\1\0\0\0M\227\0" \
+  "\0\0\377\1\212\14""0\377\277\274\21B\377\2r\12(\377\3\0\1\377\312\0\0" \
+  "\0\377\3\13\1\4\377q\12(\377\273\21B\377\363\274\21B\377\2\221\15""3" \
+  "\377\27\2\10\377\274\0\0\0\377\2\1\0\0\377^\11!\377\301\274\21B\377\1" \
+  "4\5\22\377\236\0\0\0\377\2\0\0\0\374\0\0\0\24\376\0\0\0\0\1\0\0\0\230" \
+  "\226\0\0\0\377\2\20\1\6\377\272\21A\377\275\274\21B\377\2\273\21A\377" \
+  "R\7\35\377\316\0\0\0\377\2.\4\20\377\241\17""8\377\360\274\21B\377\3" \
+  "\273\21A\377^\11!\377\3\0\1\377\277\0\0\0\377\2I\7\32\377\271\21A\377" \
+  "\277\274\21B\377\1~\13,\377\237\0\0\0\377\1\0\0\0\\\376\0\0\0\0\1\0\0" \
+  "\0\340\226\0\0\0\377\1L\7\33\377\275\274\21B\377\2\265\20@\377<\5\25" \
+  "\377\320\0\0\0\377\3\13\1\4\377m\12&\377\271\21A\377\355\274\21B\377" \
+  "\2\245\17:\3778\5\24\377\302\0\0\0\377\2\77\6\26\377\266\20@\377\276" \
+  "\274\21B\377\2\267\21@\377\15\1\4\377\236\0\0\0\377\1\0\0\0\244\375\0" \
+  "\0\0\0\1\0\0\0'\227\0\0\0\377\1\211\14""0\377\274\274\21B\377\2\255\20" \
+  "=\377*\4\17\377\323\0\0\0\377\3\25\2\10\377q\12(\377\273\21A\377\351" \
+  "\274\21B\377\3\262\20>\377R\7\35\377\4\0\1\377\304\0\0\0\377\2'\4\16" \
+  "\377\253\17<\377\276\274\21B\377\1I\7\32\377\236\0\0\0\377\2\0\0\0\351" \
+  "\0\0\0\1\374\0\0\0\0\1\0\0\0i\226\0\0\0\377\2\15\1\4\377\270\21A\377" \
+  "\273\274\21B\377\2\245\17:\377\"\3\14\377\326\0\0\0\377\2&\3\15\377\214" \
+  "\15""1\377\346\274\21B\377\3\273\21A\377q\12(\377\22\2\6\377\307\0\0" \
+  "\0\377\2\30\2\11\377\237\16""8\377\275\274\21B\377\1\206\14/\377\237" \
+  "\0\0\0\377\1\0\0\0,\374\0\0\0\0\1\0\0\0\252\226\0\0\0\377\1E\6\30\377" \
+  "\273\274\21B\377\2\222\15""3\377\21\2\6\377\330\0\0\0\377\3\1\0\0\377" \
+  "<\5\25\377\224\15""4\377\342\274\21B\377\3\273\21B\377\203\14.\377*\4" \
+  "\17\377\312\0\0\0\377\2\15\1\5\377\217\15""2\377\274\274\21B\377\2\270" \
+  "\21A\377\15\1\5\377\236\0\0\0\377\1\0\0\0m\373\0\0\0\0\2\0\0\0\2\0\0" \
+  "\0\354\226\0\0\0\377\1|\13+\377\272\274\21B\377\2m\12&\377\3\0\1\377" \
+  "\334\0\0\0\377\3$\3\15\377w\13*\377\272\21A\377\335\274\21B\377\3\266" \
+  "\20@\377k\12&\377\31\2\11\377\315\0\0\0\377\2\11\1\3\377\202\14.\377" \
+  "\274\274\21B\377\1C\6\30\377\236\0\0\0\377\1\0\0\0\256\373\0\0\0\0\1" \
+  "\0\0\0)\226\0\0\0\377\2\1\0\1\377\256\20=\377\270\274\21B\377\2\271\21" \
+  "A\377K\7\32\377\340\0\0\0\377\3\"\3\14\377y\13*\377\270\21A\377\331\274" \
+  "\21B\377\3\257\20>\377k\12&\377\30\2\11\377\320\0\0\0\377\2\1\0\1\377" \
+  "e\11#\377\273\274\21B\377\1\200\14-\377\236\0\0\0\377\1\0\0\0\352\373" \
+  "\0\0\0\0\1\0\0\0a\226\0\0\0\377\1%\3\15\377\270\274\21B\377\2\260\20" \
+  ">\3774\5\22\377\343\0\0\0\377\4\13\1\4\377E\6\30\377\204\14.\377\272" \
+  "\21A\377\323\274\21B\377\4\271\21A\377}\13,\3772\5\22\377\2\0\1\377\324" \
+  "\0\0\0\377\2\77\6\26\377\265\20\77\377\271\274\21B\377\2\262\20\77\377" \
+  "\4\0\1\377\236\0\0\0\377\1\0\0\0$\372\0\0\0\0\1\0\0\0\230\226\0\0\0\377" \
+  "\1X\10\37\377\267\274\21B\377\2\237\16""8\377\33\2\12\377\347\0\0\0\377" \
+  "\3\34\3\12\377_\11!\377\243\17""9\377\317\274\21B\377\3\245\17:\377f" \
+  "\11$\377\34\3\12\377\330\0\0\0\377\2#\3\14\377\247\17:\377\271\274\21" \
+  "B\377\1,\4\20\377\236\0\0\0\377\1\0\0\0[\372\0\0\0\0\1\0\0\0\320\226" \
+  "\0\0\0\377\1\210\14""0\377\266\274\21B\377\2\223\15""4\377\22\2\6\377" \
+  "\352\0\0\0\377\5\1\0\0\377'\4\16\377^\11!\377\226\16""5\377\273\21B\377" \
+  "\307\274\21B\377\4\273\21B\377\227\16""5\377]\10!\377#\3\14\377\334\0" \
+  "\0\0\377\2\23\2\7\377\225\15""4\377\270\274\21B\377\1_\11!\377\236\0" \
+  "\0\0\377\1\0\0\0\222\371\0\0\0\0\2\0\0\0\12\0\0\0\373\225\0\0\0\377\2" \
+  "\3\0\1\377\265\20\77\377\265\274\21B\377\2m\12&\377\3\0\1\377\357\0\0" \
+  "\0\377\4\22\2\6\377J\7\32\377\201\14-\377\264\20\77\377\301\274\21B\377" \
+  "\4\255\20=\377\202\14.\377N\7\33\377\25\2\10\377\340\0\0\0\377\2\6\1" \
+  "\2\377z\13+\377\267\274\21B\377\1\222\15""3\377\236\0\0\0\377\1\0\0\0" \
+  "\310\371\0\0\0\0\1\0\0\0""8\226\0\0\0\377\1\40\3\13\377\264\274\21B\377" \
+  "\2\271\21A\377K\7\32\377\364\0\0\0\377\5\4\0\2\377*\4\17\377U\10\36\377" \
+  "\201\14-\377\253\17<\377\271\274\21B\377\4\241\17""8\377u\13)\377I\7" \
+  "\32\377\35\3\12\377\345\0\0\0\377\2\2\0\1\377g\11$\377\266\274\21B\377" \
+  "\2\270\21A\377\12\1\4\377\235\0\0\0\377\2\0\0\0\367\0\0\0\4\370\0\0\0" \
+  "\0\1\0\0\0e\226\0\0\0\377\1H\7\31\377\263\274\21B\377\2\261\20>\3774" \
+  "\5\22\377\372\0\0\0\377\5\33\2\12\377F\6\31\377p\12'\377\222\15""3\377" \
+  "\260\20>\377\256\274\21B\377\6\270\21@\377\231\16""6\377w\13*\377V\10" \
+  "\36\3773\5\22\377\20\1\6\377\353\0\0\0\377\2\77\6\26\377\265\20@\377" \
+  "\265\274\21B\377\1""4\5\22\377\236\0\0\0\377\1\0\0\0(\370\0\0\0\0\1\0" \
+  "\0\0\222\226\0\0\0\377\1n\12'\377\262\274\21B\377\2\241\17""8\377\"\3" \
+  "\14\377\377\0\0\0\377\10\0\0\0\377\22\2\6\3771\4\21\377P\7\34\377o\12" \
+  "'\377\215\15""1\377\247\17:\377\267\21@\377\240\274\21B\377\10\262\20" \
+  ">\377\234\16""7\377\205\14/\377o\12'\377Z\10\40\377B\6\27\377!\3\14\377" \
+  "\4\0\1\377\361\0\0\0\377\2)\4\16\377\252\17<\377\264\274\21B\377\1[\10" \
+  "\40\377\236\0\0\0\377\1\0\0\0U\370\0\0\0\0\1\0\0\0\300\226\0\0\0\377" \
+  "\1\226\16""5\377\261\274\21B\377\2{\13+\377\11\1\3\377\377\0\0\0\377" \
+  "\211\0\0\0\377\15\15\1\5\377\37\3\13\3770\4\21\377C\6\30\377S\10\35\377" \
+  "f\11$\377q\12(\377y\13*\377}\13,\377\212\14""0\377\216\15""2\377\226" \
+  "\16""5\377\240\16""8\377\205\243\17""9\377\204\226\16""5\377\12\213\15" \
+  "1\377\177\13-\377r\12(\377e\11#\377X\10\37\377L\7\33\377\77\6\26\377" \
+  "2\5\22\377\40\3\13\377\13\1\4\377\372\0\0\0\377\2\24\2\7\377\226\16""5" \
+  "\377\263\274\21B\377\1\202\14.\377\236\0\0\0\377\1\0\0\0\202\370\0\0" \
+  "\0\0\1\0\0\0\353\225\0\0\0\377\2\3\0\1\377\267\21@\377\257\274\21B\377" \
+  "\3\271\21A\377W\10\37\377\1\0\0\377\377\0\0\0\377\377\0\0\0\377\246\0" \
+  "\0\0\377\2\12\1\3\377~\13,\377\262\274\21B\377\1\251\17;\377\236\0\0" \
+  "\0\377\1\0\0\0\255\367\0\0\0\0\1\0\0\0\25\226\0\0\0\377\1\35\3\12\377" \
+  "\257\274\21B\377\2\245\17:\377&\3\15\377\377\0\0\0\377\377\0\0\0\377" \
+  "\252\0\0\0\377\2K\7\32\377\267\21@\377\261\274\21B\377\1\25\2\10\377" \
+  "\235\0\0\0\377\1\0\0\0\326\367\0\0\0\0\1\0\0\0""8\226\0\0\0\377\1:\5" \
+  "\24\377\256\274\21B\377\2\211\14""0\377\17\1\5\377\377\0\0\0\377\344" \
+  "\0\0\0\377\6\4\0\1\377\23\2\7\377%\3\15\3777\5\23\377\77\6\26\377E\6" \
+  "\30\377\205K\7\32\377\5\77\6\26\3775\5\23\377+\4\17\377\"\3\14\377\15" \
+  "\1\5\377\267\0\0\0\377\2-\4\20\377\252\17<\377\260\274\21B\377\1:\5\24" \
+  "\377\235\0\0\0\377\2\0\0\0\370\0\0\0\3\366\0\0\0\0\1\0\0\0\\\226\0\0" \
+  "\0\377\1V\10\36\377\254\274\21B\377\3\273\21A\377^\11!\377\2\0\1\377" \
+  "\377\0\0\0\377\337\0\0\0\377\6\13\1\4\3771\4\21\377V\10\36\377r\12(\377" \
+  "\215\15""1\377\250\17;\377\220\274\21B\377\7\262\20>\377\232\16""6\377" \
+  "\201\14-\377d\11#\377E\6\30\377&\3\15\377\10\1\3\377\261\0\0\0\377\2" \
+  "\16\1\5\377\210\14""0\377\257\274\21B\377\1X\10\37\377\236\0\0\0\377" \
+  "\1\0\0\0\37\366\0\0\0\0\1\0\0\0\200\226\0\0\0\377\1r\12(\377\253\274" \
+  "\21B\377\2\257\20>\3778\5\24\377\377\0\0\0\377\335\0\0\0\377\5\23\2\7" \
+  "\377E\6\30\377w\13*\377\240\16""8\377\273\21B\377\233\274\21B\377\5\271" \
+  "\21A\377\231\16""6\377p\12'\377H\6\31\377\30\2\11\377\256\0\0\0\377\3" \
+  "\1\0\0\377X\10\37\377\273\21A\377\255\274\21B\377\1t\13)\377\236\0\0" \
+  "\0\377\1\0\0\0C\366\0\0\0\0\1\0\0\0\242\226\0\0\0\377\1\217\15""2\377" \
+  "\252\274\21B\377\2\231\16""6\377\33\2\11\377\377\0\0\0\377\333\0\0\0" \
+  "\377\3&\3\15\377d\11#\377\235\16""7\377\245\274\21B\377\4\241\17""9\377" \
+  "o\12'\377;\5\25\377\7\1\2\377\254\0\0\0\377\2""7\5\23\377\257\20=\377" \
+  "\254\274\21B\377\1\221\15""3\377\236\0\0\0\377\1\0\0\0f\366\0\0\0\0\1" \
+  "\0\0\0\302\226\0\0\0\377\1\247\17;\377\251\274\21B\377\2}\13,\377\11" \
+  "\1\3\377\306\0\0\0\377\5\17\1\5\377#\3\14\377-\4\20\3777\5\23\377@\6" \
+  "\27\377\205K\7\32\377\6E\6\30\377\77\6\26\3776\5\23\377#\3\14\377\22" \
+  "\2\6\377\3\0\1\377\377\0\0\0\377\203\0\0\0\377\3\35\3\12\377d\11#\377" \
+  "\244\17:\377\253\274\21B\377\4\264\20\77\377}\13,\377@\6\27\377\10\1" \
+  "\3\377\252\0\0\0\377\2\25\2\10\377\224\15""4\377\253\274\21B\377\1\256" \
+  "\20=\377\236\0\0\0\377\1\0\0\0\206\366\0\0\0\0\1\0\0\0\336\225\0\0\0" \
+  "\377\2\1\0\1\377\271\21A\377\247\274\21B\377\2\264\20\77\377E\6\30\377" \
+  "\301\0\0\0\377\7\12\1\3\377)\4\16\377H\7\31\377f\11$\377\203\14.\377" \
+  "\234\16""7\377\264\20\77\377\217\274\21B\377\7\273\21B\377\246\17:\377" \
+  "\213\15""1\377o\12'\377S\7\35\377.\4\20\377\11\1\3\377\371\0\0\0\377" \
+  "\4\5\0\2\377E\6\30\377\217\15""2\377\273\21B\377\260\274\21B\377\4\264" \
+  "\20\77\377w\13*\3773\5\22\377\1\0\1\377\250\0\0\0\377\2\5\0\2\377k\12" \
+  "&\377\253\274\21B\377\1\16\1\5\377\235\0\0\0\377\1\0\0\0\241\365\0\0" \
+  "\0\0\2\0\0\0\1\0\0\0\370\225\0\0\0\377\1\17\1\5\377\247\274\21B\377\2" \
+  "\231\16""6\377\35\3\12\377\276\0\0\0\377\5\34\3\12\377J\7\32\377t\12" \
+  ")\377\234\16""7\377\273\21A\377\233\274\21B\377\5\272\21A\377\234\16" \
+  "7\377r\12(\377A\6\27\377\20\1\6\377\363\0\0\0\377\3\14\1\4\377X\10\37" \
+  "\377\252\17<\377\266\274\21B\377\3\250\17;\377^\11!\377\22\2\6\377\250" \
+  "\0\0\0\377\2O\7\34\377\270\21@\377\251\274\21B\377\1&\3\15\377\235\0" \
+  "\0\0\377\1\0\0\0\274\365\0\0\0\0\1\0\0\0\25\226\0\0\0\377\1\"\3\14\377" \
+  "\246\274\21B\377\2k\12&\377\6\1\2\377\273\0\0\0\377\4\12\1\3\377\77\6" \
+  "\26\377r\12(\377\245\17:\377\244\274\21B\377\4\273\21B\377\231\16""6" \
+  "\377^\11!\377!\3\14\377\356\0\0\0\377\3\14\1\4\377b\11\"\377\262\20\77" \
+  "\377\272\274\21B\377\3\270\21@\377z\13+\377)\4\16\377\247\0\0\0\377\2" \
+  "\37\3\13\377\234\16""7\377\250\274\21B\377\1""9\5\24\377\235\0\0\0\377" \
+  "\1\0\0\0\327\365\0\0\0\0\1\0\0\0""0\226\0\0\0\377\1""4\5\22\377\244\274" \
+  "\21B\377\2\257\20>\377<\5\25\377\272\0\0\0\377\4\14\1\4\377E\6\30\377" \
+  "\202\14.\377\266\20@\377\253\274\21B\377\3\240\16""8\377_\11!\377\30" \
+  "\2\10\377\351\0\0\0\377\3\7\1\3\377X\10\37\377\257\20=\377\277\274\21" \
+  "B\377\3\216\15""2\3777\5\23\377\1\0\0\377\245\0\0\0\377\2\7\1\2\377q" \
+  "\12(\377\247\274\21B\377\1K\7\32\377\235\0\0\0\377\1\0\0\0\362\365\0" \
+  "\0\0\0\1\0\0\0I\226\0\0\0\377\1E\6\30\377\243\274\21B\377\2\224\15""4" \
+  "\377\35\3\12\377\270\0\0\0\377\4\4\0\1\3778\5\24\377}\13,\377\266\20" \
+  "@\377\260\274\21B\377\4\273\21A\377\210\14""0\377\77\6\26\377\3\0\1\377" \
+  "\345\0\0\0\377\2""7\5\23\377\245\17:\377\303\274\21B\377\3\232\16""6" \
+  "\377=\6\25\377\1\0\0\377\245\0\0\0\377\2E\6\30\377\263\20\77\377\245" \
+  "\274\21B\377\1^\10!\377\236\0\0\0\377\1\0\0\0\13\364\0\0\0\0\1\0\0\0" \
+  "\\\226\0\0\0\377\1S\10\35\377\241\274\21B\377\3\271\21A\377^\10!\377" \
+  "\3\0\1\377\267\0\0\0\377\3\27\2\10\377d\11#\377\254\20<\377\266\274\21" \
+  "B\377\3\244\17:\377Q\7\34\377\10\1\3\377\341\0\0\0\377\2\23\2\7\377~" \
+  "\13,\377\307\274\21B\377\2\224\15""4\3771\4\21\377\245\0\0\0\377\2\35" \
+  "\3\12\377\231\16""6\377\244\274\21B\377\1o\12'\377\236\0\0\0\377\1\0" \
+  "\0\0\36\364\0\0\0\0\1\0\0\0n\226\0\0\0\377\1\\\10\40\377\240\274\21B" \
+  "\377\2\230\16""5\377\40\3\13\377\267\0\0\0\377\3""0\4\21\377\200\14-" \
+  "\377\272\21A\377\272\274\21B\377\3\257\20=\377Z\10\40\377\10\1\3\377" \
+  "\336\0\0\0\377\2B\6\27\377\260\20>\377\312\274\21B\377\2\210\14""0\377" \
+  "\35\3\12\377\244\0\0\0\377\3\10\1\3\377o\12'\377\273\21B\377\242\274" \
+  "\21B\377\1\201\14-\377\236\0\0\0\377\1\0\0\0""1\364\0\0\0\0\1\0\0\0\200" \
+  "\226\0\0\0\377\1d\11#\377\236\274\21B\377\3\273\21B\377l\12&\377\7\1" \
+  "\2\377\265\0\0\0\377\3\1\0\1\377=\6\25\377\225\15""4\377\277\274\21B" \
+  "\377\3\253\17<\377P\7\34\377\4\0\2\377\332\0\0\0\377\2\23\2\7\377\207" \
+  "\14/\377\315\274\21B\377\3\273\21A\377w\13*\377\16\1\5\377\244\0\0\0" \
+  "\377\2""6\5\23\377\252\17<\377\241\274\21B\377\1\217\15""2\377\236\0" \
+  "\0\0\377\1\0\0\0D\364\0\0\0\0\1\0\0\0\223\226\0\0\0\377\1l\12&\377\235" \
+  "\274\21B\377\2\236\16""7\377)\4\16\377\265\0\0\0\377\3\1\0\1\377E\6\30" \
+  "\377\240\16""8\377\303\274\21B\377\2\237\16""8\377/\4\21\377\330\0\0" \
+  "\0\377\2(\4\16\377\247\17;\377\320\274\21B\377\2\250\17;\377<\5\25\377" \
+  "\244\0\0\0\377\2\12\1\4\377q\12(\377\240\274\21B\377\1\230\16""5\377" \
+  "\236\0\0\0\377\1\0\0\0W\364\0\0\0\0\1\0\0\0\245\226\0\0\0\377\1u\13)" \
+  "\377\233\274\21B\377\3\270\21A\377^\11!\377\6\1\2\377\265\0\0\0\377\2" \
+  ":\5\24\377\234\16""7\377\306\274\21B\377\3\273\21B\377v\13)\377\17\1" \
+  "\5\377\325\0\0\0\377\2X\10\37\377\271\21A\377\323\274\21B\377\2\206\14" \
+  "/\377\26\2\10\377\244\0\0\0\377\2C\6\30\377\260\20>\377\236\274\21B\377" \
+  "\1\240\16""8\377\236\0\0\0\377\1\0\0\0i\364\0\0\0\0\1\0\0\0\262\226\0" \
+  "\0\0\377\1}\13,\377\232\274\21B\377\2\230\16""5\377#\3\14\377\265\0\0" \
+  "\0\377\2%\3\15\377\221\15""3\377\312\274\21B\377\2\254\20<\377:\5\24" \
+  "\377\322\0\0\0\377\2\2\0\1\377l\12&\377\326\274\21B\377\2\257\20=\377" \
+  "D\6\30\377\244\0\0\0\377\2\20\1\6\377w\13*\377\235\274\21B\377\1\251" \
+  "\17;\377\236\0\0\0\377\1\0\0\0w\364\0\0\0\0\1\0\0\0\275\226\0\0\0\377" \
+  "\1\202\14.\377\230\274\21B\377\3\270\21A\377c\11#\377\7\1\2\377\264\0" \
+  "\0\0\377\3\21\2\6\377w\13*\377\273\21B\377\315\274\21B\377\2}\13,\377" \
+  "\15\1\5\377\317\0\0\0\377\2\12\1\3\377\211\14""0\377\331\274\21B\377" \
+  "\2\201\14-\377\16\1\5\377\244\0\0\0\377\2""8\5\24\377\251\17;\377\233" \
+  "\274\21B\377\1\261\20>\377\236\0\0\0\377\1\0\0\0\201\364\0\0\0\0\1\0" \
+  "\0\0\310\226\0\0\0\377\1\201\14-\377\227\274\21B\377\2\210\14""0\377" \
+  "\32\2\11\377\265\0\0\0\377\2F\6\31\377\255\20=\377\320\274\21B\377\2" \
+  "\241\17""8\377\40\3\13\377\315\0\0\0\377\2\15\1\4\377\217\15""2\377\333" \
+  "\274\21B\377\2\244\17""9\377*\4\17\377\244\0\0\0\377\2\14\1\4\377q\12" \
+  "(\377\232\274\21B\377\1\271\21A\377\236\0\0\0\377\1\0\0\0\214\364\0\0" \
+  "\0\0\1\0\0\0\322\226\0\0\0\377\1\200\14-\377\225\274\21B\377\2\247\17" \
+  ";\3779\5\24\377\265\0\0\0\377\2\35\3\12\377\221\15""3\377\323\274\21" \
+  "B\377\2\266\20@\377G\6\31\377\313\0\0\0\377\2\22\2\6\377\237\16""8\377" \
+  "\335\274\21B\377\3\272\21A\377^\11!\377\1\0\1\377\244\0\0\0\377\2>\6" \
+  "\26\377\251\17;\377\231\274\21B\377\1\2\0\1\377\235\0\0\0\377\1\0\0\0" \
+  "\226\364\0\0\0\0\1\0\0\0\335\226\0\0\0\377\1\177\13-\377\223\274\21B" \
+  "\377\3\271\21A\377o\12'\377\17\1\5\377\264\0\0\0\377\3\1\0\0\377P\7\34" \
+  "\377\263\20\77\377\325\274\21B\377\3\273\21B\377_\11!\377\1\0\0\377\310" \
+  "\0\0\0\377\2\17\1\5\377\232\16""6\377\340\274\21B\377\2\204\14.\377\14" \
+  "\1\4\377\244\0\0\0\377\3\7\1\2\377^\11!\377\270\21@\377\227\274\21B\377" \
+  "\1\1\0\0\377\235\0\0\0\377\1\0\0\0\241\364\0\0\0\0\1\0\0\0\346\226\0" \
+  "\0\0\377\1}\13,\377\221\274\21B\377\3\273\21B\377w\13*\377\26\2\10\377" \
+  "\265\0\0\0\377\2\24\2\7\377\214\15""1\377\331\274\21B\377\2\177\13-\377" \
+  "\6\1\2\377\306\0\0\0\377\2\12\1\4\377\226\16""5\377\342\274\21B\377\2" \
+  "\235\16""7\377\32\2\11\377\245\0\0\0\377\2\34\3\12\377\213\15""1\377" \
+  "\226\274\21B\377\236\0\0\0\377\1\0\0\0\253\364\0\0\0\0\1\0\0\0\352\226" \
+  "\0\0\0\377\1}\13,\377\220\274\21B\377\2\231\16""6\3773\5\22\377\266\0" \
+  "\0\0\377\2""3\5\22\377\252\17<\377\333\274\21B\377\2\205\14/\377\10\1" \
+  "\3\377\304\0\0\0\377\2\6\1\2\377\216\15""2\377\344\274\21B\377\2\257" \
+  "\20>\3770\4\21\377\245\0\0\0\377\3\2\0\1\377L\7\33\377\254\20<\377\223" \
+  "\274\21B\377\1\273\21B\377\236\0\0\0\377\1\0\0\0\257\364\0\0\0\0\1\0" \
+  "\0\0\355\226\0\0\0\377\1w\13*\377\216\274\21B\377\3\226\16""5\377;\5" \
+  "\25\377\1\0\0\377\265\0\0\0\377\3\4\0\1\377k\12&\377\273\21B\377\335" \
+  "\274\21B\377\2\222\15""3\377\12\1\4\377\302\0\0\0\377\2\1\0\1\377}\13" \
+  ",\377\346\274\21B\377\2\270\21@\377E\6\30\377\246\0\0\0\377\3\7\1\3\377" \
+  "X\10\37\377\262\20\77\377\221\274\21B\377\1\273\21A\377\236\0\0\0\377" \
+  "\1\0\0\0\262\364\0\0\0\0\1\0\0\0\360\226\0\0\0\377\1Y\10\37\377\214\274" \
+  "\21B\377\2\220\15""2\3777\5\23\377\267\0\0\0\377\2\22\2\6\377\216\15" \
+  "2\377\340\274\21B\377\2\222\15""3\377\12\1\4\377\301\0\0\0\377\1^\10" \
+  "!\377\350\274\21B\377\2\273\21B\377S\10\35\377\247\0\0\0\377\3\30\2\10" \
+  "\377{\13+\377\273\21A\377\217\274\21B\377\1\272\21A\377\236\0\0\0\377" \
+  "\1\0\0\0\265\364\0\0\0\0\1\0\0\0\362\226\0\0\0\377\2\26\2\10\377\264" \
+  "\20\77\377\210\274\21B\377\3\261\20>\377m\12&\377!\3\14\377\270\0\0\0" \
+  "\377\2#\3\14\377\244\17:\377\342\274\21B\377\2\214\15""1\377\6\1\2\377" \
+  "\277\0\0\0\377\2>\6\26\377\273\21B\377\352\274\21B\377\2l\12&\377\1\0" \
+  "\0\377\247\0\0\0\377\3\37\3\13\377z\13+\377\272\21A\377\215\274\21B\377" \
+  "\1\265\20\77\377\236\0\0\0\377\1\0\0\0\270\364\0\0\0\0\1\0\0\0\365\227" \
+  "\0\0\0\377\2.\4\20\377\242\17""9\377\204\274\21B\377\4\247\17;\377s\12" \
+  "(\377\77\6\26\377\7\1\3\377\271\0\0\0\377\2:\5\24\377\265\20\77\377\344" \
+  "\274\21B\377\2\204\14.\377\3\0\1\377\275\0\0\0\377\2\37\3\13\377\263" \
+  "\20\77\377\354\274\21B\377\2w\13*\377\3\0\1\377\250\0\0\0\377\3\33\2" \
+  "\12\377t\13)\377\267\21@\377\213\274\21B\377\1\225\15""4\377\236\0\0" \
+  "\0\377\1\0\0\0\274\363\0\0\0\0\2\0\0\0\12\0\0\0\372\230\0\0\0\377\5\1" \
+  "\0\0\377!\3\14\3772\5\22\377*\4\17\377\26\2\10\377\274\0\0\0\377\2^\11" \
+  "!\377\273\21B\377\346\274\21B\377\1q\12(\377\274\0\0\0\377\2\4\0\2\377" \
+  "\227\16""5\377\356\274\21B\377\2s\12(\377\1\0\0\377\251\0\0\0\377\3\17" \
+  "\1\5\377V\10\36\377\240\16""8\377\211\274\21B\377\1I\7\32\377\236\0\0" \
+  "\0\377\1\0\0\0\314\363\0\0\0\0\1\0\0\0\203\331\0\0\0\377\1a\11\"\377" \
+  "\351\274\21B\377\1M\7\33\377\273\0\0\0\377\1f\11$\377\360\274\21B\377" \
+  "\2v\13)\377\1\0\1\377\252\0\0\0\377\5\1\0\0\377-\4\20\377c\11#\377\227" \
+  "\16""5\377\273\21A\377\203\274\21B\377\2\262\20\77\377Y\10\37\377\240" \
+  "\0\0\0\377\1\0\0\0K\361\0\0\0\0\2\0\0\0\37\0\0\0\366\327\0\0\0\377\2" \
+  "\3\0\1\377x\13*\377\352\274\21B\377\2\271\21A\377/\4\21\377\271\0\0\0" \
+  "\377\2""1\4\21\377\273\21A\377\361\274\21B\377\2t\12)\377\1\0\0\377\255" \
+  "\0\0\0\377\5\15\1\5\377#\3\14\3772\5\22\377*\4\17\377\7\1\3\377\241\0" \
+  "\0\0\377\2\0\0\0\327\0\0\0\5\360\0\0\0\0\1\0\0\0\243\327\0\0\0\377\2" \
+  "\6\1\2\377\202\14.\377\354\274\21B\377\2\254\20<\377\25\2\7\377\267\0" \
+  "\0\0\377\2\6\1\2\377\241\17""8\377\363\274\21B\377\1a\11\"\377\324\0" \
+  "\0\0\377\1\0\0\0k\357\0\0\0\0\2\0\0\0""6\0\0\0\376\326\0\0\0\377\2\4" \
+  "\0\1\377\200\14-\377\356\274\21B\377\2\213\15""1\377\1\0\1\377\266\0" \
+  "\0\0\377\1d\11#\377\365\274\21B\377\1X\10\37\377\323\0\0\0\377\2\0\0" \
+  "\0\353\0\0\0\20\355\0\0\0\0\2\0\0\0\1\0\0\0\306\326\0\0\0\377\2\4\0\1" \
+  "\377\201\14-\377\360\274\21B\377\1X\10\37\377\265\0\0\0\377\2#\3\14\377" \
+  "\271\21A\377\365\274\21B\377\2\273\21B\377J\7\32\377\323\0\0\0\377\1" \
+  "\0\0\0\212\355\0\0\0\0\1\0\0\0T\326\0\0\0\377\2\3\0\1\377\200\14-\377" \
+  "\361\274\21B\377\2\270\21@\377#\3\14\377\264\0\0\0\377\1\213\15""1\377" \
+  "\367\274\21B\377\2\270\21A\3772\5\22\377\322\0\0\0\377\2\0\0\0\371\0" \
+  "\0\0$\353\0\0\0\0\2\0\0\0\7\0\0\0\336\326\0\0\0\377\1p\12'\377\363\274" \
+  "\21B\377\2\226\16""5\377\2\0\1\377\262\0\0\0\377\1:\5\24\377\371\274" \
+  "\21B\377\2\262\20\77\377\37\3\13\377\322\0\0\0\377\1\0\0\0\252\353\0" \
+  "\0\0\0\1\0\0\0t\326\0\0\0\377\1l\12&\377\365\274\21B\377\1V\10\36\377" \
+  "\261\0\0\0\377\2\4\0\1\377\237\16""8\377\372\274\21B\377\2\237\16""8" \
+  "\377\14\1\4\377\322\0\0\0\377\1\0\0\0=\351\0\0\0\0\2\0\0\0(\0\0\0\355" \
+  "\325\0\0\0\377\1X\10\37\377\366\274\21B\377\2\265\20\77\377\31\2\11\377" \
+  "\260\0\0\0\377\1F\6\31\377\374\274\21B\377\2\201\14-\377\1\0\0\377\321" \
+  "\0\0\0\377\2\0\0\0\312\0\0\0\22\346\0\0\0\0\3\0\0\0\6\0\0\0\210\0\0\0" \
+  "\372\325\0\0\0\377\2\77\6\26\377\273\21A\377\367\274\21B\377\1}\13,\377" \
+  "\257\0\0\0\377\2\3\0\1\377\242\17""9\377\375\274\21B\377\1\\\10\40\377" \
+  "\322\0\0\0\377\2\0\0\0\356\0\0\0f\344\0\0\0\0\2\0\0\0""2\0\0\0\322\326" \
+  "\0\0\0\377\2(\4\16\377\266\20@\377\371\274\21B\377\1,\4\20\377\256\0" \
+  "\0\0\377\1@\6\27\377\376\274\21B\377\2\273\21A\3774\5\22\377\323\0\0" \
+  "\0\377\2\0\0\0\263\0\0\0\32\341\0\0\0\0\2\0\0\0j\0\0\0\367\326\0\0\0" \
+  "\377\2\24\2\7\377\252\17<\377\372\274\21B\377\2\223\15""4\377\1\0\0\377" \
+  "\255\0\0\0\377\1\226\16""5\377\377\274\21B\377\2\252\17<\377\21\2\6\377" \
+  "\323\0\0\0\377\2\0\0\0\344\0\0\0A\336\0\0\0\0\2\0\0\0\31\0\0\0\273\327" \
+  "\0\0\0\377\2\3\0\1\377\215\15""1\377\374\274\21B\377\1""7\5\23\377\254" \
+  "\0\0\0\377\1+\4\17\377\377\274\21B\377\202\274\21B\377\2\210\14""0\377" \
+  "\1\0\0\377\323\0\0\0\377\3\0\0\0\376\0\0\0\221\0\0\0\6\333\0\0\0\0\2" \
+  "\0\0\0<\0\0\0\342\330\0\0\0\377\1k\12&\377\375\274\21B\377\1\225\15""4" \
+  "\377\254\0\0\0\377\1}\13,\377\377\274\21B\377\203\274\21B\377\1S\10\35" \
+  "\377\325\0\0\0\377\2\0\0\0\305\0\0\0\35\331\0\0\0\0\2\0\0\0w\0\0\0\374" \
+  "\330\0\0\0\377\1C\6\30\377\377\274\21B\377\1""1\4\21\377\252\0\0\0\377" \
+  "\2\24\2\7\377\271\21A\377\377\274\21B\377\203\274\21B\377\2\267\21@\377" \
+  "!\3\14\377\325\0\0\0\377\2\0\0\0\355\0\0\0B\326\0\0\0\0\2\0\0\0\5\0\0" \
+  "\0\232\331\0\0\0\377\2\31\2\11\377\260\20>\377\377\274\21B\377\1\210" \
+  "\14""0\377\252\0\0\0\377\1V\10\36\377\377\274\21B\377\205\274\21B\377" \
+  "\2\223\15""4\377\3\0\1\377\325\0\0\0\377\2\0\0\0\373\0\0\0k\324\0\0\0" \
+  "\0\2\0\0\0\15\0\0\0\266\331\0\0\0\377\2\3\0\1\377\225\15""4\377\377\274" \
+  "\21B\377\3\274\21B\377\273\21B\377\35\3\12\377\251\0\0\0\377\1\235\16" \
+  "7\377\377\274\21B\377\206\274\21B\377\1X\10\37\377\327\0\0\0\377\2\0" \
+  "\0\0\206\0\0\0\1\321\0\0\0\0\2\0\0\0\33\0\0\0\325\332\0\0\0\377\1a\11" \
+  "\"\377\377\274\21B\377\203\274\21B\377\1l\12&\377\250\0\0\0\377\1#\3" \
+  "\14\377\377\274\21B\377\207\274\21B\377\2\265\20@\377\33\2\11\377\327" \
+  "\0\0\0\377\2\0\0\0\256\0\0\0\7\317\0\0\0\0\2\0\0\0$\0\0\0\336\332\0\0" \
+  "\0\377\2)\4\16\377\271\21A\377\377\274\21B\377\203\274\21B\377\2\262" \
+  "\20\77\377\12\1\4\377\247\0\0\0\377\1b\11\"\377\377\274\21B\377\210\274" \
+  "\21B\377\1\205\14/\377\330\0\0\0\377\2\0\0\0\275\0\0\0\15\315\0\0\0\0" \
+  "\2\0\0\0(\0\0\0\342\332\0\0\0\377\2\6\1\2\377\235\16""7\377\377\274\21" \
+  "B\377\205\274\21B\377\1F\6\31\377\247\0\0\0\377\1\234\16""7\377\377\274" \
+  "\21B\377\211\274\21B\377\1\77\6\26\377\330\0\0\0\377\2\0\0\0\277\0\0" \
+  "\0\16\313\0\0\0\0\2\0\0\0-\0\0\0\353\333\0\0\0\377\1e\11#\377\377\274" \
+  "\21B\377\206\274\21B\377\1\214\15""1\377\246\0\0\0\377\1\33\2\11\377" \
+  "\377\274\21B\377\212\274\21B\377\2\250\17;\377\11\1\3\377\330\0\0\0\377" \
+  "\2\0\0\0\317\0\0\0\22\311\0\0\0\0\2\0\0\0+\0\0\0\352\333\0\0\0\377\2" \
+  "%\3\15\377\271\21A\377\377\274\21B\377\206\274\21B\377\2\273\21A\377" \
+  "\25\2\10\377\245\0\0\0\377\1R\7\35\377\377\274\21B\377\213\274\21B\377" \
+  "\1a\11\"\377\253\0\0\0\377\5\25\2\7\3776\5\23\377\77\6\26\3775\5\23\377" \
+  "\31\2\11\377\251\0\0\0\377\2\0\0\0\310\0\0\0\16\307\0\0\0\0\2\0\0\0)" \
+  "\0\0\0\351\333\0\0\0\377\2\1\0\1\377\222\15""3\377\377\274\21B\377\210" \
+  "\274\21B\377\1T\10\36\377\245\0\0\0\377\1\204\14.\377\377\274\21B\377" \
+  "\213\274\21B\377\2\264\20\77\377\25\2\7\377\247\0\0\0\377\3\1\0\1\377" \
+  "C\6\30\377\226\16""5\377\205\274\21B\377\3\254\20<\377J\7\32\377\1\0" \
+  "\1\377\247\0\0\0\377\2\0\0\0\306\0\0\0\15\305\0\0\0\0\2\0\0\0\33\0\0" \
+  "\0\337\243\0\0\0\377\6\7\1\2\377(\4\16\377:\5\24\377=\6\25\377+\4\17" \
+  "\377\5\0\2\377\263\0\0\0\377\1N\7\33\377\377\274\21B\377\211\274\21B" \
+  "\377\1\216\15""2\377\244\0\0\0\377\2\2\0\1\377\260\20>\377\377\274\21" \
+  "B\377\214\274\21B\377\1v\13)\377\246\0\0\0\377\2\30\2\10\377\220\15""2" \
+  "\377\211\274\21B\377\2\223\15""4\377#\3\14\377\247\0\0\0\377\2\0\0\0" \
+  "\270\0\0\0\5\303\0\0\0\0\2\0\0\0\22\0\0\0\326\242\0\0\0\377\3\22\2\6" \
+  "\377z\13+\377\271\21A\377\204\274\21B\377\3\264\20\77\377u\13)\377\35" \
+  "\3\12\377\260\0\0\0\377\2\17\1\5\377\260\20>\377\377\274\21B\377\211" \
+  "\274\21B\377\2\272\21A\377\17\1\5\377\243\0\0\0\377\1&\3\15\377\377\274" \
+  "\21B\377\215\274\21B\377\2\273\21A\377\"\3\14\377\244\0\0\0\377\2(\4" \
+  "\16\377\255\20=\377\213\274\21B\377\3\271\21A\377j\12%\377\12\1\4\377" \
+  "\246\0\0\0\377\2\0\0\0\251\0\0\0\2\301\0\0\0\0\2\0\0\0\10\0\0\0\302\241" \
+  "\0\0\0\377\3\2\0\1\377Q\7\34\377\261\20>\377\210\274\21B\377\3\267\21" \
+  "@\377Z\10\40\377\1\0\1\377\256\0\0\0\377\1o\12'\377\377\274\21B\377\213" \
+  "\274\21B\377\1C\6\30\377\243\0\0\0\377\1S\7\35\377\377\274\21B\377\216" \
+  "\274\21B\377\1|\13+\377\243\0\0\0\377\2\33\2\11\377\255\20=\377\216\274" \
+  "\21B\377\2\251\17;\377:\5\24\377\246\0\0\0\377\1\0\0\0\212\300\0\0\0" \
+  "\0\2\0\0\0\2\0\0\0\251\241\0\0\0\377\2)\4\16\377\230\16""5\377\214\274" \
+  "\21B\377\2\201\14-\377\4\0\2\377\254\0\0\0\377\2\37\3\13\377\271\21A" \
+  "\377\377\274\21B\377\213\274\21B\377\1v\13)\377\243\0\0\0\377\1|\13+" \
+  "\377\377\274\21B\377\216\274\21B\377\2\273\21B\377'\4\16\377\241\0\0" \
+  "\0\377\2\7\1\2\377\234\16""7\377\221\274\21B\377\2}\13,\377\14\1\4\377" \
+  "\245\0\0\0\377\1\0\0\0n\277\0\0\0\0\1\0\0\0~\240\0\0\0\377\3\10\1\3\377" \
+  "o\12'\377\273\21A\377\216\274\21B\377\1x\13*\377\254\0\0\0\377\1\205" \
+  "\14/\377\377\274\21B\377\214\274\21B\377\1\244\17""9\377\243\0\0\0\377" \
+  "\1\240\16""8\377\377\274\21B\377\217\274\21B\377\1~\13,\377\241\0\0\0" \
+  "\377\1\\\10\40\377\223\274\21B\377\2\236\16""7\377$\3\15\377\244\0\0" \
+  "\0\377\2\0\0\0\373\0\0\0E\275\0\0\0\0\2\0\0\0U\0\0\0\376\237\0\0\0\377" \
+  "\2-\4\20\377\245\17:\377\221\274\21B\377\1O\7\34\377\252\0\0\0\377\1" \
+  "/\4\21\377\377\274\21B\377\216\274\21B\377\1\30\2\10\377\241\0\0\0\377" \
+  "\2\14\1\4\377\273\21B\377\377\274\21B\377\217\274\21B\377\2\273\21B\377" \
+  "\40\3\13\377\237\0\0\0\377\2\26\2\10\377\265\20@\377\224\274\21B\377" \
+  "\3\267\21@\377V\10\36\377\1\0\1\377\243\0\0\0\377\2\0\0\0\357\0\0\0$" \
+  "\273\0\0\0\0\2\0\0\0+\0\0\0\363\236\0\0\0\377\3\1\0\1\377X\10\37\377" \
+  "\270\21A\377\222\274\21B\377\2\263\20\77\377\25\2\7\377\251\0\0\0\377" \
+  "\1\213\15""1\377\377\274\21B\377\216\274\21B\377\1D\6\30\377\241\0\0" \
+  "\0\377\1,\4\20\377\377\274\21B\377\221\274\21B\377\1r\12(\377\237\0\0" \
+  "\0\377\1i\11%\377\227\274\21B\377\2\203\14.\377\12\1\4\377\243\0\0\0" \
+  "\377\2\0\0\0\327\0\0\0\16\271\0\0\0\0\2\0\0\0\17\0\0\0\331\236\0\0\0" \
+  "\377\2\25\2\10\377\214\15""1\377\225\274\21B\377\1{\13+\377\250\0\0\0" \
+  "\377\1""4\5\22\377\377\274\21B\377\217\274\21B\377\1m\12&\377\241\0\0" \
+  "\0\377\1J\7\32\377\377\274\21B\377\221\274\21B\377\2\270\21A\377\26\2" \
+  "\10\377\235\0\0\0\377\2\14\1\4\377\263\20\77\377\230\274\21B\377\2\242" \
+  "\17""9\377\40\3\13\377\243\0\0\0\377\2\0\0\0\256\0\0\0\1\270\0\0\0\0" \
+  "\1\0\0\0\247\236\0\0\0\377\2""0\4\21\377\255\20=\377\226\274\21B\377" \
+  "\2\272\21A\377\32\2\11\377\247\0\0\0\377\1\216\15""2\377\377\274\21B" \
+  "\377\217\274\21B\377\1\221\15""3\377\241\0\0\0\377\1d\11#\377\377\274" \
+  "\21B\377\222\274\21B\377\1a\11\"\377\235\0\0\0\377\1U\10\36\377\232\274" \
+  "\21B\377\2\262\20\77\377;\5\25\377\243\0\0\0\377\1\0\0\0k\267\0\0\0\0" \
+  "\1\0\0\0h\236\0\0\0\377\2X\10\37\377\272\21A\377\230\274\21B\377\1m\12" \
+  "&\377\246\0\0\0\377\1-\4\20\377\377\274\21B\377\220\274\21B\377\2\265" \
+  "\20@\377\3\0\1\377\240\0\0\0\377\1\200\14-\377\377\274\21B\377\222\274" \
+  "\21B\377\2\255\20=\377\6\1\2\377\234\0\0\0\377\1\237\16""8\377\233\274" \
+  "\21B\377\2\271\21A\377S\7\35\377\242\0\0\0\377\2\0\0\0\372\0\0\0""7\265" \
+  "\0\0\0\0\2\0\0\0.\0\0\0\367\234\0\0\0\377\2\7\1\3\377{\13+\377\232\274" \
+  "\21B\377\2\265\20\77\377\16\1\5\377\245\0\0\0\377\1\201\14-\377\377\274" \
+  "\21B\377\221\274\21B\377\1\36\3\13\377\240\0\0\0\377\1\227\16""5\377" \
+  "\377\274\21B\377\223\274\21B\377\1@\6\27\377\233\0\0\0\377\1\"\3\14\377" \
+  "\236\274\21B\377\2o\12'\377\1\0\1\377\241\0\0\0\377\2\0\0\0\333\0\0\0" \
+  "\15\263\0\0\0\0\2\0\0\0\11\0\0\0\324\234\0\0\0\377\2\20\1\6\377\220\15" \
+  "2\377\234\274\21B\377\1O\7\34\377\244\0\0\0\377\2\40\3\13\377\273\21" \
+  "B\377\377\274\21B\377\221\274\21B\377\1<\5\25\377\240\0\0\0\377\1\253" \
+  "\17<\377\377\274\21B\377\223\274\21B\377\1\220\15""2\377\233\0\0\0\377" \
+  "\1]\10!\377\237\274\21B\377\2z\13+\377\4\0\1\377\241\0\0\0\377\1\0\0" \
+  "\0\237\263\0\0\0\0\1\0\0\0\214\234\0\0\0\377\2\33\2\12\377\245\17:\377" \
+  "\235\274\21B\377\1\215\15""1\377\244\0\0\0\377\1p\12'\377\377\274\21" \
+  "B\377\222\274\21B\377\1V\10\36\377\237\0\0\0\377\2\3\0\1\377\273\21A" \
+  "\377\377\274\21B\377\223\274\21B\377\2\273\21B\377\33\2\11\377\232\0" \
+  "\0\0\377\1\231\16""6\377\240\274\21B\377\2\203\14.\377\6\1\2\377\241" \
+  "\0\0\0\377\1\0\0\0R\261\0\0\0\0\2\0\0\0D\0\0\0\376\233\0\0\0\377\2#\3" \
+  "\14\377\253\17<\377\236\274\21B\377\2\272\21A\377\17\1\5\377\242\0\0" \
+  "\0\377\2\15\1\4\377\265\20@\377\377\274\21B\377\222\274\21B\377\1r\12" \
+  "(\377\237\0\0\0\377\1\25\2\7\377\377\274\21B\377\225\274\21B\377\1a\11" \
+  "\"\377\231\0\0\0\377\2\24\2\7\377\273\21B\377\241\274\21B\377\2\205\14" \
+  "/\377\7\1\2\377\240\0\0\0\377\2\0\0\0\354\0\0\0\27\257\0\0\0\0\2\0\0" \
+  "\0\14\0\0\0\336\233\0\0\0\377\2*\4\17\377\257\20>\377\240\274\21B\377" \
+  "\1G\6\31\377\242\0\0\0\377\1O\7\34\377\377\274\21B\377\223\274\21B\377" \
+  "\1\213\15""1\377\237\0\0\0\377\1#\3\14\377\377\274\21B\377\225\274\21" \
+  "B\377\2\241\17""9\377\1\0\0\377\230\0\0\0\377\1\77\6\26\377\243\274\21" \
+  "B\377\2\213\15""1\377\6\1\2\377\240\0\0\0\377\1\0\0\0\252\257\0\0\0\0" \
+  "\1\0\0\0\217\233\0\0\0\377\2+\4\17\377\260\20>\377\241\274\21B\377\1" \
+  "~\13,\377\241\0\0\0\377\2\1\0\0\377\237\16""8\377\377\274\21B\377\223" \
+  "\274\21B\377\1\236\16""7\377\237\0\0\0\377\1,\4\20\377\377\274\21B\377" \
+  "\226\274\21B\377\1+\4\17\377\230\0\0\0\377\1h\11$\377\244\274\21B\377" \
+  "\2\202\14.\377\3\0\1\377\240\0\0\0\377\1\0\0\0S\255\0\0\0\0\2\0\0\0<" \
+  "\0\0\0\375\232\0\0\0\377\2-\4\20\377\265\20\77\377\242\274\21B\377\1" \
+  "\254\20<\377\241\0\0\0\377\1)\4\16\377\377\274\21B\377\224\274\21B\377" \
+  "\1\257\20>\377\237\0\0\0\377\1""6\5\23\377\377\274\21B\377\226\274\21" \
+  "B\377\1l\12&\377\230\0\0\0\377\1\221\15""3\377\245\274\21B\377\2x\13" \
+  "*\377\1\0\1\377\237\0\0\0\377\2\0\0\0\347\0\0\0\22\253\0\0\0\0\2\0\0" \
+  "\0\3\0\0\0\320\232\0\0\0\377\2&\3\15\377\261\20>\377\244\274\21B\377" \
+  "\1\27\2\10\377\240\0\0\0\377\1p\12'\377\377\274\21B\377\225\274\21B\377" \
+  "\1\7\1\2\377\236\0\0\0\377\1\77\6\26\377\377\274\21B\377\226\274\21B" \
+  "\377\1\244\17:\377\227\0\0\0\377\2\3\0\1\377\264\20\77\377\246\274\21" \
+  "B\377\1f\11$\377\240\0\0\0\377\1\0\0\0\226\253\0\0\0\0\1\0\0\0q\232\0" \
+  "\0\0\377\2\36\3\13\377\255\20=\377\245\274\21B\377\1@\6\27\377\237\0" \
+  "\0\0\377\2\4\0\2\377\255\20=\377\377\274\21B\377\225\274\21B\377\1\25" \
+  "\2\7\377\236\0\0\0\377\1E\6\30\377\377\274\21B\377\227\274\21B\377\1" \
+  "%\3\15\377\226\0\0\0\377\1\40\3\13\377\250\274\21B\377\1M\7\33\377\237" \
+  "\0\0\0\377\2\0\0\0\375\0\0\0""7\251\0\0\0\0\2\0\0\0\31\0\0\0\362\231" \
+  "\0\0\0\377\2\24\2\7\377\244\17""9\377\246\274\21B\377\1g\11$\377\237" \
+  "\0\0\0\377\1:\5\24\377\377\274\21B\377\226\274\21B\377\1\35\3\12\377" \
+  "\236\0\0\0\377\1E\6\30\377\377\274\21B\377\227\274\21B\377\1^\10!\377" \
+  "\226\0\0\0\377\1=\6\25\377\250\274\21B\377\2\272\21A\3776\5\23\377\237" \
+  "\0\0\0\377\2\0\0\0\314\0\0\0\2\250\0\0\0\0\1\0\0\0\240\231\0\0\0\377" \
+  "\2\7\1\3\377\230\16""5\377\247\274\21B\377\1\215\15""1\377\237\0\0\0" \
+  "\377\1{\13+\377\377\274\21B\377\226\274\21B\377\1(\4\16\377\236\0\0\0" \
+  "\377\1G\6\31\377\377\274\21B\377\227\274\21B\377\1\226\16""5\377\226" \
+  "\0\0\0\377\1Y\10\37\377\251\274\21B\377\2\257\20=\377\33\2\11\377\237" \
+  "\0\0\0\377\1\0\0\0d\247\0\0\0\0\2\0\0\0""5\0\0\0\375\230\0\0\0\377\2" \
+  "\1\0\1\377\202\14.\377\250\274\21B\377\1\252\17<\377\236\0\0\0\377\2" \
+  "\4\0\1\377\260\20>\377\377\274\21B\377\226\274\21B\377\1""1\4\21\377" \
+  "\236\0\0\0\377\1H\6\31\377\377\274\21B\377\227\274\21B\377\2\272\21A" \
+  "\377\15\1\5\377\225\0\0\0\377\1t\13)\377\252\274\21B\377\2\236\16""7" \
+  "\377\12\1\4\377\236\0\0\0\377\2\0\0\0\347\0\0\0\16\245\0\0\0\0\2\0\0" \
+  "\0\1\0\0\0\310\231\0\0\0\377\1^\10!\377\252\274\21B\377\1\12\1\3\377" \
+  "\235\0\0\0\377\1""5\5\23\377\377\274\21B\377\227\274\21B\377\1""6\5\23" \
+  "\377\236\0\0\0\377\1C\6\30\377\377\274\21B\377\230\274\21B\377\1\77\6" \
+  "\26\377\225\0\0\0\377\1\217\15""2\377\253\274\21B\377\1w\13*\377\237" \
+  "\0\0\0\377\1\0\0\0\210\245\0\0\0\0\1\0\0\0P\231\0\0\0\377\2\77\6\26\377" \
+  "\273\21B\377\252\274\21B\377\1#\3\14\377\235\0\0\0\377\1m\12&\377\377" \
+  "\274\21B\377\227\274\21B\377\1""7\5\23\377\236\0\0\0\377\1<\5\25\377" \
+  "\377\274\21B\377\230\274\21B\377\1q\12(\377\225\0\0\0\377\1\252\17<\377" \
+  "\254\274\21B\377\1\77\6\26\377\236\0\0\0\377\2\0\0\0\367\0\0\0\35\243" \
+  "\0\0\0\0\2\0\0\0\4\0\0\0\330\230\0\0\0\377\2\30\2\10\377\261\20>\377" \
+  "\253\274\21B\377\1>\6\26\377\235\0\0\0\377\1\246\17:\377\377\274\21B" \
+  "\377\227\274\21B\377\1""7\5\23\377\236\0\0\0\377\1""4\5\22\377\377\274" \
+  "\21B\377\230\274\21B\377\1\237\16""8\377\224\0\0\0\377\2\2\0\1\377\272" \
+  "\21A\377\254\274\21B\377\2\261\20>\377\26\2\10\377\236\0\0\0\377\1\0" \
+  "\0\0\234\243\0\0\0\0\1\0\0\0e\230\0\0\0\377\2\1\0\1\377\216\15""2\377" \
+  "\254\274\21B\377\1X\10\37\377\234\0\0\0\377\1\33\2\11\377\377\274\21" \
+  "B\377\230\274\21B\377\1""9\5\24\377\236\0\0\0\377\1,\4\20\377\377\274" \
+  "\21B\377\230\274\21B\377\2\273\21B\377\15\1\4\377\223\0\0\0\377\1\20" \
+  "\1\6\377\256\274\21B\377\2\217\15""2\377\1\0\1\377\235\0\0\0\377\2\0" \
+  "\0\0\374\0\0\0+\241\0\0\0\0\2\0\0\0\7\0\0\0\341\230\0\0\0\377\1[\10\40" \
+  "\377\255\274\21B\377\1j\12%\377\234\0\0\0\377\1N\7\33\377\377\274\21" \
+  "B\377\230\274\21B\377\1""4\5\22\377\236\0\0\0\377\1\36\3\13\377\377\274" \
+  "\21B\377\231\274\21B\377\1""7\5\23\377\223\0\0\0\377\1\40\3\13\377\257" \
+  "\274\21B\377\1O\7\34\377\236\0\0\0\377\1\0\0\0\252\241\0\0\0\0\1\0\0" \
+  "\0h\230\0\0\0\377\2(\4\16\377\271\21A\377\255\274\21B\377\1{\13+\377" \
+  "\234\0\0\0\377\1\177\13-\377\377\274\21B\377\230\274\21B\377\1-\4\20" \
+  "\377\236\0\0\0\377\1\17\1\5\377\377\274\21B\377\231\274\21B\377\1^\11" \
+  "!\377\223\0\0\0\377\1""1\4\21\377\257\274\21B\377\2\265\20\77\377\30" \
+  "\2\11\377\235\0\0\0\377\2\0\0\0\376\0\0\0,\237\0\0\0\0\2\0\0\0\4\0\0" \
+  "\0\335\227\0\0\0\377\2\5\0\2\377\233\16""6\377\256\274\21B\377\1\213" \
+  "\15""1\377\233\0\0\0\377\2\1\0\0\377\256\20=\377\377\274\21B\377\230" \
+  "\274\21B\377\1&\3\15\377\236\0\0\0\377\2\1\0\1\377\271\21A\377\377\274" \
+  "\21B\377\230\274\21B\377\1\203\14.\377\223\0\0\0\377\1A\6\27\377\260" \
+  "\274\21B\377\1\201\14-\377\236\0\0\0\377\1\0\0\0\242\237\0\0\0\0\1\0" \
+  "\0\0Y\230\0\0\0\377\1`\11\"\377\257\274\21B\377\1\234\16""7\377\233\0" \
+  "\0\0\377\1\32\2\11\377\377\274\21B\377\231\274\21B\377\1\36\3\13\377" \
+  "\237\0\0\0\377\1\253\17<\377\377\274\21B\377\230\274\21B\377\1\243\17" \
+  "9\377\223\0\0\0\377\1O\7\34\377\261\274\21B\377\1""4\5\22\377\235\0\0" \
+  "\0\377\2\0\0\0\373\0\0\0\40\235\0\0\0\0\2\0\0\0\1\0\0\0\321\227\0\0\0" \
+  "\377\2\35\3\12\377\270\21@\377\257\274\21B\377\1\255\20=\377\233\0\0" \
+  "\0\377\1E\6\30\377\377\274\21B\377\231\274\21B\377\1\20\1\6\377\237\0" \
+  "\0\0\377\1\224\15""4\377\377\274\21B\377\230\274\21B\377\2\273\21B\377" \
+  "\12\1\4\377\222\0\0\0\377\1W\10\37\377\261\274\21B\377\2\245\17:\377" \
+  "\10\1\3\377\235\0\0\0\377\1\0\0\0\224\235\0\0\0\0\1\0\0\0E\230\0\0\0" \
+  "\377\1\204\14.\377\260\274\21B\377\1\272\21A\377\233\0\0\0\377\1m\12" \
+  "&\377\377\274\21B\377\230\274\21B\377\2\272\21A\377\2\0\1\377\237\0\0" \
+  "\0\377\1}\13,\377\377\274\21B\377\231\274\21B\377\1)\4\16\377\222\0\0" \
+  "\0\377\1^\11!\377\262\274\21B\377\1Z\10\40\377\235\0\0\0\377\2\0\0\0" \
+  "\364\0\0\0\23\234\0\0\0\0\1\0\0\0\266\227\0\0\0\377\1>\6\26\377\262\274" \
+  "\21B\377\1\6\1\2\377\232\0\0\0\377\1\223\15""4\377\377\274\21B\377\230" \
+  "\274\21B\377\1\253\17<\377\240\0\0\0\377\1c\11#\377\377\274\21B\377\231" \
+  "\274\21B\377\1F\6\31\377\222\0\0\0\377\1f\11$\377\262\274\21B\377\2\263" \
+  "\20\77\377\17\1\5\377\235\0\0\0\377\1\0\0\0y\233\0\0\0\0\2\0\0\0&\0\0" \
+  "\0\376\226\0\0\0\377\2\5\0\2\377\244\17:\377\262\274\21B\377\1\15\1\5" \
+  "\377\231\0\0\0\377\2\1\0\0\377\262\20>\377\377\274\21B\377\230\274\21" \
+  "B\377\1\233\16""6\377\240\0\0\0\377\1K\7\32\377\377\274\21B\377\231\274" \
+  "\21B\377\1^\10!\377\222\0\0\0\377\1n\12'\377\263\274\21B\377\1e\11#\377" \
+  "\235\0\0\0\377\2\0\0\0\341\0\0\0\3\232\0\0\0\0\1\0\0\0\215\227\0\0\0" \
+  "\377\1T\10\36\377\263\274\21B\377\1\25\2\7\377\231\0\0\0\377\1\30\2\10" \
+  "\377\377\274\21B\377\231\274\21B\377\1\205\14/\377\240\0\0\0\377\1+\4" \
+  "\17\377\377\274\21B\377\231\274\21B\377\1w\13*\377\222\0\0\0\377\1u\13" \
+  ")\377\263\274\21B\377\2\265\20@\377\24\2\7\377\235\0\0\0\377\1\0\0\0" \
+  "O\231\0\0\0\0\2\0\0\0\13\0\0\0\357\226\0\0\0\377\2\12\1\4\377\255\20" \
+  "=\377\263\274\21B\377\1\35\3\12\377\231\0\0\0\377\1""8\5\24\377\377\274" \
+  "\21B\377\231\274\21B\377\1m\12&\377\240\0\0\0\377\2\14\1\4\377\273\21" \
+  "B\377\377\274\21B\377\230\274\21B\377\1\216\15""2\377\222\0\0\0\377\1" \
+  "{\13+\377\264\274\21B\377\1i\11%\377\235\0\0\0\377\1\0\0\0\272\231\0" \
+  "\0\0\0\1\0\0\0_\227\0\0\0\377\1\\\10\40\377\264\274\21B\377\1$\3\15\377" \
+  "\231\0\0\0\377\1U\10\36\377\377\274\21B\377\231\274\21B\377\1T\10\36" \
+  "\377\241\0\0\0\377\1\245\17:\377\377\274\21B\377\230\274\21B\377\1\242" \
+  "\17""9\377\222\0\0\0\377\1{\13+\377\264\274\21B\377\2\265\20@\377\17" \
+  "\1\5\377\234\0\0\0\377\2\0\0\0\375\0\0\0#\230\0\0\0\0\1\0\0\0\304\226" \
+  "\0\0\0\377\2\13\1\4\377\257\20=\377\264\274\21B\377\1*\4\17\377\231\0" \
+  "\0\0\377\1l\12&\377\377\274\21B\377\231\274\21B\377\1<\5\25\377\241\0" \
+  "\0\0\377\1\205\14/\377\377\274\21B\377\230\274\21B\377\1\262\20>\377" \
+  "\222\0\0\0\377\1{\13+\377\265\274\21B\377\1_\11!\377\235\0\0\0\377\1" \
+  "\0\0\0\206\227\0\0\0\0\2\0\0\0#\0\0\0\376\226\0\0\0\377\1[\10\40\377" \
+  "\265\274\21B\377\1+\4\17\377\231\0\0\0\377\1\206\14/\377\377\274\21B" \
+  "\377\231\274\21B\377\1\34\3\12\377\241\0\0\0\377\1[\10\40\377\377\274" \
+  "\21B\377\231\274\21B\377\1\7\1\2\377\221\0\0\0\377\1{\13+\377\265\274" \
+  "\21B\377\2\255\20=\377\7\1\2\377\234\0\0\0\377\2\0\0\0\344\0\0\0\3\226" \
+  "\0\0\0\0\1\0\0\0\177\226\0\0\0\377\2\6\1\2\377\255\20=\377\265\274\21" \
+  "B\377\1+\4\17\377\231\0\0\0\377\1\237\16""8\377\377\274\21B\377\230\274" \
+  "\21B\377\2\265\20@\377\2\0\1\377\241\0\0\0\377\1""3\5\22\377\377\274" \
+  "\21B\377\231\274\21B\377\1\26\2\10\377\221\0\0\0\377\1{\13+\377\266\274" \
+  "\21B\377\1I\7\32\377\235\0\0\0\377\1\0\0\0A\225\0\0\0\0\2\0\0\0\1\0\0" \
+  "\0\334\226\0\0\0\377\1H\7\31\377\266\274\21B\377\1+\4\17\377\231\0\0" \
+  "\0\377\1\262\20\77\377\377\274\21B\377\230\274\21B\377\1\226\16""5\377" \
+  "\242\0\0\0\377\2\12\1\3\377\272\21A\377\377\274\21B\377\230\274\21B\377" \
+  "\1!\3\14\377\221\0\0\0\377\1{\13+\377\266\274\21B\377\1\231\16""6\377" \
+  "\235\0\0\0\377\1\0\0\0\236\225\0\0\0\0\1\0\0\0""9\226\0\0\0\377\2\1\0" \
+  "\0\377\234\16""7\377\266\274\21B\377\1+\4\17\377\230\0\0\0\377\1\5\0" \
+  "\2\377\377\274\21B\377\231\274\21B\377\1u\13)\377\243\0\0\0\377\1\233" \
+  "\16""6\377\377\274\21B\377\230\274\21B\377\1(\4\16\377\221\0\0\0\377" \
+  "\1{\13+\377\267\274\21B\377\1)\4\16\377\234\0\0\0\377\2\0\0\0\361\0\0" \
+  "\0\12\224\0\0\0\0\1\0\0\0\216\226\0\0\0\377\1/\4\21\377\267\274\21B\377" \
+  "\1+\4\17\377\230\0\0\0\377\1\25\2\7\377\377\274\21B\377\231\274\21B\377" \
+  "\1M\7\33\377\243\0\0\0\377\1i\12%\377\377\274\21B\377\230\274\21B\377" \
+  "\1""0\4\21\377\221\0\0\0\377\1w\13*\377\267\274\21B\377\1o\12'\377\235" \
+  "\0\0\0\377\1\0\0\0P\223\0\0\0\0\2\0\0\0\1\0\0\0\340\226\0\0\0\377\1{" \
+  "\13+\377\267\274\21B\377\1+\4\17\377\230\0\0\0\377\1$\3\15\377\377\274" \
+  "\21B\377\231\274\21B\377\1$\3\15\377\243\0\0\0\377\1:\5\24\377\377\274" \
+  "\21B\377\230\274\21B\377\1""7\5\23\377\221\0\0\0\377\1p\12'\377\267\274" \
+  "\21B\377\2\257\20>\377\5\0\2\377\234\0\0\0\377\1\0\0\0\242\223\0\0\0" \
+  "\0\1\0\0\0""0\226\0\0\0\377\2\14\1\4\377\266\20@\377\267\274\21B\377" \
+  "\1&\3\15\377\230\0\0\0\377\1/\4\21\377\377\274\21B\377\230\274\21B\377" \
+  "\2\263\20\77\377\2\0\1\377\243\0\0\0\377\2\12\1\3\377\270\21A\377\377" \
+  "\274\21B\377\227\274\21B\377\1""8\5\24\377\221\0\0\0\377\1i\12%\377\270" \
+  "\274\21B\377\1<\5\25\377\234\0\0\0\377\2\0\0\0\355\0\0\0\4\222\0\0\0" \
+  "\0\1\0\0\0\177\226\0\0\0\377\1J\7\32\377\270\274\21B\377\1\37\3\13\377" \
+  "\230\0\0\0\377\1""7\5\23\377\377\274\21B\377\230\274\21B\377\1\216\15" \
+  "2\377\245\0\0\0\377\1\222\15""3\377\377\274\21B\377\227\274\21B\377\1" \
+  "7\5\23\377\221\0\0\0\377\1d\11#\377\270\274\21B\377\1~\13,\377\235\0" \
+  "\0\0\377\1\0\0\0A\222\0\0\0\0\1\0\0\0\316\226\0\0\0\377\1\216\15""2\377" \
+  "\270\274\21B\377\1\30\2\11\377\230\0\0\0\377\1\77\6\26\377\377\274\21" \
+  "B\377\230\274\21B\377\1\\\10\40\377\245\0\0\0\377\1W\10\37\377\377\274" \
+  "\21B\377\227\274\21B\377\1""7\5\23\377\221\0\0\0\377\1\\\10\40\377\270" \
+  "\274\21B\377\2\265\20@\377\10\1\3\377\234\0\0\0\377\1\0\0\0\220\221\0" \
+  "\0\0\0\2\0\0\0\33\0\0\0\376\225\0\0\0\377\2\26\2\10\377\273\21A\377\270" \
+  "\274\21B\377\1\22\2\6\377\230\0\0\0\377\1F\6\31\377\377\274\21B\377\230" \
+  "\274\21B\377\1+\4\17\377\245\0\0\0\377\1\35\3\12\377\377\274\21B\377" \
+  "\227\274\21B\377\1""5\5\23\377\221\0\0\0\377\1V\10\36\377\271\274\21" \
+  "B\377\1:\5\24\377\234\0\0\0\377\1\0\0\0\333\221\0\0\0\0\1\0\0\0_\226" \
+  "\0\0\0\377\1T\10\36\377\271\274\21B\377\1\13\1\4\377\230\0\0\0\377\1" \
+  "H\6\31\377\377\274\21B\377\227\274\21B\377\2\257\20>\377\2\0\1\377\246" \
+  "\0\0\0\377\1\234\16""7\377\377\274\21B\377\226\274\21B\377\1,\4\20\377" \
+  "\221\0\0\0\377\1N\7\33\377\271\274\21B\377\1p\12'\377\235\0\0\0\377\1" \
+  "\0\0\0!\220\0\0\0\0\1\0\0\0\237\226\0\0\0\377\1\214\15""1\377\271\274" \
+  "\21B\377\1\4\0\2\377\230\0\0\0\377\1F\6\31\377\377\274\21B\377\227\274" \
+  "\21B\377\1\202\14.\377\247\0\0\0\377\1a\11\"\377\377\274\21B\377\226" \
+  "\274\21B\377\1#\3\14\377\221\0\0\0\377\1B\6\27\377\271\274\21B\377\2" \
+  "\252\17<\377\1\0\0\377\234\0\0\0\377\1\0\0\0b\220\0\0\0\0\1\0\0\0\337" \
+  "\225\0\0\0\377\2\12\1\4\377\270\21@\377\270\274\21B\377\1\270\21A\377" \
+  "\231\0\0\0\377\1E\6\30\377\377\274\21B\377\227\274\21B\377\1G\6\31\377" \
+  "\247\0\0\0\377\2\33\2\12\377\273\21B\377\377\274\21B\377\225\274\21B" \
+  "\377\1\32\2\11\377\221\0\0\0\377\1""6\5\23\377\272\274\21B\377\1$\3\15" \
+  "\377\234\0\0\0\377\1\0\0\0\243\217\0\0\0\0\1\0\0\0\40\226\0\0\0\377\1" \
+  "@\6\27\377\271\274\21B\377\1\255\20=\377\231\0\0\0\377\1D\6\30\377\377" \
+  "\274\21B\377\226\274\21B\377\2\272\21A\377\17\1\5\377\250\0\0\0\377\1" \
+  "\226\16""5\377\377\274\21B\377\225\274\21B\377\1\17\1\5\377\221\0\0\0" \
+  "\377\1)\4\16\377\272\274\21B\377\1V\10\36\377\234\0\0\0\377\1\0\0\0\345" \
+  "\217\0\0\0\0\1\0\0\0a\226\0\0\0\377\1v\13)\377\271\274\21B\377\1\240" \
+  "\16""8\377\231\0\0\0\377\1;\5\25\377\377\274\21B\377\226\274\21B\377" \
+  "\1\214\15""1\377\251\0\0\0\377\1P\7\34\377\377\274\21B\377\224\274\21" \
+  "B\377\2\271\21A\377\1\0\1\377\221\0\0\0\377\1\33\2\12\377\272\274\21" \
+  "B\377\1\202\14.\377\235\0\0\0\377\1\0\0\0%\216\0\0\0\0\1\0\0\0\234\226" \
+  "\0\0\0\377\1\250\17;\377\271\274\21B\377\1\223\15""4\377\231\0\0\0\377" \
+  "\1""2\5\22\377\377\274\21B\377\226\274\21B\377\1R\7\35\377\251\0\0\0" \
+  "\377\2\21\2\6\377\270\21A\377\377\274\21B\377\223\274\21B\377\1\251\17" \
+  ";\377\222\0\0\0\377\1\17\1\5\377\272\274\21B\377\2\255\20=\377\1\0\0" \
+  "\377\234\0\0\0\377\1\0\0\0a\216\0\0\0\0\1\0\0\0\321\225\0\0\0\377\1\30" \
+  "\2\10\377\272\274\21B\377\1\206\14/\377\231\0\0\0\377\1)\4\16\377\377" \
+  "\274\21B\377\225\274\21B\377\2\270\21A\377\17\1\5\377\252\0\0\0\377\1" \
+  "z\13+\377\377\274\21B\377\223\274\21B\377\1\226\16""5\377\222\0\0\0\377" \
+  "\2\3\0\1\377\273\21B\377\272\274\21B\377\1\36\3\13\377\234\0\0\0\377" \
+  "\1\0\0\0\226\215\0\0\0\0\2\0\0\0\13\0\0\0\374\225\0\0\0\377\1D\6\30\377" \
+  "\272\274\21B\377\1z\13+\377\231\0\0\0\377\1\36\3\13\377\377\274\21B\377" \
+  "\225\274\21B\377\1\207\14/\377\253\0\0\0\377\1""0\4\21\377\377\274\21" \
+  "B\377\223\274\21B\377\1\203\14.\377\223\0\0\0\377\1\260\20>\377\272\274" \
+  "\21B\377\1H\7\31\377\234\0\0\0\377\1\0\0\0\311\215\0\0\0\0\1\0\0\0""9" \
+  "\226\0\0\0\377\1o\12'\377\272\274\21B\377\1m\12&\377\231\0\0\0\377\1" \
+  "\14\1\4\377\377\274\21B\377\225\274\21B\377\1@\6\27\377\254\0\0\0\377" \
+  "\1\233\16""6\377\377\274\21B\377\222\274\21B\377\1f\11$\377\223\0\0\0" \
+  "\377\1\236\16""7\377\272\274\21B\377\1n\12'\377\234\0\0\0\377\2\0\0\0" \
+  "\367\0\0\0\5\214\0\0\0\0\1\0\0\0m\226\0\0\0\377\1\232\16""6\377\272\274" \
+  "\21B\377\1_\11!\377\232\0\0\0\377\1\266\20@\377\377\274\21B\377\223\274" \
+  "\21B\377\2\262\20>\377\7\1\3\377\254\0\0\0\377\1P\7\34\377\377\274\21" \
+  "B\377\222\274\21B\377\1L\7\33\377\223\0\0\0\377\1\213\15""1\377\272\274" \
+  "\21B\377\1\217\15""2\377\235\0\0\0\377\1\0\0\0/\214\0\0\0\0\1\0\0\0\240" \
+  "\225\0\0\0\377\2\7\1\2\377\272\21A\377\272\274\21B\377\1L\7\33\377\232" \
+  "\0\0\0\377\1\244\17""9\377\377\274\21B\377\223\274\21B\377\1l\12&\377" \
+  "\255\0\0\0\377\2\7\1\3\377\255\20=\377\377\274\21B\377\221\274\21B\377" \
+  "\1/\4\21\377\223\0\0\0\377\1z\13+\377\272\274\21B\377\1\257\20>\377\235" \
+  "\0\0\0\377\1\0\0\0c\214\0\0\0\0\1\0\0\0\313\225\0\0\0\377\1%\3\15\377" \
+  "\273\274\21B\377\1:\5\24\377\232\0\0\0\377\1\220\15""2\377\377\274\21" \
+  "B\377\223\274\21B\377\1!\3\14\377\256\0\0\0\377\1a\11\"\377\377\274\21" \
+  "B\377\221\274\21B\377\1\21\2\6\377\223\0\0\0\377\1g\11$\377\273\274\21" \
+  "B\377\1\24\2\7\377\234\0\0\0\377\1\0\0\0\216\213\0\0\0\0\2\0\0\0\1\0" \
+  "\0\0\362\225\0\0\0\377\1E\6\30\377\273\274\21B\377\1(\4\16\377\232\0" \
+  "\0\0\377\1t\12)\377\377\274\21B\377\222\274\21B\377\1\216\15""2\377\257" \
+  "\0\0\0\377\2\16\1\5\377\264\20\77\377\377\274\21B\377\217\274\21B\377" \
+  "\1\247\17;\377\224\0\0\0\377\1V\10\36\377\273\274\21B\377\1""4\5\22\377" \
+  "\234\0\0\0\377\1\0\0\0\264\213\0\0\0\0\1\0\0\0\31\226\0\0\0\377\1f\11" \
+  "$\377\273\274\21B\377\1\25\2\10\377\232\0\0\0\377\1Z\10\40\377\377\274" \
+  "\21B\377\222\274\21B\377\1B\6\27\377\260\0\0\0\377\1o\12'\377\377\274" \
+  "\21B\377\217\274\21B\377\1\204\14.\377\224\0\0\0\377\1C\6\30\377\273" \
+  "\274\21B\377\1N\7\33\377\234\0\0\0\377\1\0\0\0\332\213\0\0\0\0\1\0\0" \
+  "\0\77\226\0\0\0\377\1\205\14/\377\272\274\21B\377\2\273\21B\377\5\0\2" \
+  "\377\232\0\0\0\377\1=\6\25\377\377\274\21B\377\221\274\21B\377\2\241" \
+  "\17""9\377\2\0\1\377\260\0\0\0\377\2\25\2\7\377\266\20@\377\377\274\21" \
+  "B\377\216\274\21B\377\1_\11!\377\224\0\0\0\377\1/\4\21\377\273\274\21" \
+  "B\377\1c\11#\377\234\0\0\0\377\2\0\0\0\373\0\0\0\5\212\0\0\0\0\1\0\0" \
+  "\0d\226\0\0\0\377\1\237\16""8\377\272\274\21B\377\1\256\20=\377\233\0" \
+  "\0\0\377\1\37\3\13\377\377\274\21B\377\221\274\21B\377\1R\7\35\377\262" \
+  "\0\0\0\377\1d\11#\377\377\274\21B\377\216\274\21B\377\1""3\5\22\377\224" \
+  "\0\0\0\377\1\27\2\10\377\273\274\21B\377\1y\13*\377\235\0\0\0\377\1\0" \
+  "\0\0'\212\0\0\0\0\1\0\0\0\210\226\0\0\0\377\1\264\20\77\377\272\274\21" \
+  "B\377\1\232\16""6\377\233\0\0\0\377\2\1\0\1\377\263\20\77\377\377\274" \
+  "\21B\377\217\274\21B\377\2\255\20=\377\7\1\3\377\262\0\0\0\377\2\14\1" \
+  "\4\377\257\20>\377\377\274\21B\377\214\274\21B\377\2\270\21@\377\7\1" \
+  "\3\377\224\0\0\0\377\2\2\0\1\377\270\21A\377\272\274\21B\377\1\216\15" \
+  "2\377\235\0\0\0\377\1\0\0\0K\212\0\0\0\0\1\0\0\0\245\225\0\0\0\377\1" \
+  "\16\1\5\377\273\274\21B\377\1\202\14.\377\234\0\0\0\377\1\223\15""4\377" \
+  "\377\274\21B\377\217\274\21B\377\1`\11\"\377\264\0\0\0\377\1\\\10\40" \
+  "\377\377\274\21B\377\214\274\21B\377\1\222\15""3\377\226\0\0\0\377\1" \
+  "\244\17:\377\272\274\21B\377\1\243\17""9\377\235\0\0\0\377\1\0\0\0i\212" \
+  "\0\0\0\0\1\0\0\0\275\225\0\0\0\377\1#\3\14\377\273\274\21B\377\1j\12" \
+  "%\377\234\0\0\0\377\1n\12'\377\377\274\21B\377\216\274\21B\377\2\257" \
+  "\20=\377\14\1\4\377\264\0\0\0\377\2\7\1\3\377\247\17;\377\377\274\21" \
+  "B\377\213\274\21B\377\1b\11\"\377\226\0\0\0\377\1\214\15""1\377\272\274" \
+  "\21B\377\1\263\20\77\377\235\0\0\0\377\1\0\0\0\200\212\0\0\0\0\1\0\0" \
+  "\0\324\225\0\0\0\377\1""9\5\24\377\273\274\21B\377\1T\10\36\377\234\0" \
+  "\0\0\377\1B\6\27\377\377\274\21B\377\216\274\21B\377\1V\10\36\377\266" \
+  "\0\0\0\377\1A\6\27\377\377\274\21B\377\213\274\21B\377\1)\4\16\377\226" \
+  "\0\0\0\377\1t\13)\377\272\274\21B\377\2\273\21B\377\3\0\1\377\234\0\0" \
+  "\0\377\1\0\0\0\227\212\0\0\0\0\1\0\0\0\354\225\0\0\0\377\1H\6\31\377" \
+  "\273\274\21B\377\1<\5\25\377\234\0\0\0\377\1\22\2\6\377\377\274\21B\377" \
+  "\215\274\21B\377\2\247\17;\377\6\1\2\377\266\0\0\0\377\2\1\0\0\377\221" \
+  "\15""3\377\377\274\21B\377\211\274\21B\377\2\253\17<\377\1\0\1\377\226" \
+  "\0\0\0\377\1^\10!\377\273\274\21B\377\1\15\1\5\377\234\0\0\0\377\1\0" \
+  "\0\0\256\211\0\0\0\0\2\0\0\0\6\0\0\0\376\225\0\0\0\377\1S\7\35\377\273" \
+  "\274\21B\377\1%\3\15\377\235\0\0\0\377\1\241\17""8\377\377\274\21B\377" \
+  "\214\274\21B\377\1M\7\33\377\270\0\0\0\377\2)\4\16\377\273\21A\377\377" \
+  "\274\21B\377\210\274\21B\377\1w\13*\377\227\0\0\0\377\1D\6\30\377\273" \
+  "\274\21B\377\1\31\2\11\377\234\0\0\0\377\1\0\0\0\306\211\0\0\0\0\1\0" \
+  "\0\0\33\226\0\0\0\377\1^\10!\377\273\274\21B\377\1\15\1\5\377\235\0\0" \
+  "\0\377\1q\12(\377\377\274\21B\377\213\274\21B\377\2\235\16""7\377\3\0" \
+  "\1\377\271\0\0\0\377\1l\12&\377\377\274\21B\377\210\274\21B\377\1:\5" \
+  "\24\377\227\0\0\0\377\1'\4\16\377\273\274\21B\377\1$\3\15\377\234\0\0" \
+  "\0\377\1\0\0\0\334\211\0\0\0\0\1\0\0\0(\226\0\0\0\377\1h\11$\377\272" \
+  "\274\21B\377\1\261\20>\377\236\0\0\0\377\1""8\5\24\377\377\274\21B\377" \
+  "\213\274\21B\377\1""1\4\21\377\272\0\0\0\377\2\7\1\3\377\243\17""9\377" \
+  "\377\274\21B\377\206\274\21B\377\2\253\17<\377\3\0\1\377\227\0\0\0\377" \
+  "\2\12\1\3\377\273\21B\377\272\274\21B\377\1)\4\16\377\234\0\0\0\377\1" \
+  "\0\0\0\352\211\0\0\0\0\1\0\0\0""1\226\0\0\0\377\1s\12(\377\272\274\21" \
+  "B\377\1\223\15""4\377\236\0\0\0\377\2\7\1\2\377\265\20\77\377\377\274" \
+  "\21B\377\211\274\21B\377\1\204\14.\377\274\0\0\0\377\1:\5\24\377\377" \
+  "\274\21B\377\206\274\21B\377\1o\12'\377\231\0\0\0\377\1\251\17;\377\272" \
+  "\274\21B\377\1*\4\17\377\234\0\0\0\377\1\0\0\0\363\211\0\0\0\0\1\0\0" \
+  "\0:\226\0\0\0\377\1y\13*\377\272\274\21B\377\1v\13)\377\237\0\0\0\377" \
+  "\1\205\14/\377\377\274\21B\377\210\274\21B\377\2\267\21@\377\35\3\12" \
+  "\377\275\0\0\0\377\1w\13*\377\377\274\21B\377\205\274\21B\377\1*\4\17" \
+  "\377\231\0\0\0\377\1\214\15""1\377\272\274\21B\377\1+\4\17\377\234\0" \
+  "\0\0\377\1\0\0\0\374\211\0\0\0\0\1\0\0\0C\226\0\0\0\377\1z\13+\377\272" \
+  "\274\21B\377\1Y\10\37\377\237\0\0\0\377\1H\7\31\377\377\274\21B\377\210" \
+  "\274\21B\377\1^\11!\377\276\0\0\0\377\2\10\1\3\377\240\16""8\377\377" \
+  "\274\21B\377\203\274\21B\377\1\226\16""5\377\232\0\0\0\377\1o\12'\377" \
+  "\272\274\21B\377\1+\4\17\377\235\0\0\0\377\1\0\0\0\6\210\0\0\0\0\1\0" \
+  "\0\0L\226\0\0\0\377\1{\13+\377\272\274\21B\377\1<\5\25\377\237\0\0\0" \
+  "\377\2\12\1\3\377\265\20\77\377\377\274\21B\377\206\274\21B\377\2\231" \
+  "\16""6\377\3\0\1\377\277\0\0\0\377\2&\3\15\377\270\21A\377\377\274\21" \
+  "B\377\202\274\21B\377\1I\7\32\377\232\0\0\0\377\1S\10\35\377\272\274" \
+  "\21B\377\1,\4\20\377\235\0\0\0\377\1\0\0\0\20\210\0\0\0\0\1\0\0\0T\226" \
+  "\0\0\0\377\1}\13,\377\272\274\21B\377\1\37\3\13\377\240\0\0\0\377\1~" \
+  "\13,\377\377\274\21B\377\205\274\21B\377\2\273\21B\377.\4\20\377\301" \
+  "\0\0\0\377\1c\11#\377\377\274\21B\377\3\274\21B\377\261\20>\377\10\1" \
+  "\3\377\232\0\0\0\377\1""4\5\22\377\272\274\21B\377\1'\4\16\377\235\0" \
+  "\0\0\377\1\0\0\0\31\210\0\0\0\0\1\0\0\0S\226\0\0\0\377\1}\13,\377\271" \
+  "\274\21B\377\2\272\21A\377\5\0\2\377\240\0\0\0\377\1:\5\24\377\377\274" \
+  "\21B\377\205\274\21B\377\1i\12%\377\302\0\0\0\377\2\1\0\1\377\211\14" \
+  "0\377\377\274\21B\377\1a\11\"\377\233\0\0\0\377\1\21\2\6\377\272\274" \
+  "\21B\377\1\35\3\12\377\235\0\0\0\377\1\0\0\0\27\210\0\0\0\0\1\0\0\0N" \
+  "\226\0\0\0\377\1x\13*\377\271\274\21B\377\1\237\16""8\377\241\0\0\0\377" \
+  "\2\1\0\1\377\244\17""9\377\377\274\21B\377\203\274\21B\377\2\231\16""6" \
+  "\377\4\0\2\377\303\0\0\0\377\2\21\2\6\377\252\17<\377\375\274\21B\377" \
+  "\2\263\20\77\377\16\1\5\377\234\0\0\0\377\1\253\17<\377\271\274\21B\377" \
+  "\1\25\2\7\377\235\0\0\0\377\1\0\0\0\21\210\0\0\0\0\1\0\0\0H\226\0\0\0" \
+  "\377\1o\12'\377\271\274\21B\377\1|\13+\377\242\0\0\0\377\1X\10\37\377" \
+  "\377\274\21B\377\202\274\21B\377\2\265\20@\377\36\3\13\377\305\0\0\0" \
+  "\377\2""6\5\23\377\273\21A\377\374\274\21B\377\1m\12&\377\235\0\0\0\377" \
+  "\1\211\14""0\377\271\274\21B\377\1\14\1\4\377\235\0\0\0\377\1\0\0\0\14" \
+  "\210\0\0\0\0\1\0\0\0C\226\0\0\0\377\1f\11$\377\271\274\21B\377\1[\10" \
+  "\40\377\242\0\0\0\377\2\21\2\6\377\267\21@\377\377\274\21B\377\2\274" \
+  "\21B\377T\10\36\377\307\0\0\0\377\1\\\10\40\377\373\274\21B\377\2\266" \
+  "\20@\377\26\2\10\377\235\0\0\0\377\1i\11%\377\271\274\21B\377\1\3\0\1" \
+  "\377\235\0\0\0\377\1\0\0\0\6\210\0\0\0\0\1\0\0\0>\226\0\0\0\377\1^\10" \
+  "!\377\271\274\21B\377\1""9\5\24\377\243\0\0\0\377\1p\12'\377\377\274" \
+  "\21B\377\1\177\13-\377\311\0\0\0\377\1r\12(\377\372\274\21B\377\1b\11" \
+  "\"\377\236\0\0\0\377\1F\6\31\377\270\274\21B\377\1\257\20>\377\236\0" \
+  "\0\0\377\1\0\0\0\1\210\0\0\0\0\1\0\0\0""8\226\0\0\0\377\1U\10\36\377" \
+  "\271\274\21B\377\1\30\2\10\377\243\0\0\0\377\2\31\2\11\377\271\21A\377" \
+  "\375\274\21B\377\2\243\17""9\377\13\1\4\377\311\0\0\0\377\2\4\0\2\377" \
+  "\216\15""2\377\370\274\21B\377\2\253\17<\377\12\1\3\377\236\0\0\0\377" \
+  "\1%\3\15\377\270\274\21B\377\1\235\16""7\377\235\0\0\0\377\1\0\0\0\372" \
+  "\211\0\0\0\0\1\0\0\0(\226\0\0\0\377\1E\6\30\377\270\274\21B\377\2\260" \
+  "\20>\377\1\0\0\377\244\0\0\0\377\1}\13,\377\374\274\21B\377\2\270\21" \
+  "A\377*\4\17\377\313\0\0\0\377\2\24\2\7\377\246\17:\377\367\274\21B\377" \
+  "\1S\7\35\377\237\0\0\0\377\2\4\0\1\377\265\20@\377\267\274\21B\377\1" \
+  "\212\14""0\377\235\0\0\0\377\1\0\0\0\351\211\0\0\0\0\1\0\0\0\24\226\0" \
+  "\0\0\377\1""3\5\22\377\270\274\21B\377\1\220\15""2\377\245\0\0\0\377" \
+  "\2!\3\14\377\272\21A\377\373\274\21B\377\1M\7\33\377\315\0\0\0\377\2" \
+  "\32\2\11\377\253\17<\377\365\274\21B\377\2\223\15""4\377\1\0\1\377\240" \
+  "\0\0\0\377\1\223\15""4\377\267\274\21B\377\1w\13*\377\235\0\0\0\377\1" \
+  "\0\0\0\325\211\0\0\0\0\2\0\0\0\2\0\0\0\374\225\0\0\0\377\1\40\3\13\377" \
+  "\270\274\21B\377\1i\12%\377\246\0\0\0\377\1q\12(\377\372\274\21B\377" \
+  "\1h\11$\377\317\0\0\0\377\2&\3\15\377\263\20\77\377\363\274\21B\377\2" \
+  "\272\21A\377&\3\15\377\241\0\0\0\377\1l\12&\377\267\274\21B\377\1d\11" \
+  "#\377\235\0\0\0\377\1\0\0\0\301\212\0\0\0\0\1\0\0\0\352\225\0\0\0\377" \
+  "\1\15\1\4\377\270\274\21B\377\1B\6\27\377\246\0\0\0\377\2\20\1\6\377" \
+  "\262\20\77\377\370\274\21B\377\2\204\14.\377\1\0\1\377\320\0\0\0\377" \
+  "\2""9\5\24\377\270\21A\377\362\274\21B\377\1o\12'\377\242\0\0\0\377\1" \
+  "D\6\30\377\267\274\21B\377\1J\7\32\377\235\0\0\0\377\1\0\0\0\254\212" \
+  "\0\0\0\0\1\0\0\0\326\225\0\0\0\377\2\1\0\0\377\266\20@\377\267\274\21" \
+  "B\377\1\33\2\12\377\247\0\0\0\377\1`\11\"\377\367\274\21B\377\2\236\16" \
+  "7\377\15\1\4\377\322\0\0\0\377\2""4\5\22\377\266\20@\377\360\274\21B" \
+  "\377\2\234\16""7\377\6\1\2\377\242\0\0\0\377\1\34\3\12\377\267\274\21" \
+  "B\377\1.\4\20\377\235\0\0\0\377\1\0\0\0\230\212\0\0\0\0\1\0\0\0\303\226" \
+  "\0\0\0\377\1\234\16""7\377\266\274\21B\377\2\255\20=\377\1\0\0\377\247" \
+  "\0\0\0\377\2\4\0\2\377\237\16""8\377\365\274\21B\377\2\244\17:\377\23" \
+  "\2\7\377\324\0\0\0\377\2""5\5\23\377\266\20@\377\356\274\21B\377\2\270" \
+  "\21A\377%\3\15\377\243\0\0\0\377\2\1\0\0\377\257\20>\377\266\274\21B" \
+  "\377\1\20\1\6\377\235\0\0\0\377\1\0\0\0\205\212\0\0\0\0\1\0\0\0\244\226" \
+  "\0\0\0\377\1\200\14-\377\266\274\21B\377\1\206\14/\377\251\0\0\0\377" \
+  "\1""3\5\22\377\364\274\21B\377\2\254\20<\377\33\2\11\377\326\0\0\0\377" \
+  "\2=\6\25\377\270\21@\377\355\274\21B\377\1_\11!\377\245\0\0\0\377\1\211" \
+  "\14""0\377\265\274\21B\377\1\261\20>\377\236\0\0\0\377\1\0\0\0g\212\0" \
+  "\0\0\0\1\0\0\0\200\226\0\0\0\377\1b\11\"\377\266\274\21B\377\1^\11!\377" \
+  "\252\0\0\0\377\1~\13,\377\362\274\21B\377\2\265\20\77\377.\4\20\377\330" \
+  "\0\0\0\377\2.\4\20\377\262\20>\377\353\274\21B\377\2\200\14-\377\1\0" \
+  "\0\377\245\0\0\0\377\1^\10!\377\265\274\21B\377\1\223\15""4\377\236\0" \
+  "\0\0\377\1\0\0\0C\212\0\0\0\0\1\0\0\0]\226\0\0\0\377\1G\6\31\377\266" \
+  "\274\21B\377\1""8\5\24\377\252\0\0\0\377\2\14\1\4\377\247\17:\377\360" \
+  "\274\21B\377\2\262\20\77\377+\4\17\377\332\0\0\0\377\2&\3\15\377\255" \
+  "\20=\377\351\274\21B\377\2\236\16""7\377\12\1\3\377\246\0\0\0\377\1." \
+  "\4\20\377\265\274\21B\377\1m\12&\377\236\0\0\0\377\1\0\0\0\37\212\0\0" \
+  "\0\0\1\0\0\0""9\226\0\0\0\377\1)\4\16\377\265\274\21B\377\2\273\21A\377" \
+  "\15\1\5\377\253\0\0\0\377\2""2\5\22\377\273\21B\377\356\274\21B\377\2" \
+  "\262\20\77\377+\4\17\377\334\0\0\0\377\2\"\3\14\377\250\17;\377\347\274" \
+  "\21B\377\2\262\20\77\377#\3\14\377\247\0\0\0\377\2\6\1\2\377\266\20@" \
+  "\377\264\274\21B\377\1F\6\31\377\235\0\0\0\377\2\0\0\0\367\0\0\0\2\212" \
+  "\0\0\0\0\1\0\0\0\25\226\0\0\0\377\2\6\1\2\377\270\21A\377\264\274\21" \
+  "B\377\1\231\16""6\377\255\0\0\0\377\1o\12'\377\355\274\21B\377\2\264" \
+  "\20\77\3771\4\21\377\336\0\0\0\377\2\22\2\6\377\225\15""4\377\345\274" \
+  "\21B\377\2\267\21@\377.\4\20\377\251\0\0\0\377\1\220\15""2\377\264\274" \
+  "\21B\377\1\37\3\13\377\235\0\0\0\377\1\0\0\0\326\214\0\0\0\0\1\0\0\0" \
+  "\360\226\0\0\0\377\1\231\16""6\377\264\274\21B\377\1l\12&\377\255\0\0" \
+  "\0\377\2\4\0\1\377\216\15""2\377\353\274\21B\377\2\255\20=\377%\3\15" \
+  "\377\340\0\0\0\377\2\6\1\2\377|\13+\377\343\274\21B\377\2\273\21A\377" \
+  "@\6\27\377\252\0\0\0\377\1c\11#\377\263\274\21B\377\2\262\20>\377\1\0" \
+  "\1\377\235\0\0\0\377\1\0\0\0\263\214\0\0\0\0\1\0\0\0\306\226\0\0\0\377" \
+  "\1r\12(\377\264\274\21B\377\1\77\6\26\377\256\0\0\0\377\2\21\2\6\377" \
+  "\250\17;\377\351\274\21B\377\2\247\17:\377\35\3\12\377\342\0\0\0\377" \
+  "\3\3\0\1\377f\11$\377\273\21B\377\341\274\21B\377\1V\10\36\377\253\0" \
+  "\0\0\377\1""7\5\23\377\263\274\21B\377\1\215\15""1\377\236\0\0\0\377" \
+  "\1\0\0\0\211\214\0\0\0\0\1\0\0\0\220\226\0\0\0\377\1K\7\32\377\264\274" \
+  "\21B\377\1\22\2\6\377\257\0\0\0\377\2.\4\20\377\270\21@\377\347\274\21" \
+  "B\377\2\241\17""8\377\32\2\11\377\345\0\0\0\377\2""7\5\23\377\257\20" \
+  ">\377\336\274\21B\377\2\273\21B\377K\7\32\377\254\0\0\0\377\2\13\1\4" \
+  "\377\271\21A\377\262\274\21B\377\1]\10!\377\236\0\0\0\377\1\0\0\0T\214" \
+  "\0\0\0\0\1\0\0\0]\226\0\0\0\377\1$\3\15\377\263\274\21B\377\1\243\17" \
+  "9\377\261\0\0\0\377\2""9\5\24\377\272\21A\377\345\274\21B\377\2\206\14" \
+  "/\377\12\1\3\377\347\0\0\0\377\2\35\3\12\377\234\16""7\377\335\274\21" \
+  "B\377\1W\10\37\377\256\0\0\0\377\1\217\15""2\377\262\274\21B\377\1+\4" \
+  "\17\377\236\0\0\0\377\1\0\0\0\40\214\0\0\0\0\1\0\0\0)\226\0\0\0\377\2" \
+  "\1\0\1\377\257\20=\377\262\274\21B\377\1t\12)\377\262\0\0\0\377\1M\7" \
+  "\33\377\344\274\21B\377\2o\12'\377\3\0\1\377\351\0\0\0\377\3\4\0\1\377" \
+  "^\11!\377\273\21A\377\331\274\21B\377\2\270\21@\377D\6\30\377\257\0\0" \
+  "\0\377\1[\10\40\377\261\274\21B\377\2\262\20\77\377\3\0\1\377\235\0\0" \
+  "\0\377\1\0\0\0\354\215\0\0\0\0\2\0\0\0\2\0\0\0\361\226\0\0\0\377\1}\13" \
+  ",\377\262\274\21B\377\1>\6\26\377\263\0\0\0\377\1d\11#\377\341\274\21" \
+  "B\377\3\272\21A\377Z\10\40\377\1\0\0\377\354\0\0\0\377\2""2\5\22\377" \
+  "\251\17;\377\327\274\21B\377\2\262\20>\3771\4\21\377\260\0\0\0\377\1" \
+  "&\3\15\377\261\274\21B\377\1\207\14/\377\236\0\0\0\377\1\0\0\0\270\216" \
+  "\0\0\0\0\1\0\0\0\300\226\0\0\0\377\1M\7\33\377\261\274\21B\377\2\271" \
+  "\21A\377\14\1\4\377\264\0\0\0\377\1^\11!\377\337\274\21B\377\2\252\17" \
+  "<\377,\4\20\377\357\0\0\0\377\2\22\2\6\377\200\14-\377\325\274\21B\377" \
+  "\2\247\17:\377(\4\16\377\261\0\0\0\377\2\2\0\1\377\256\20=\377\260\274" \
+  "\21B\377\1S\7\35\377\236\0\0\0\377\1\0\0\0\205\216\0\0\0\0\1\0\0\0\211" \
+  "\226\0\0\0\377\1\35\3\12\377\261\274\21B\377\1\222\15""3\377\266\0\0" \
+  "\0\377\1e\11#\377\335\274\21B\377\2\223\15""4\377\26\2\10\377\362\0\0" \
+  "\0\377\2""6\5\23\377\246\17:\377\322\274\21B\377\2\200\14-\377\12\1\4" \
+  "\377\263\0\0\0\377\1z\13+\377\257\274\21B\377\2\273\21B\377\24\2\7\377" \
+  "\236\0\0\0\377\1\0\0\0N\216\0\0\0\0\1\0\0\0C\227\0\0\0\377\1\244\17:" \
+  "\377\260\274\21B\377\1_\11!\377\267\0\0\0\377\2P\7\34\377\273\21A\377" \
+  "\331\274\21B\377\3\270\21A\377R\7\35\377\1\0\1\377\364\0\0\0\377\3\15" \
+  "\1\4\377o\12'\377\273\21A\377\316\274\21B\377\3\272\21A\377`\11\"\377" \
+  "\2\0\1\377\264\0\0\0\377\1H\6\31\377\257\274\21B\377\1\227\16""5\377" \
+  "\236\0\0\0\377\2\0\0\0\372\0\0\0\15\216\0\0\0\0\2\0\0\0\10\0\0\0\366" \
+  "\226\0\0\0\377\1g\11$\377\260\274\21B\377\1)\4\16\377\270\0\0\0\377\2" \
+  ";\5\25\377\265\20@\377\327\274\21B\377\2\242\17""9\377(\4\16\377\370" \
+  "\0\0\0\377\2\35\3\12\377\210\14""0\377\314\274\21B\377\2\241\17""8\377" \
+  "'\4\16\377\266\0\0\0\377\2\16\1\5\377\271\21A\377\256\274\21B\377\1Y" \
+  "\10\37\377\236\0\0\0\377\1\0\0\0\303\220\0\0\0\0\1\0\0\0\272\226\0\0" \
+  "\0\377\1-\4\20\377\257\274\21B\377\2\257\20>\377\3\0\1\377\271\0\0\0" \
+  "\377\2""1\4\21\377\255\20=\377\324\274\21B\377\3\273\21B\377u\13)\377" \
+  "\15\1\4\377\260\0\0\0\377\12\1\0\1\377\23\2\7\377)\4\16\377<\5\25\377" \
+  "H\7\31\377T\10\36\377`\11\"\377l\12&\377q\12(\377w\13*\377\203}\13,\377" \
+  "\12y\13*\377q\12(\377n\12'\377a\11\"\377V\10\36\377I\7\32\377=\6\25\377" \
+  "+\4\17\377\25\2\7\377\2\0\1\377\263\0\0\0\377\3\1\0\0\377E\6\30\377\245" \
+  "\17:\377\311\274\21B\377\2{\13+\377\15\1\4\377\270\0\0\0\377\1\216\15" \
+  "2\377\256\274\21B\377\1\36\3\13\377\236\0\0\0\377\1\0\0\0~\220\0\0\0" \
+  "\0\1\0\0\0v\226\0\0\0\377\2\1\0\1\377\252\17<\377\256\274\21B\377\1v" \
+  "\13)\377\273\0\0\0\377\2\17\1\5\377\212\14""0\377\322\274\21B\377\2\237" \
+  "\16""8\377+\4\17\377\254\0\0\0\377\7\11\1\3\377*\4\17\377J\7\32\377i" \
+  "\11%\377\210\14""0\377\244\17:\377\270\21A\377\225\274\21B\377\7\271" \
+  "\21A\377\247\17:\377\213\15""1\377l\12&\377M\7\33\377.\4\20\377\13\1" \
+  "\4\377\257\0\0\0\377\3\3\0\1\377K\7\32\377\250\17;\377\305\274\21B\377" \
+  "\2\233\16""6\377-\4\20\377\272\0\0\0\377\1Q\7\34\377\255\274\21B\377" \
+  "\1\223\15""4\377\237\0\0\0\377\1\0\0\0""9\220\0\0\0\0\1\0\0\0""2\227" \
+  "\0\0\0\377\1p\12'\377\256\274\21B\377\1=\6\25\377\274\0\0\0\377\3\4\0" \
+  "\2\377k\12&\377\273\21B\377\316\274\21B\377\3\270\21A\377f\11$\377\10" \
+  "\1\3\377\251\0\0\0\377\5\40\3\13\377P\7\34\377w\13*\377\234\16""7\377" \
+  "\272\21A\377\241\274\21B\377\6\273\21B\377\240\16""8\377z\13+\377S\10" \
+  "\35\377%\3\15\377\1\0\1\377\254\0\0\0\377\3\12\1\3\377V\10\36\377\251" \
+  "\17;\377\301\274\21B\377\3\262\20>\377Y\10\37\377\4\0\2\377\273\0\0\0" \
+  "\377\2\26\2\10\377\273\21B\377\254\274\21B\377\1N\7\33\377\236\0\0\0" \
+  "\377\2\0\0\0\360\0\0\0\4\220\0\0\0\0\2\0\0\0\2\0\0\0\352\226\0\0\0\377" \
+  "\1)\4\16\377\255\274\21B\377\2\264\20\77\377\7\1\2\377\276\0\0\0\377" \
+  "\2""0\4\21\377\247\17;\377\314\274\21B\377\2\204\14.\377\31\2\11\377" \
+  "\247\0\0\0\377\4\15\1\4\377@\6\27\377t\13)\377\250\17;\377\253\274\21" \
+  "B\377\4\254\20<\377z\13+\377E\6\30\377\17\1\5\377\253\0\0\0\377\3\5\0" \
+  "\2\377J\7\32\377\240\16""8\377\275\274\21B\377\3\266\20@\377h\11$\377" \
+  "\17\1\5\377\276\0\0\0\377\1\227\16""5\377\253\274\21B\377\2\267\21@\377" \
+  "\15\1\5\377\236\0\0\0\377\1\0\0\0\257\222\0\0\0\0\1\0\0\0\225\227\0\0" \
+  "\0\377\1\237\16""8\377\254\274\21B\377\1\201\14-\377\300\0\0\0\377\2" \
+  "\21\2\6\377\203\14.\377\311\274\21B\377\2\237\16""8\377<\5\25\377\246" \
+  "\0\0\0\377\4\32\2\11\377U\10\36\377\214\15""1\377\271\21A\377\261\274" \
+  "\21B\377\4\273\21A\377\222\15""3\377Y\10\37\377\40\3\13\377\252\0\0\0" \
+  "\377\4\1\0\1\3775\5\23\377\205\14/\377\273\21A\377\270\274\21B\377\3" \
+  "\266\20@\377n\12'\377\25\2\7\377\300\0\0\0\377\1]\10!\377\253\274\21" \
+  "B\377\1\202\14.\377\237\0\0\0\377\1\0\0\0X\222\0\0\0\0\1\0\0\0@\227\0" \
+  "\0\0\377\1Y\10\37\377\254\274\21B\377\1F\6\31\377\302\0\0\0\377\2""1" \
+  "\4\21\377\236\16""7\377\305\274\21B\377\3\241\17""9\377\77\6\26\377\1" \
+  "\0\0\377\244\0\0\0\377\3\17\1\5\377X\10\37\377\235\16""7\377\271\274" \
+  "\21B\377\3\237\16""8\377X\10\37\377\22\2\6\377\252\0\0\0\377\3\33\2\11" \
+  "\377f\11$\377\252\17<\377\264\274\21B\377\3\262\20\77\377e\11#\377\22" \
+  "\2\6\377\302\0\0\0\377\2\27\2\10\377\273\21B\377\252\274\21B\377\1""1" \
+  "\4\21\377\236\0\0\0\377\2\0\0\0\364\0\0\0\12\222\0\0\0\0\2\0\0\0\2\0" \
+  "\0\0\345\226\0\0\0\377\2\27\2\10\377\273\21A\377\252\274\21B\377\2\271" \
+  "\21A\377\17\1\5\377\303\0\0\0\377\3\7\1\3\377b\11\"\377\265\20\77\377" \
+  "\301\274\21B\377\3\244\17:\377O\7\34\377\7\1\2\377\244\0\0\0\377\3'\4" \
+  "\16\377t\12)\377\264\20\77\377\275\274\21B\377\4\267\21@\377{\13+\377" \
+  "/\4\21\377\1\0\0\377\251\0\0\0\377\4\4\0\1\377:\5\24\377\202\14.\377" \
+  "\266\20@\377\257\274\21B\377\3\223\15""4\377J\7\32\377\12\1\3\377\305" \
+  "\0\0\0\377\1\217\15""2\377\251\274\21B\377\1\231\16""6\377\237\0\0\0" \
+  "\377\1\0\0\0\253\224\0\0\0\0\1\0\0\0\222\227\0\0\0\377\1\201\14-\377" \
+  "\252\274\21B\377\1\202\14.\377\306\0\0\0\377\3\23\2\7\377o\12'\377\270" \
+  "\21A\377\275\274\21B\377\3\231\16""6\377C\6\30\377\3\0\1\377\243\0\0" \
+  "\0\377\3\6\1\2\377J\7\32\377\227\16""5\377\303\274\21B\377\3\236\16""7" \
+  "\377R\7\35\377\12\1\3\377\252\0\0\0\377\4\11\1\3\377=\6\25\377w\13*\377" \
+  "\256\20=\377\251\274\21B\377\3\237\16""8\377a\11\"\377\40\3\13\377\310" \
+  "\0\0\0\377\1J\7\32\377\251\274\21B\377\1F\6\31\377\237\0\0\0\377\1\0" \
+  "\0\0V\224\0\0\0\0\1\0\0\0=\227\0\0\0\377\1.\4\20\377\252\274\21B\377" \
+  "\1>\6\26\377\310\0\0\0\377\3\33\2\11\377t\13)\377\270\21A\377\270\274" \
+  "\21B\377\3\271\21A\377\177\13-\377/\4\21\377\244\0\0\0\377\3\16\1\5\377" \
+  "d\11#\377\262\20>\377\307\274\21B\377\3\263\20\77\377k\12&\377\24\2\7" \
+  "\377\253\0\0\0\377\5\2\0\1\377'\4\16\377Z\10\40\377\215\15""1\377\267" \
+  "\21@\377\241\274\21B\377\4\267\21@\377\214\15""1\377Z\10\40\377\40\3" \
+  "\13\377\313\0\0\0\377\2\13\1\4\377\265\20@\377\247\274\21B\377\2\252" \
+  "\17<\377\4\0\2\377\236\0\0\0\377\2\0\0\0\364\0\0\0\12\224\0\0\0\0\2\0" \
+  "\0\0\3\0\0\0\345\227\0\0\0\377\1\225\15""4\377\250\274\21B\377\2\260" \
+  "\20>\377\6\1\2\377\312\0\0\0\377\3\26\2\10\377l\12&\377\265\20@\377\264" \
+  "\274\21B\377\3\247\17:\377`\11\"\377\25\2\10\377\244\0\0\0\377\3\12\1" \
+  "\3\377^\11!\377\260\20>\377\313\274\21B\377\3\264\20\77\377g\11$\377" \
+  "\17\1\5\377\255\0\0\0\377\6\4\0\2\377)\4\16\377P\7\34\377y\13*\377\231" \
+  "\16""6\377\267\21@\377\227\274\21B\377\6\273\21B\377\242\17""9\377~\13" \
+  ",\377[\10\40\3774\5\22\377\7\1\3\377\317\0\0\0\377\1\200\14-\377\247" \
+  "\274\21B\377\1X\10\37\377\237\0\0\0\377\1\0\0\0\253\226\0\0\0\0\1\0\0" \
+  "\0\177\227\0\0\0\377\1D\6\30\377\250\274\21B\377\1q\12(\377\315\0\0\0" \
+  "\377\3\15\1\4\377P\7\34\377\231\16""6\377\257\274\21B\377\4\265\20\77" \
+  "\377}\13,\3774\5\22\377\1\0\1\377\244\0\0\0\377\3\12\1\4\377d\11#\377" \
+  "\263\20\77\377\317\274\21B\377\3\265\20\77\377d\11#\377\15\1\4\377\260" \
+  "\0\0\0\377\11\2\0\1\377\33\2\11\3778\5\24\377Q\7\34\377i\11%\377\200" \
+  "\14-\377\224\15""4\377\241\17""9\377\257\20>\377\206\274\21B\377\12\265" \
+  "\20@\377\257\20>\377\247\17:\377\223\15""4\377\203\14.\377s\12(\377[" \
+  "\10\40\377\77\6\26\377$\3\15\377\11\1\3\377\324\0\0\0\377\1""7\5\23\377" \
+  "\246\274\21B\377\2\256\20=\377\12\1\3\377\237\0\0\0\377\1\0\0\0B\226" \
+  "\0\0\0\0\2\0\0\0\31\0\0\0\372\226\0\0\0\377\2\4\0\2\377\246\17:\377\247" \
+  "\274\21B\377\1.\4\20\377\320\0\0\0\377\3&\3\15\377f\11$\377\244\17""9" \
+  "\377\251\274\21B\377\4\253\17<\377r\12(\3779\5\24\377\7\1\2\377\246\0" \
+  "\0\0\377\2@\6\27\377\247\17:\377\323\274\21B\377\3\254\20<\377J\7\32" \
+  "\377\1\0\1\377\377\0\0\0\377\234\0\0\0\377\2\1\0\0\377\240\16""8\377" \
+  "\245\274\21B\377\1V\10\36\377\237\0\0\0\377\1\0\0\0\324\230\0\0\0\0\1" \
+  "\0\0\0\254\227\0\0\0\377\1M\7\33\377\246\274\21B\377\2\241\17""9\377" \
+  "\1\0\0\377\323\0\0\0\377\4%\3\15\377^\11!\377\221\15""3\377\271\21A\377" \
+  "\241\274\21B\377\5\265\20\77\377\211\14""0\377V\10\36\377#\3\14\377\1" \
+  "\0\0\377\247\0\0\0\377\2*\4\17\377\226\16""5\377\327\274\21B\377\2\237" \
+  "\16""8\3775\5\23\377\377\0\0\0\377\234\0\0\0\377\1T\10\36\377\244\274" \
+  "\21B\377\2\254\20<\377\10\1\3\377\237\0\0\0\377\1\0\0\0o\230\0\0\0\0" \
+  "\1\0\0\0C\227\0\0\0\377\2\4\0\1\377\244\17""9\377\245\274\21B\377\1R" \
+  "\7\35\377\327\0\0\0\377\5\12\1\3\3778\5\24\377^\11!\377\202\14.\377\244" \
+  "\17:\377\230\274\21B\377\6\265\20\77\377\227\16""5\377v\13)\377M\7\33" \
+  "\377%\3\15\377\3\0\1\377\251\0\0\0\377\3\6\1\2\377e\11#\377\272\21A\377" \
+  "\331\274\21B\377\3\273\21B\377q\12(\377\12\1\4\377\377\0\0\0\377\232" \
+  "\0\0\0\377\2\16\1\5\377\266\20@\377\243\274\21B\377\1T\10\36\377\237" \
+  "\0\0\0\377\2\0\0\0\364\0\0\0\20\230\0\0\0\0\2\0\0\0\1\0\0\0\330\227\0" \
+  "\0\0\377\1J\7\32\377\244\274\21B\377\2\264\20\77\377\13\1\4\377\334\0" \
+  "\0\0\377\12\12\1\4\377&\3\15\377B\6\27\377]\10!\377t\13)\377\204\14." \
+  "\377\226\16""5\377\247\17;\377\257\20>\377\266\20@\377\205\274\21B\377" \
+  "\12\273\21B\377\256\20=\377\241\17""8\377\223\15""4\377~\13,\377f\11" \
+  "$\377O\7\34\3776\5\23\377\30\2\11\377\1\0\1\377\255\0\0\0\377\2""0\4" \
+  "\21\377\244\17""9\377\335\274\21B\377\2\253\17<\377;\5\25\377\377\0\0" \
+  "\0\377\232\0\0\0\377\1s\12(\377\242\274\21B\377\2\233\16""6\377\2\0\1" \
+  "\377\237\0\0\0\377\1\0\0\0\234\232\0\0\0\0\1\0\0\0t\227\0\0\0\377\2\4" \
+  "\0\2\377\241\17""8\377\243\274\21B\377\1t\12)\377\377\0\0\0\377\242\0" \
+  "\0\0\377\3\3\0\1\377a\11\"\377\272\21A\377\337\274\21B\377\3\273\21B" \
+  "\377m\12&\377\7\1\2\377\377\0\0\0\377\230\0\0\0\377\2$\3\15\377\273\21" \
+  "B\377\241\274\21B\377\1""5\5\23\377\240\0\0\0\377\1\0\0\0""6\232\0\0" \
+  "\0\0\2\0\0\0\13\0\0\0\353\227\0\0\0\377\1""2\5\22\377\243\274\21B\377" \
+  "\1#\3\14\377\377\0\0\0\377\241\0\0\0\377\2!\3\14\377\234\16""7\377\343" \
+  "\274\21B\377\2\244\17""9\377+\4\17\377\377\0\0\0\377\230\0\0\0\377\1" \
+  "\205\14/\377\240\274\21B\377\1\204\14.\377\240\0\0\0\377\1\0\0\0\274" \
+  "\234\0\0\0\0\1\0\0\0\177\230\0\0\0\377\1\207\14/\377\241\274\21B\377" \
+  "\1\220\15""2\377\377\0\0\0\377\241\0\0\0\377\2B\6\27\377\262\20\77\377" \
+  "\345\274\21B\377\2\266\20@\377O\7\34\377\377\0\0\0\377\227\0\0\0\377" \
+  "\1'\4\16\377\237\274\21B\377\2\260\20>\377\23\2\7\377\240\0\0\0\377\1" \
+  "\0\0\0A\234\0\0\0\0\2\0\0\0\17\0\0\0\360\227\0\0\0\377\2\35\3\12\377" \
+  "\270\21A\377\240\274\21B\377\1""5\5\23\377\377\0\0\0\377\237\0\0\0\377" \
+  "\2\4\0\2\377q\12(\377\351\274\21B\377\2\202\14.\377\13\1\4\377\377\0" \
+  "\0\0\377\226\0\0\0\377\1\210\14""0\377\236\274\21B\377\1M\7\33\377\240" \
+  "\0\0\0\377\1\0\0\0\304\236\0\0\0\0\1\0\0\0\210\230\0\0\0\377\1]\10!\377" \
+  "\237\274\21B\377\1\221\15""3\377\377\0\0\0\377\237\0\0\0\377\2\17\1\5" \
+  "\377\216\15""2\377\353\274\21B\377\2\230\16""5\377\27\2\10\377\377\0" \
+  "\0\0\377\225\0\0\0\377\1""1\4\21\377\235\274\21B\377\2\222\15""3\377" \
+  "\1\0\1\377\240\0\0\0\377\1\0\0\0L\236\0\0\0\0\2\0\0\0\26\0\0\0\365\227" \
+  "\0\0\0\377\2\3\0\1\377\230\16""5\377\236\274\21B\377\1""9\5\24\377\377" \
+  "\0\0\0\377\236\0\0\0\377\2\35\3\12\377\245\17:\377\355\274\21B\377\2" \
+  "\257\20=\377+\4\17\377\377\0\0\0\377\225\0\0\0\377\1\206\14/\377\233" \
+  "\274\21B\377\2\265\20\77\377\36\3\13\377\240\0\0\0\377\1\0\0\0\315\240" \
+  "\0\0\0\0\1\0\0\0\226\230\0\0\0\377\2*\4\17\377\273\21A\377\234\274\21" \
+  "B\377\2\234\16""7\377\1\0\0\377\377\0\0\0\377\235\0\0\0\377\2+\4\17\377" \
+  "\257\20=\377\357\274\21B\377\2\264\20\77\3777\5\23\377\377\0\0\0\377" \
+  "\224\0\0\0\377\2\31\2\11\377\266\20@\377\232\274\21B\377\1@\6\27\377" \
+  "\241\0\0\0\377\1\0\0\0[\240\0\0\0\0\2\0\0\0\26\0\0\0\361\230\0\0\0\377" \
+  "\1g\11$\377\234\274\21B\377\1""6\5\23\377\377\0\0\0\377\235\0\0\0\377" \
+  "\2/\4\21\377\262\20\77\377\361\274\21B\377\2\270\21@\377>\6\26\377\377" \
+  "\0\0\0\377\224\0\0\0\377\1a\11\"\377\231\274\21B\377\1n\12'\377\241\0" \
+  "\0\0\377\2\0\0\0\313\0\0\0\2\241\0\0\0\0\1\0\0\0|\230\0\0\0\377\2\3\0" \
+  "\1\377\217\15""2\377\232\274\21B\377\1\200\14-\377\377\0\0\0\377\235" \
+  "\0\0\0\377\2<\5\25\377\270\21@\377\363\274\21B\377\2\273\21B\377O\7\34" \
+  "\377\377\0\0\0\377\223\0\0\0\377\2\12\1\3\377\251\17;\377\227\274\21" \
+  "B\377\2\231\16""6\377\7\1\2\377\241\0\0\0\377\1\0\0\0\77\242\0\0\0\0" \
+  "\2\0\0\0\11\0\0\0\340\230\0\0\0\377\2\22\2\6\377\252\17<\377\230\274" \
+  "\21B\377\2\265\20\77\377\25\2\10\377\377\0\0\0\377\234\0\0\0\377\2:\5" \
+  "\24\377\267\21@\377\365\274\21B\377\2\273\21A\377I\7\32\377\377\0\0\0" \
+  "\377\223\0\0\0\377\2.\4\20\377\272\21A\377\225\274\21B\377\2\247\17;" \
+  "\377\23\2\7\377\241\0\0\0\377\1\0\0\0\257\244\0\0\0\0\1\0\0\0\\\231\0" \
+  "\0\0\377\2""6\5\23\377\273\21A\377\227\274\21B\377\1b\11\"\377\377\0" \
+  "\0\0\377\234\0\0\0\377\2>\6\26\377\272\21A\377\367\274\21B\377\2\273" \
+  "\21B\377K\7\32\377\377\0\0\0\377\223\0\0\0\377\1e\11#\377\224\274\21" \
+  "B\377\2\264\20\77\377%\3\15\377\241\0\0\0\377\2\0\0\0\370\0\0\0#\244" \
+  "\0\0\0\0\2\0\0\0\1\0\0\0\311\231\0\0\0\377\1S\7\35\377\226\274\21B\377" \
+  "\2\224\15""4\377\4\0\1\377\377\0\0\0\377\233\0\0\0\377\2""4\5\22\377" \
+  "\270\21@\377\371\274\21B\377\2\273\21A\377@\6\27\377\377\0\0\0\377\222" \
+  "\0\0\0\377\2\4\0\1\377\223\15""4\377\222\274\21B\377\2\273\21A\377<\5" \
+  "\25\377\242\0\0\0\377\1\0\0\0\216\246\0\0\0\0\2\0\0\0""9\0\0\0\376\231" \
+  "\0\0\0\377\1n\12'\377\224\274\21B\377\2\262\20\77\377\33\2\11\377\377" \
+  "\0\0\0\377\233\0\0\0\377\2#\3\14\377\261\20>\377\373\274\21B\377\2\266" \
+  "\20@\377/\4\21\377\377\0\0\0\377\222\0\0\0\377\2\35\3\12\377\255\20=" \
+  "\377\221\274\21B\377\1T\10\36\377\242\0\0\0\377\2\0\0\0\354\0\0\0\21" \
+  "\247\0\0\0\0\1\0\0\0\247\231\0\0\0\377\2\2\0\1\377\205\14/\377\223\274" \
+  "\21B\377\1J\7\32\377\377\0\0\0\377\233\0\0\0\377\2\33\2\11\377\255\20" \
+  "=\377\375\274\21B\377\2\262\20\77\377#\3\14\377\355\0\0\0\377\6\15\1" \
+  "\4\3774\5\22\377P\7\34\377i\12%\377}\13,\377\207\14/\377\202\212\14""0" \
+  "\377\6\210\14""0\377x\13*\377i\11%\377R\7\35\3771\4\21\377\16\1\5\377" \
+  "\226\0\0\0\377\2!\3\14\377\257\20>\377\216\274\21B\377\2\273\21B\377" \
+  "J\7\32\377\243\0\0\0\377\1\0\0\0k\250\0\0\0\0\2\0\0\0\22\0\0\0\350\231" \
+  "\0\0\0\377\2\15\1\4\377\227\16""5\377\221\274\21B\377\2y\13*\377\1\0" \
+  "\0\377\377\0\0\0\377\232\0\0\0\377\2\15\1\4\377\236\16""7\377\377\274" \
+  "\21B\377\2\251\17;\377\25\2\7\377\350\0\0\0\377\5\15\1\5\377\77\6\26" \
+  "\377q\12(\377\237\16""8\377\273\21B\377\214\274\21B\377\4\273\21A\377" \
+  "\230\16""5\377e\11#\377#\3\14\377\224\0\0\0\377\2""1\4\21\377\267\21" \
+  "@\377\215\274\21B\377\1V\10\36\377\243\0\0\0\377\2\0\0\0\272\0\0\0\1" \
+  "\251\0\0\0\0\1\0\0\0V\232\0\0\0\377\2\12\1\4\377\223\15""4\377\217\274" \
+  "\21B\377\2~\13,\377\2\0\1\377\377\0\0\0\377\232\0\0\0\377\2\1\0\1\377" \
+  "\205\14/\377\377\274\21B\377\202\274\21B\377\2\223\15""4\377\5\0\2\377" \
+  "\344\0\0\0\377\4\5\0\2\377<\5\25\377\202\14.\377\270\21@\377\224\274" \
+  "\21B\377\3\233\16""6\377E\6\30\377\3\0\1\377\222\0\0\0\377\2.\4\20\377" \
+  "\255\20=\377\212\274\21B\377\2\271\21A\377J\7\32\377\243\0\0\0\377\2" \
+  "\0\0\0\363\0\0\0\40\253\0\0\0\0\1\0\0\0\255\232\0\0\0\377\2\16\1\5\377" \
+  "\231\16""6\377\215\274\21B\377\2\221\15""3\377\7\1\3\377\377\0\0\0\377" \
+  "\233\0\0\0\377\1b\11\"\377\377\274\21B\377\204\274\21B\377\1x\13*\377" \
+  "\342\0\0\0\377\3(\4\16\377o\12'\377\257\20>\377\231\274\21B\377\2\241" \
+  "\17""9\377\77\6\26\377\222\0\0\0\377\2\26\2\10\377\210\14""0\377\210" \
+  "\274\21B\377\2\262\20\77\3775\5\23\377\244\0\0\0\377\1\0\0\0s\254\0\0" \
+  "\0\0\2\0\0\0\30\0\0\0\356\232\0\0\0\377\2\14\1\4\377\213\15""1\377\213" \
+  "\274\21B\377\2\203\14.\377\12\1\3\377\377\0\0\0\377\233\0\0\0\377\2<" \
+  "\5\25\377\273\21B\377\377\274\21B\377\205\274\21B\377\1J\7\32\377\336" \
+  "\0\0\0\377\3\1\0\0\3779\5\24\377\217\15""2\377\236\274\21B\377\2\217" \
+  "\15""2\377\37\3\13\377\222\0\0\0\377\3""7\5\23\377\213\15""1\377\273" \
+  "\21A\377\203\274\21B\377\3\272\21A\377\213\15""1\377#\3\14\377\244\0" \
+  "\0\0\377\2\0\0\0\305\0\0\0\2\255\0\0\0\0\1\0\0\0c\233\0\0\0\377\2\4\0" \
+  "\2\377w\13*\377\210\274\21B\377\3\265\20\77\377S\10\35\377\1\0\1\377" \
+  "\377\0\0\0\377\233\0\0\0\377\2\23\2\7\377\255\20=\377\377\274\21B\377" \
+  "\206\274\21B\377\2\265\20\77\377\37\3\13\377\333\0\0\0\377\3\7\1\3\377" \
+  "R\7\35\377\244\17""9\377\241\274\21B\377\3\270\21A\377^\11!\377\1\0\1" \
+  "\377\222\0\0\0\377\5\17\1\5\377-\4\20\3772\5\22\377,\4\20\377\13\1\4" \
+  "\377\245\0\0\0\377\2\0\0\0\371\0\0\0-\256\0\0\0\0\2\0\0\0\1\0\0\0\270" \
+  "\233\0\0\0\377\3\1\0\0\377U\10\36\377\245\17:\377\204\274\21B\377\3\256" \
+  "\20=\377i\12%\377\24\2\7\377\377\0\0\0\377\234\0\0\0\377\2\1\0\1\377" \
+  "\217\15""2\377\377\274\21B\377\210\274\21B\377\2\235\16""7\377\6\1\2" \
+  "\377\330\0\0\0\377\3\1\0\0\377E\6\30\377\247\17:\377\245\274\21B\377" \
+  "\1f\11$\377\274\0\0\0\377\1\0\0\0~\260\0\0\0\0\2\0\0\0\21\0\0\0\340\234" \
+  "\0\0\0\377\2\1\0\0\377\32\2\11\377\2022\5\22\377\2#\3\14\377\4\0\1\377" \
+  "\377\0\0\0\377\236\0\0\0\377\1S\7\35\377\377\274\21B\377\212\274\21B" \
+  "\377\1d\11#\377\327\0\0\0\377\2,\4\20\377\225\15""4\377\250\274\21B\377" \
+  "\1R\7\35\377\272\0\0\0\377\2\0\0\0\263\0\0\0\1\261\0\0\0\0\2\0\0\0=\0" \
+  "\0\0\373\377\0\0\0\377\276\0\0\0\377\2\32\2\11\377\264\20\77\377\377" \
+  "\274\21B\377\212\274\21B\377\2\271\21A\377&\3\15\377\324\0\0\0\377\2" \
+  "\40\3\13\377\212\14""0\377\252\274\21B\377\2\273\21A\3774\5\22\377\270" \
+  "\0\0\0\377\2\0\0\0\345\0\0\0\25\263\0\0\0\0\1\0\0\0{\377\0\0\0\377\275" \
+  "\0\0\0\377\2\1\0\0\377\216\15""2\377\377\274\21B\377\214\274\21B\377" \
+  "\2\234\16""7\377\4\0\1\377\321\0\0\0\377\3\3\0\1\377Y\10\37\377\266\20" \
+  "@\377\254\274\21B\377\2\250\17;\377\12\1\4\377\266\0\0\0\377\2\0\0\0" \
+  "\374\0\0\0\77\264\0\0\0\0\2\0\0\0\2\0\0\0\272\377\0\0\0\377\274\0\0\0" \
+  "\377\1F\6\31\377\377\274\21B\377\216\274\21B\377\1X\10\37\377\320\0\0" \
+  "\0\377\2%\3\15\377\234\16""7\377\257\274\21B\377\1n\12'\377\266\0\0\0" \
+  "\377\1\0\0\0\201\266\0\0\0\0\2\0\0\0\26\0\0\0\346\302\0\0\0\377\3\22" \
+  "\2\6\377%\3\15\377.\4\20\377\2032\5\22\377\3&\3\15\377\26\2\10\377\10" \
+  "\1\3\377\356\0\0\0\377\2\13\1\4\377\253\17<\377\377\274\21B\377\216\274" \
+  "\21B\377\2\263\20\77\377\25\2\10\377\315\0\0\0\377\3\4\0\2\377d\11#\377" \
+  "\271\21A\377\260\274\21B\377\2\273\21A\377)\4\16\377\264\0\0\0\377\2" \
+  "\0\0\0\275\0\0\0\2\267\0\0\0\0\2\0\0\0E\0\0\0\373\274\0\0\0\377\5\40" \
+  "\3\13\377P\7\34\377t\13)\377\231\16""6\377\264\20\77\377\211\274\21B" \
+  "\377\6\256\20=\377\226\16""5\377z\13+\377S\7\35\377+\4\17\377\7\1\2\377" \
+  "\350\0\0\0\377\1g\11$\377\377\274\21B\377\220\274\21B\377\1z\13+\377" \
+  "\314\0\0\0\377\2\33\2\12\377\222\15""3\377\263\274\21B\377\2\223\15""4" \
+  "\377\1\0\1\377\262\0\0\0\377\2\0\0\0\347\0\0\0\35\271\0\0\0\0\1\0\0\0" \
+  "`\270\0\0\0\377\4\1\0\0\377)\4\16\377l\12&\377\246\17:\377\223\274\21" \
+  "B\377\5\270\21A\377\227\16""5\377m\12&\3775\5\23\377\4\0\2\377\343\0" \
+  "\0\0\377\2\32\2\11\377\270\21@\377\377\274\21B\377\220\274\21B\377\2" \
+  "\273\21B\377&\3\15\377\312\0\0\0\377\2B\6\27\377\262\20\77\377\265\274" \
+  "\21B\377\1B\6\27\377\261\0\0\0\377\2\0\0\0\364\0\0\0""1\273\0\0\0\0\1" \
+  "\0\0\0\214\265\0\0\0\377\3\7\1\2\377L\7\33\377\237\16""8\377\232\274" \
+  "\21B\377\4\261\20>\377z\13+\377>\6\26\377\10\1\3\377\340\0\0\0\377\1" \
+  "w\13*\377\377\274\21B\377\222\274\21B\377\1\210\14""0\377\310\0\0\0\377" \
+  "\2\10\1\3\377w\13*\377\267\274\21B\377\2\237\16""8\377\1\0\1\377\257" \
+  "\0\0\0\377\2\0\0\0\375\0\0\0R\274\0\0\0\0\2\0\0\0\2\0\0\0\261\262\0\0" \
+  "\0\377\3\2\0\1\377L\7\33\377\253\17<\377\237\274\21B\377\3\265\20@\377" \
+  "{\13+\377.\4\20\377\335\0\0\0\377\2\40\3\13\377\273\21A\377\377\274\21" \
+  "B\377\223\274\21B\377\1/\4\21\377\306\0\0\0\377\2!\3\14\377\237\16""8" \
+  "\377\271\274\21B\377\1:\5\24\377\257\0\0\0\377\1\0\0\0|\276\0\0\0\0\2" \
+  "\0\0\0\15\0\0\0\321\260\0\0\0\377\2\34\3\12\377\232\16""6\377\244\274" \
+  "\21B\377\3\235\16""7\377P\7\34\377\13\1\4\377\332\0\0\0\377\1y\13*\377" \
+  "\377\274\21B\377\224\274\21B\377\1\213\15""1\377\305\0\0\0\377\2@\6\27" \
+  "\377\262\20>\377\272\274\21B\377\1\220\15""2\377\256\0\0\0\377\2\0\0" \
+  "\0\244\0\0\0\1\277\0\0\0\0\2\0\0\0\37\0\0\0\350\256\0\0\0\377\2,\4\20" \
+  "\377\257\20>\377\247\274\21B\377\3\264\20\77\377q\12(\377\30\2\11\377" \
+  "\327\0\0\0\377\2\34\3\12\377\272\21A\377\377\274\21B\377\225\274\21B" \
+  "\377\1-\4\20\377\302\0\0\0\377\2\1\0\1\377e\11#\377\275\274\21B\377\1" \
+  ",\4\20\377\254\0\0\0\377\2\0\0\0\307\0\0\0\10\301\0\0\0\0\1\0\0\0|\255" \
+  "\0\0\0\377\2)\4\16\377\262\20\77\377\252\274\21B\377\3\270\21A\377s\12" \
+  "(\377\30\2\11\377\325\0\0\0\377\1m\12&\377\377\274\21B\377\226\274\21" \
+  "B\377\1\201\14-\377\301\0\0\0\377\2\17\1\5\377\216\15""2\377\276\274" \
+  "\21B\377\1{\13+\377\254\0\0\0\377\1\0\0\0C\302\0\0\0\0\1\0\0\0E\254\0" \
+  "\0\0\377\2\33\2\12\377\257\20=\377\255\274\21B\377\3\273\21A\377}\13" \
+  ",\377\35\3\12\377\322\0\0\0\377\2\16\1\5\377\265\20\77\377\377\274\21" \
+  "B\377\226\274\21B\377\2\273\21A\377\32\2\11\377\277\0\0\0\377\2\40\3" \
+  "\13\377\242\17""9\377\277\274\21B\377\2\266\20@\377\14\1\4\377\252\0" \
+  "\0\0\377\2\0\0\0\375\0\0\0\15\302\0\0\0\0\2\0\0\0\21\0\0\0\376\252\0" \
+  "\0\0\377\2\5\0\2\377\231\16""6\377\260\274\21B\377\3\270\21A\377k\12" \
+  "&\377\14\1\4\377\320\0\0\0\377\1V\10\36\377\377\274\21B\377\230\274\21" \
+  "B\377\1i\11%\377\276\0\0\0\377\2:\5\24\377\262\20\77\377\301\274\21B" \
+  "\377\1I\7\32\377\252\0\0\0\377\1\0\0\0\326\304\0\0\0\0\1\0\0\0\333\252" \
+  "\0\0\0\377\1h\11$\377\263\274\21B\377\3\254\20<\377H\6\31\377\1\0\0\377" \
+  "\315\0\0\0\377\2\1\0\0\377\242\17""9\377\377\274\21B\377\230\274\21B" \
+  "\377\2\257\20=\377\7\1\2\377\274\0\0\0\377\2L\7\33\377\271\21A\377\302" \
+  "\274\21B\377\1\213\15""1\377\252\0\0\0\377\1\0\0\0\241\304\0\0\0\0\1" \
+  "\0\0\0\246\251\0\0\0\377\2&\3\15\377\273\21A\377\265\274\21B\377\2\231" \
+  "\16""6\377,\4\20\377\314\0\0\0\377\1""1\4\21\377\377\274\21B\377\232" \
+  "\274\21B\377\1C\6\30\377\272\0\0\0\377\2\1\0\1\377k\12&\377\304\274\21" \
+  "B\377\2\273\21B\377\30\2\11\377\251\0\0\0\377\1\0\0\0l\304\0\0\0\0\1" \
+  "\0\0\0r\251\0\0\0\377\1\213\15""1\377\267\274\21B\377\3\273\21A\377o" \
+  "\12'\377\13\1\4\377\312\0\0\0\377\1u\13)\377\377\274\21B\377\232\274" \
+  "\21B\377\1\210\14""0\377\271\0\0\0\377\2\2\0\1\377q\12(\377\306\274\21" \
+  "B\377\1T\10\36\377\251\0\0\0\377\1\0\0\0""6\304\0\0\0\0\1\0\0\0=\250" \
+  "\0\0\0\377\1=\6\25\377\272\274\21B\377\2\253\17<\377<\5\25\377\310\0" \
+  "\0\0\377\2\11\1\3\377\264\20\77\377\377\274\21B\377\232\274\21B\377\2" \
+  "\273\21A\377\25\2\10\377\267\0\0\0\377\2\12\1\3\377\212\14""0\377\307" \
+  "\274\21B\377\1\213\15""1\377\250\0\0\0\377\2\0\0\0\370\0\0\0\7\304\0" \
+  "\0\0\0\2\0\0\0\14\0\0\0\372\246\0\0\0\377\2\1\0\1\377\237\16""8\377\273" \
+  "\274\21B\377\3\273\21B\377s\12(\377\13\1\4\377\306\0\0\0\377\1<\5\25" \
+  "\377\377\274\21B\377\234\274\21B\377\1P\7\34\377\266\0\0\0\377\2\20\1" \
+  "\6\377\225\15""4\377\310\274\21B\377\2\270\21@\377\11\1\3\377\247\0\0" \
+  "\0\377\1\0\0\0\313\306\0\0\0\0\1\0\0\0\305\246\0\0\0\377\1""7\5\23\377" \
+  "\276\274\21B\377\2\253\17<\377<\5\25\377\305\0\0\0\377\1y\13*\377\377" \
+  "\274\21B\377\234\274\21B\377\1\214\15""1\377\265\0\0\0\377\2\21\2\6\377" \
+  "\233\16""6\377\312\274\21B\377\1""5\5\23\377\247\0\0\0\377\1\0\0\0\211" \
+  "\306\0\0\0\0\1\0\0\0\206\246\0\0\0\377\1\201\14-\377\277\274\21B\377" \
+  "\3\273\21B\377o\12'\377\6\1\2\377\302\0\0\0\377\2\4\0\2\377\261\20>\377" \
+  "\377\274\21B\377\234\274\21B\377\2\272\21A\377\16\1\5\377\263\0\0\0\377" \
+  "\2\30\2\11\377\244\17:\377\313\274\21B\377\1k\12&\377\247\0\0\0\377\1" \
+  "\0\0\0J\306\0\0\0\0\1\0\0\0G\245\0\0\0\377\2\30\2\10\377\273\21A\377" \
+  "\301\274\21B\377\2\237\16""8\377\40\3\13\377\301\0\0\0\377\1/\4\21\377" \
+  "\377\274\21B\377\236\274\21B\377\1B\6\27\377\262\0\0\0\377\2\32\2\11" \
+  "\377\246\17:\377\314\274\21B\377\1\237\16""8\377\246\0\0\0\377\2\0\0" \
+  "\0\374\0\0\0\16\306\0\0\0\0\2\0\0\0\14\0\0\0\372\244\0\0\0\377\1^\10" \
+  "!\377\303\274\21B\377\2\261\20>\377>\6\26\377\300\0\0\0\377\1a\11\"\377" \
+  "\377\274\21B\377\236\274\21B\377\1s\12(\377\261\0\0\0\377\2\27\2\10\377" \
+  "\243\17""9\377\316\274\21B\377\1\22\2\6\377\245\0\0\0\377\1\0\0\0\313" \
+  "\310\0\0\0\0\1\0\0\0\307\244\0\0\0\377\1\231\16""6\377\305\274\21B\377" \
+  "\2w\13*\377\7\1\3\377\276\0\0\0\377\1\220\15""2\377\377\274\21B\377\236" \
+  "\274\21B\377\1\242\17""9\377\260\0\0\0\377\2\40\3\13\377\252\17<\377" \
+  "\317\274\21B\377\1:\5\24\377\245\0\0\0\377\1\0\0\0\214\310\0\0\0\0\1" \
+  "\0\0\0\212\243\0\0\0\377\2\23\2\7\377\273\21B\377\306\274\21B\377\2\225" \
+  "\15""4\377\25\2\7\377\274\0\0\0\377\2\7\1\3\377\270\21@\377\377\274\21" \
+  "B\377\237\274\21B\377\1\26\2\10\377\256\0\0\0\377\2\33\2\11\377\247\17" \
+  ";\377\320\274\21B\377\1_\11!\377\245\0\0\0\377\1\0\0\0O\310\0\0\0\0\1" \
+  "\0\0\0C\243\0\0\0\377\1J\7\32\377\310\274\21B\377\2\256\20=\377.\4\20" \
+  "\377\273\0\0\0\377\1,\4\20\377\377\274\21B\377\240\274\21B\377\1\77\6" \
+  "\26\377\255\0\0\0\377\2\35\3\12\377\253\17<\377\321\274\21B\377\1\207" \
+  "\14/\377\244\0\0\0\377\2\0\0\0\371\0\0\0\15\310\0\0\0\0\2\0\0\0\6\0\0" \
+  "\0\362\242\0\0\0\377\1\201\14-\377\311\274\21B\377\2\267\21@\377F\6\31" \
+  "\377\272\0\0\0\377\1S\10\35\377\377\274\21B\377\240\274\21B\377\1e\11" \
+  "#\377\254\0\0\0\377\2\30\2\11\377\247\17:\377\322\274\21B\377\1\255\20" \
+  "=\377\244\0\0\0\377\1\0\0\0\275\312\0\0\0\0\1\0\0\0\256\241\0\0\0\377" \
+  "\2\1\0\0\377\257\20>\377\312\274\21B\377\3\273\21B\377]\10!\377\1\0\0" \
+  "\377\270\0\0\0\377\1w\13*\377\377\274\21B\377\240\274\21B\377\1\212\14" \
+  "0\377\253\0\0\0\377\2\23\2\7\377\242\17""9\377\324\274\21B\377\1\30\2" \
+  "\11\377\243\0\0\0\377\1\0\0\0t\312\0\0\0\0\1\0\0\0e\241\0\0\0\377\1\32" \
+  "\2\11\377\315\274\21B\377\2\200\14-\377\10\1\3\377\267\0\0\0\377\1\233" \
+  "\16""6\377\377\274\21B\377\240\274\21B\377\1\255\20=\377\252\0\0\0\377" \
+  "\2\15\1\5\377\232\16""6\377\325\274\21B\377\1=\6\25\377\243\0\0\0\377" \
+  "\1\0\0\0*\312\0\0\0\0\2\0\0\0\34\0\0\0\376\240\0\0\0\377\1<\5\25\377" \
+  "\316\274\21B\377\2\220\15""2\377\14\1\4\377\265\0\0\0\377\2\2\0\1\377" \
+  "\270\21A\377\377\274\21B\377\241\274\21B\377\1\20\1\6\377\250\0\0\0\377" \
+  "\2\16\1\5\377\233\16""6\377\326\274\21B\377\1[\10\40\377\242\0\0\0\377" \
+  "\1\0\0\0\337\314\0\0\0\0\1\0\0\0\321\240\0\0\0\377\1a\11\"\377\317\274" \
+  "\21B\377\2\236\16""7\377\25\2\10\377\264\0\0\0\377\1\30\2\10\377\377" \
+  "\274\21B\377\242\274\21B\377\1*\4\17\377\247\0\0\0\377\2\7\1\2\377\220" \
+  "\15""2\377\327\274\21B\377\1t\12)\377\242\0\0\0\377\1\0\0\0\225\314\0" \
+  "\0\0\0\1\0\0\0\210\240\0\0\0\377\1\205\14/\377\320\274\21B\377\2\245" \
+  "\17:\377\34\3\12\377\263\0\0\0\377\1""1\4\21\377\377\274\21B\377\242" \
+  "\274\21B\377\1D\6\30\377\246\0\0\0\377\2\4\0\2\377\213\15""1\377\330" \
+  "\274\21B\377\1\216\15""2\377\242\0\0\0\377\1\0\0\0M\314\0\0\0\0\1\0\0" \
+  "\0""5\240\0\0\0\377\1\244\17:\377\321\274\21B\377\2\250\17;\377\37\3" \
+  "\13\377\262\0\0\0\377\1J\7\32\377\377\274\21B\377\242\274\21B\377\1]" \
+  "\10!\377\245\0\0\0\377\2\1\0\1\377z\13+\377\331\274\21B\377\1\250\17" \
+  ";\377\241\0\0\0\377\2\0\0\0\361\0\0\0\7\314\0\0\0\0\2\0\0\0\1\0\0\0\341" \
+  "\236\0\0\0\377\2\2\0\1\377\271\21A\377\322\274\21B\377\2\260\20>\377" \
+  ",\4\20\377\261\0\0\0\377\1\\\10\40\377\377\274\21B\377\242\274\21B\377" \
+  "\1o\12'\377\245\0\0\0\377\1f\11$\377\332\274\21B\377\2\273\21B\377\7" \
+  "\1\2\377\240\0\0\0\377\1\0\0\0\250\316\0\0\0\0\1\0\0\0\221\236\0\0\0" \
+  "\377\1\22\2\6\377\324\274\21B\377\2\262\20\77\377+\4\17\377\260\0\0\0" \
+  "\377\1l\12&\377\377\274\21B\377\242\274\21B\377\1\177\13-\377\244\0\0" \
+  "\0\377\1U\10\36\377\334\274\21B\377\1\37\3\13\377\240\0\0\0\377\1\0\0" \
+  "\0W\316\0\0\0\0\1\0\0\0@\236\0\0\0\377\1&\3\15\377\325\274\21B\377\2" \
+  "\265\20\77\377/\4\21\377\257\0\0\0\377\1{\13+\377\377\274\21B\377\242" \
+  "\274\21B\377\1\216\15""2\377\243\0\0\0\377\2>\6\26\377\273\21A\377\334" \
+  "\274\21B\377\1""7\5\23\377\237\0\0\0\377\2\0\0\0\367\0\0\0\14\316\0\0" \
+  "\0\0\2\0\0\0\3\0\0\0\352\235\0\0\0\377\1:\5\24\377\326\274\21B\377\2" \
+  "\264\20\77\377.\4\20\377\256\0\0\0\377\1\210\14""0\377\377\274\21B\377" \
+  "\242\274\21B\377\1\234\16""7\377\242\0\0\0\377\2)\4\16\377\267\21@\377" \
+  "\335\274\21B\377\1G\6\31\377\237\0\0\0\377\1\0\0\0\264\320\0\0\0\0\1" \
+  "\0\0\0\236\235\0\0\0\377\1M\7\33\377\327\274\21B\377\2\257\20>\377%\3" \
+  "\15\377\255\0\0\0\377\1\217\15""2\377\377\274\21B\377\242\274\21B\377" \
+  "\1\242\17""9\377\241\0\0\0\377\2\25\2\7\377\253\17<\377\336\274\21B\377" \
+  "\1V\10\36\377\237\0\0\0\377\1\0\0\0d\320\0\0\0\0\1\0\0\0B\235\0\0\0\377" \
+  "\1V\10\36\377\330\274\21B\377\2\261\20>\377)\4\16\377\254\0\0\0\377\1" \
+  "\224\15""4\377\377\274\21B\377\242\274\21B\377\1\250\17;\377\240\0\0" \
+  "\0\377\2\5\0\2\377\223\15""4\377\337\274\21B\377\1c\11#\377\236\0\0\0" \
+  "\377\2\0\0\0\366\0\0\0\16\320\0\0\0\0\2\0\0\0\2\0\0\0\344\234\0\0\0\377" \
+  "\1[\10\40\377\331\274\21B\377\2\255\20=\377\37\3\13\377\253\0\0\0\377" \
+  "\1\231\16""6\377\377\274\21B\377\242\274\21B\377\1\255\20=\377\240\0" \
+  "\0\0\377\1o\12'\377\340\274\21B\377\1q\12(\377\236\0\0\0\377\1\0\0\0" \
+  "\255\322\0\0\0\0\1\0\0\0\215\234\0\0\0\377\1a\11\"\377\332\274\21B\377" \
+  "\2\252\17<\377\30\2\10\377\252\0\0\0\377\1\234\16""7\377\377\274\21B" \
+  "\377\242\274\21B\377\1\260\20>\377\237\0\0\0\377\1J\7\32\377\341\274" \
+  "\21B\377\1~\13,\377\236\0\0\0\377\1\0\0\0T\322\0\0\0\0\1\0\0\0""3\234" \
+  "\0\0\0\377\1f\11$\377\333\274\21B\377\2\241\17""9\377\21\2\6\377\251" \
+  "\0\0\0\377\1\227\16""5\377\377\274\21B\377\242\274\21B\377\1\253\17<" \
+  "\377\236\0\0\0\377\2'\4\16\377\267\21@\377\341\274\21B\377\1\214\15""1" \
+  "\377\235\0\0\0\377\2\0\0\0\357\0\0\0\10\323\0\0\0\0\1\0\0\0\330\233\0" \
+  "\0\0\377\1l\12&\377\334\274\21B\377\2\225\15""4\377\11\1\3\377\250\0" \
+  "\0\0\377\1\222\15""3\377\377\274\21B\377\242\274\21B\377\1\246\17:\377" \
+  "\235\0\0\0\377\2\7\1\3\377\240\16""8\377\342\274\21B\377\1\231\16""6" \
+  "\377\235\0\0\0\377\1\0\0\0\236\324\0\0\0\0\1\0\0\0\177\233\0\0\0\377" \
+  "\1p\12'\377\335\274\21B\377\2\201\14-\377\2\0\1\377\247\0\0\0\377\1\216" \
+  "\15""2\377\377\274\21B\377\242\274\21B\377\1\241\17""8\377\235\0\0\0" \
+  "\377\1q\12(\377\343\274\21B\377\1\236\16""7\377\235\0\0\0\377\1\0\0\0" \
+  "E\324\0\0\0\0\2\0\0\0#\0\0\0\376\232\0\0\0\377\1j\12%\377\336\274\21" \
+  "B\377\2y\13*\377\1\0\0\377\246\0\0\0\377\1\205\14/\377\377\274\21B\377" \
+  "\242\274\21B\377\1\231\16""6\377\234\0\0\0\377\1""7\5\23\377\344\274" \
+  "\21B\377\1\237\16""8\377\234\0\0\0\377\2\0\0\0\347\0\0\0\3\325\0\0\0" \
+  "\0\1\0\0\0\312\232\0\0\0\377\1c\11#\377\337\274\21B\377\1T\10\36\377" \
+  "\246\0\0\0\377\1v\13)\377\377\274\21B\377\242\274\21B\377\1\211\14""0" \
+  "\377\233\0\0\0\377\2\16\1\5\377\252\17<\377\344\274\21B\377\1\240\16" \
+  "8\377\234\0\0\0\377\1\0\0\0\220\326\0\0\0\0\1\0\0\0p\232\0\0\0\377\1" \
+  "[\10\40\377\337\274\21B\377\2\273\21A\3773\5\22\377\245\0\0\0\377\1f" \
+  "\11$\377\377\274\21B\377\242\274\21B\377\1z\13+\377\233\0\0\0\377\1{" \
+  "\13+\377\345\274\21B\377\1\241\17""8\377\234\0\0\0\377\1\0\0\0""6\326" \
+  "\0\0\0\0\2\0\0\0\30\0\0\0\374\231\0\0\0\377\1S\7\35\377\340\274\21B\377" \
+  "\2\254\20<\377\24\2\7\377\244\0\0\0\377\1W\10\37\377\377\274\21B\377" \
+  "\242\274\21B\377\1j\12%\377\232\0\0\0\377\1@\6\27\377\346\274\21B\377" \
+  "\1\241\17""9\377\233\0\0\0\377\1\0\0\0\331\330\0\0\0\0\1\0\0\0\273\231" \
+  "\0\0\0\377\1K\7\32\377\341\274\21B\377\2\222\15""3\377\4\0\2\377\243" \
+  "\0\0\0\377\1C\6\30\377\377\274\21B\377\242\274\21B\377\1V\10\36\377\231" \
+  "\0\0\0\377\2\15\1\4\377\254\20<\377\346\274\21B\377\1\242\17""9\377\233" \
+  "\0\0\0\377\1\0\0\0\201\330\0\0\0\0\1\0\0\0c\231\0\0\0\377\1B\6\27\377" \
+  "\342\274\21B\377\1c\11#\377\243\0\0\0\377\1(\4\16\377\377\274\21B\377" \
+  "\242\274\21B\377\1;\5\25\377\231\0\0\0\377\1q\12(\377\347\274\21B\377" \
+  "\1\244\17""9\377\233\0\0\0\377\1\0\0\0*\330\0\0\0\0\2\0\0\0\15\0\0\0" \
+  "\365\230\0\0\0\377\1""1\4\21\377\342\274\21B\377\2\273\21B\3777\5\23" \
+  "\377\242\0\0\0\377\1\16\1\5\377\377\274\21B\377\242\274\21B\377\1\40" \
+  "\3\13\377\230\0\0\0\377\2#\3\14\377\272\21A\377\347\274\21B\377\1\240" \
+  "\16""8\377\232\0\0\0\377\1\0\0\0\311\332\0\0\0\0\1\0\0\0\247\230\0\0" \
+  "\0\377\1\33\2\12\377\343\274\21B\377\2\255\20=\377\17\1\5\377\242\0\0" \
+  "\0\377\1\261\20>\377\377\274\21B\377\240\274\21B\377\2\273\21B\377\10" \
+  "\1\3\377\227\0\0\0\377\2\1\0\1\377\226\16""5\377\350\274\21B\377\1\224" \
+  "\15""4\377\232\0\0\0\377\1\0\0\0n\332\0\0\0\0\1\0\0\0L\230\0\0\0\377" \
+  "\1\7\1\2\377\344\274\21B\377\1w\13*\377\242\0\0\0\377\1\216\15""2\377" \
+  "\377\274\21B\377\240\274\21B\377\1\241\17""8\377\230\0\0\0\377\1I\7\32" \
+  "\377\351\274\21B\377\1\211\14""0\377\231\0\0\0\377\2\0\0\0\372\0\0\0" \
+  "\25\332\0\0\0\0\2\0\0\0\4\0\0\0\350\230\0\0\0\377\1\256\20=\377\344\274" \
+  "\21B\377\1:\5\24\377\241\0\0\0\377\1j\12%\377\377\274\21B\377\240\274" \
+  "\21B\377\1}\13,\377\227\0\0\0\377\2\16\1\5\377\256\20=\377\351\274\21" \
+  "B\377\1}\13,\377\231\0\0\0\377\1\0\0\0\265\334\0\0\0\0\1\0\0\0\222\230" \
+  "\0\0\0\377\1\231\16""6\377\344\274\21B\377\2\251\17;\377\14\1\4\377\240" \
+  "\0\0\0\377\1F\6\31\377\377\274\21B\377\240\274\21B\377\1X\10\37\377\227" \
+  "\0\0\0\377\1i\12%\377\352\274\21B\377\1r\12(\377\231\0\0\0\377\1\0\0" \
+  "\0Z\334\0\0\0\0\1\0\0\0""7\230\0\0\0\377\1\205\14/\377\345\274\21B\377" \
+  "\1q\12(\377\240\0\0\0\377\1!\3\14\377\377\274\21B\377\240\274\21B\377" \
+  "\1""4\5\22\377\226\0\0\0\377\2\35\3\12\377\272\21A\377\352\274\21B\377" \
+  "\1f\11$\377\230\0\0\0\377\2\0\0\0\362\0\0\0\12\335\0\0\0\0\1\0\0\0\330" \
+  "\227\0\0\0\377\1k\12&\377\345\274\21B\377\2\273\21A\377+\4\17\377\237" \
+  "\0\0\0\377\2\1\0\0\377\255\20=\377\377\274\21B\377\236\274\21B\377\2" \
+  "\270\21A\377\11\1\3\377\226\0\0\0\377\1z\13+\377\353\274\21B\377\1[\10" \
+  "\40\377\230\0\0\0\377\1\0\0\0\240\336\0\0\0\0\1\0\0\0~\227\0\0\0\377" \
+  "\1I\7\32\377\346\274\21B\377\2\231\16""6\377\1\0\1\377\237\0\0\0\377" \
+  "\1\177\13-\377\377\274\21B\377\236\274\21B\377\1\221\15""3\377\226\0" \
+  "\0\0\377\2\35\3\12\377\272\21A\377\353\274\21B\377\1O\7\34\377\230\0" \
+  "\0\0\377\1\0\0\0E\336\0\0\0\0\2\0\0\0#\0\0\0\376\226\0\0\0\377\1(\4\16" \
+  "\377\347\274\21B\377\1H\6\31\377\237\0\0\0\377\1P\7\34\377\377\274\21" \
+  "B\377\236\274\21B\377\1a\11\"\377\226\0\0\0\377\1\200\14-\377\354\274" \
+  "\21B\377\1""7\5\23\377\227\0\0\0\377\2\0\0\0\344\0\0\0\2\337\0\0\0\0" \
+  "\1\0\0\0\305\226\0\0\0\377\2\10\1\3\377\273\21A\377\346\274\21B\377\2" \
+  "\253\17<\377\12\1\4\377\236\0\0\0\377\1\35\3\12\377\377\274\21B\377\236" \
+  "\274\21B\377\1/\4\21\377\225\0\0\0\377\2(\4\16\377\273\21B\377\354\274" \
+  "\21B\377\1\36\3\13\377\227\0\0\0\377\1\0\0\0\214\340\0\0\0\0\1\0\0\0" \
+  "p\227\0\0\0\377\1\243\17""9\377\347\274\21B\377\1a\11\"\377\237\0\0\0" \
+  "\377\1\236\16""7\377\377\274\21B\377\234\274\21B\377\2\255\20=\377\2" \
+  "\0\1\377\225\0\0\0\377\1\205\14/\377\354\274\21B\377\2\273\21A\377\6" \
+  "\1\2\377\227\0\0\0\377\1\0\0\0""7\340\0\0\0\0\1\0\0\0=\227\0\0\0\377" \
+  "\1\202\14.\377\347\274\21B\377\2\265\20@\377\27\2\10\377\236\0\0\0\377" \
+  "\1d\11#\377\377\274\21B\377\234\274\21B\377\1w\13*\377\225\0\0\0\377" \
+  "\2(\4\16\377\273\21B\377\354\274\21B\377\1\251\17;\377\227\0\0\0\377" \
+  "\2\0\0\0\374\0\0\0\7\340\0\0\0\0\1\0\0\0\27\227\0\0\0\377\1a\11\"\377" \
+  "\350\274\21B\377\1u\13)\377\236\0\0\0\377\1,\4\20\377\377\274\21B\377" \
+  "\234\274\21B\377\1\77\6\26\377\225\0\0\0\377\1\205\14/\377\355\274\21" \
+  "B\377\1\216\15""2\377\227\0\0\0\377\1\0\0\0\334\342\0\0\0\0\1\0\0\0\357" \
+  "\226\0\0\0\377\1""6\5\23\377\350\274\21B\377\2\273\21A\377\40\3\13\377" \
+  "\235\0\0\0\377\2\1\0\0\377\242\17""9\377\377\274\21B\377\232\274\21B" \
+  "\377\2\260\20>\377\6\1\2\377\224\0\0\0\377\2\40\3\13\377\273\21B\377" \
+  "\355\274\21B\377\1u\13)\377\227\0\0\0\377\1\0\0\0\265\342\0\0\0\0\1\0" \
+  "\0\0\311\226\0\0\0\377\2\12\1\4\377\272\21A\377\350\274\21B\377\1y\13" \
+  "*\377\236\0\0\0\377\1^\11!\377\377\274\21B\377\232\274\21B\377\1q\12" \
+  "(\377\225\0\0\0\377\1s\12(\377\356\274\21B\377\1\\\10\40\377\227\0\0" \
+  "\0\377\1\0\0\0\216\342\0\0\0\0\1\0\0\0\242\227\0\0\0\377\1\226\16""5" \
+  "\377\350\274\21B\377\2\272\21A\377\35\3\12\377\235\0\0\0\377\2\30\2\10" \
+  "\377\273\21B\377\377\274\21B\377\231\274\21B\377\1+\4\17\377\224\0\0" \
+  "\0\377\2\20\1\6\377\266\20@\377\356\274\21B\377\1\77\6\26\377\227\0\0" \
+  "\0\377\1\0\0\0g\342\0\0\0\0\1\0\0\0{\227\0\0\0\377\1i\11%\377\351\274" \
+  "\21B\377\1u\13)\377\236\0\0\0\377\1\216\15""2\377\377\274\21B\377\230" \
+  "\274\21B\377\2\240\16""8\377\1\0\0\377\224\0\0\0\377\1b\11\"\377\357" \
+  "\274\21B\377\1\33\2\11\377\227\0\0\0\377\1\0\0\0@\342\0\0\0\0\1\0\0\0" \
+  "H\227\0\0\0\377\1<\5\25\377\351\274\21B\377\2\270\21A\377\31\2\11\377" \
+  "\235\0\0\0\377\1;\5\25\377\377\274\21B\377\230\274\21B\377\1N\7\33\377" \
+  "\224\0\0\0\377\2\11\1\3\377\257\20>\377\356\274\21B\377\2\260\20>\377" \
+  "\1\0\0\377\226\0\0\0\377\2\0\0\0\375\0\0\0\15\342\0\0\0\0\1\0\0\0\24" \
+  "\227\0\0\0\377\2\17\1\5\377\273\21B\377\351\274\21B\377\1r\12(\377\235" \
+  "\0\0\0\377\2\1\0\1\377\243\17""9\377\377\274\21B\377\226\274\21B\377" \
+  "\2\261\20>\377\11\1\3\377\224\0\0\0\377\1M\7\33\377\357\274\21B\377\1" \
+  "\217\15""2\377\227\0\0\0\377\1\0\0\0\327\344\0\0\0\0\1\0\0\0\336\227" \
+  "\0\0\0\377\1\235\16""7\377\351\274\21B\377\2\267\21@\377\20\1\6\377\235" \
+  "\0\0\0\377\1W\10\37\377\377\274\21B\377\226\274\21B\377\1k\12&\377\225" \
+  "\0\0\0\377\1\235\16""7\377\357\274\21B\377\1f\11$\377\227\0\0\0\377\1" \
+  "\0\0\0\243\344\0\0\0\0\1\0\0\0\252\227\0\0\0\377\1c\11#\377\352\274\21" \
+  "B\377\1[\10\40\377\235\0\0\0\377\2\10\1\3\377\255\20=\377\377\274\21" \
+  "B\377\224\274\21B\377\2\265\20@\377\22\2\6\377\224\0\0\0\377\1,\4\20" \
+  "\377\360\274\21B\377\1""9\5\24\377\227\0\0\0\377\1\0\0\0p\344\0\0\0\0" \
+  "\1\0\0\0w\227\0\0\0\377\1*\4\17\377\352\274\21B\377\2\247\17:\377\3\0" \
+  "\1\377\235\0\0\0\377\1[\10\40\377\377\274\21B\377\224\274\21B\377\1l" \
+  "\12&\377\225\0\0\0\377\1t\12)\377\357\274\21B\377\2\273\21B\377\16\1" \
+  "\5\377\227\0\0\0\377\1\0\0\0<\344\0\0\0\0\1\0\0\0\77\227\0\0\0\377\2" \
+  "\1\0\1\377\252\17<\377\352\274\21B\377\1;\5\25\377\235\0\0\0\377\2\15" \
+  "\1\4\377\262\20>\377\377\274\21B\377\222\274\21B\377\2\270\21A\377\30" \
+  "\2\10\377\224\0\0\0\377\2\10\1\3\377\262\20>\377\357\274\21B\377\1\237" \
+  "\16""8\377\227\0\0\0\377\2\0\0\0\371\0\0\0\12\344\0\0\0\0\2\0\0\0\6\0" \
+  "\0\0\364\227\0\0\0\377\1s\12(\377\352\274\21B\377\1\211\14""0\377\236" \
+  "\0\0\0\377\1V\10\36\377\377\274\21B\377\222\274\21B\377\1h\11$\377\225" \
+  "\0\0\0\377\1H\7\31\377\360\274\21B\377\1i\12%\377\227\0\0\0\377\1\0\0" \
+  "\0\300\346\0\0\0\0\1\0\0\0\273\227\0\0\0\377\1:\5\24\377\352\274\21B" \
+  "\377\2\273\21B\377\35\3\12\377\235\0\0\0\377\2\4\0\2\377\241\17""9\377" \
+  "\377\274\21B\377\220\274\21B\377\2\256\20=\377\14\1\4\377\225\0\0\0\377" \
+  "\1\220\15""2\377\360\274\21B\377\1""4\5\22\377\227\0\0\0\377\1\0\0\0" \
+  "\177\346\0\0\0\0\1\0\0\0{\227\0\0\0\377\2\10\1\3\377\266\20@\377\352" \
+  "\274\21B\377\1f\11$\377\236\0\0\0\377\1\77\6\26\377\377\274\21B\377\220" \
+  "\274\21B\377\1R\7\35\377\225\0\0\0\377\1\35\3\12\377\360\274\21B\377" \
+  "\2\265\20\77\377\6\1\2\377\227\0\0\0\377\1\0\0\0>\346\0\0\0\0\1\0\0\0" \
+  ":\230\0\0\0\377\1\204\14.\377\352\274\21B\377\2\252\17<\377\2\0\1\377" \
+  "\235\0\0\0\377\2\1\0\0\377\220\15""2\377\377\274\21B\377\216\274\21B" \
+  "\377\2\236\16""7\377\4\0\2\377\225\0\0\0\377\1`\11\"\377\360\274\21B" \
+  "\377\1\206\14/\377\227\0\0\0\377\2\0\0\0\365\0\0\0\6\346\0\0\0\0\2\0" \
+  "\0\0\6\0\0\0\363\227\0\0\0\377\1<\5\25\377\353\274\21B\377\1""4\5\22" \
+  "\377\236\0\0\0\377\2\33\2\12\377\266\20@\377\377\274\21B\377\214\274" \
+  "\21B\377\2\273\21A\377(\4\16\377\226\0\0\0\377\1\241\17""8\377\360\274" \
+  "\21B\377\1H\6\31\377\227\0\0\0\377\1\0\0\0\274\350\0\0\0\0\1\0\0\0\253" \
+  "\227\0\0\0\377\2\4\0\2\377\255\20=\377\352\274\21B\377\1v\13)\377\237" \
+  "\0\0\0\377\1^\10!\377\377\274\21B\377\214\274\21B\377\1o\12'\377\226" \
+  "\0\0\0\377\1\40\3\13\377\360\274\21B\377\2\270\21@\377\14\1\4\377\227" \
+  "\0\0\0\377\1\0\0\0n\350\0\0\0\0\1\0\0\0^\230\0\0\0\377\1k\12&\377\352" \
+  "\274\21B\377\2\262\20\77\377\7\1\2\377\236\0\0\0\377\2\7\1\2\377\236" \
+  "\16""7\377\377\274\21B\377\212\274\21B\377\2\251\17;\377\15\1\5\377\226" \
+  "\0\0\0\377\1[\10\40\377\360\274\21B\377\1\213\15""1\377\230\0\0\0\377" \
+  "\1\0\0\0!\350\0\0\0\0\2\0\0\0\22\0\0\0\373\227\0\0\0\377\1%\3\15\377" \
+  "\353\274\21B\377\1=\6\25\377\237\0\0\0\377\2#\3\14\377\270\21@\377\377" \
+  "\274\21B\377\210\274\21B\377\2\273\21B\3771\4\21\377\227\0\0\0\377\1" \
+  "\231\16""6\377\360\274\21B\377\1E\6\30\377\227\0\0\0\377\1\0\0\0\324" \
+  "\352\0\0\0\0\1\0\0\0\302\230\0\0\0\377\1\231\16""6\377\352\274\21B\377" \
+  "\1\177\13-\377\240\0\0\0\377\1X\10\37\377\377\274\21B\377\210\274\21" \
+  "B\377\1k\12&\377\227\0\0\0\377\1\32\2\11\377\360\274\21B\377\2\260\20" \
+  ">\377\7\1\2\377\227\0\0\0\377\1\0\0\0\207\352\0\0\0\0\1\0\0\0w\230\0" \
+  "\0\0\377\1V\10\36\377\352\274\21B\377\2\265\20@\377\11\1\3\377\237\0" \
+  "\0\0\377\2\3\0\1\377\220\15""2\377\377\274\21B\377\206\274\21B\377\2" \
+  "\236\16""7\377\10\1\3\377\227\0\0\0\377\1V\10\36\377\360\274\21B\377" \
+  "\1p\12'\377\230\0\0\0\377\1\0\0\0<\352\0\0\0\0\2\0\0\0\36\0\0\0\376\227" \
+  "\0\0\0\377\2\22\2\6\377\270\21A\377\352\274\21B\377\1""9\5\24\377\240" \
+  "\0\0\0\377\2\20\1\6\377\250\17;\377\377\274\21B\377\204\274\21B\377\2" \
+  "\260\20>\377\33\2\11\377\230\0\0\0\377\1\221\15""3\377\360\274\21B\377" \
+  "\1)\4\16\377\227\0\0\0\377\2\0\0\0\337\0\0\0\1\353\0\0\0\0\1\0\0\0\303" \
+  "\230\0\0\0\377\1u\13)\377\352\274\21B\377\1o\12'\377\241\0\0\0\377\2" \
+  ")\4\16\377\270\21@\377\377\274\21B\377\202\274\21B\377\2\273\21B\377" \
+  "9\5\24\377\230\0\0\0\377\2\15\1\4\377\272\21A\377\357\274\21B\377\1\222" \
+  "\15""3\377\230\0\0\0\377\1\0\0\0\210\354\0\0\0\0\1\0\0\0i\230\0\0\0\377" \
+  "\2\40\3\13\377\273\21B\377\351\274\21B\377\1\244\17:\377\242\0\0\0\377" \
+  "\1T\10\36\377\377\274\21B\377\202\274\21B\377\1e\11#\377\231\0\0\0\377" \
+  "\1:\5\24\377\360\274\21B\377\1A\6\27\377\230\0\0\0\377\1\0\0\0-\354\0" \
+  "\0\0\0\2\0\0\0\24\0\0\0\372\230\0\0\0\377\1\212\14""0\377\352\274\21" \
+  "B\377\1\33\2\12\377\242\0\0\0\377\1l\12&\377\377\274\21B\377\2z\13+\377" \
+  "\1\0\0\377\231\0\0\0\377\1j\12%\377\357\274\21B\377\2\247\17;\377\3\0" \
+  "\1\377\227\0\0\0\377\1\0\0\0\322\356\0\0\0\0\1\0\0\0\267\230\0\0\0\377" \
+  "\1""6\5\23\377\352\274\21B\377\1P\7\34\377\242\0\0\0\377\2\2\0\1\377" \
+  "\204\14.\377\375\274\21B\377\2\223\15""4\377\6\1\2\377\232\0\0\0\377" \
+  "\1\231\16""6\377\357\274\21B\377\1W\10\37\377\230\0\0\0\377\1\0\0\0z" \
+  "\356\0\0\0\0\1\0\0\0Q\230\0\0\0\377\2\1\0\0\377\235\16""7\377\351\274" \
+  "\21B\377\1\205\14/\377\243\0\0\0\377\2\15\1\4\377\231\16""6\377\373\274" \
+  "\21B\377\2\244\17""9\377\24\2\7\377\232\0\0\0\377\2\21\2\6\377\273\21" \
+  "B\377\356\274\21B\377\2\251\17;\377\6\1\2\377\227\0\0\0\377\2\0\0\0\372" \
+  "\0\0\0\30\356\0\0\0\0\2\0\0\0\4\0\0\0\344\230\0\0\0\377\1M\7\33\377\351" \
+  "\274\21B\377\2\262\20\77\377\2\0\1\377\243\0\0\0\377\2\17\1\5\377\235" \
+  "\16""7\377\371\274\21B\377\2\245\17:\377\25\2\7\377\233\0\0\0\377\1\77" \
+  "\6\26\377\357\274\21B\377\1S\7\35\377\230\0\0\0\377\1\0\0\0\253\360\0" \
+  "\0\0\0\1\0\0\0\200\230\0\0\0\377\2\7\1\3\377\255\20=\377\351\274\21B" \
+  "\377\1#\3\14\377\244\0\0\0\377\2\27\2\10\377\247\17:\377\367\274\21B" \
+  "\377\2\257\20=\377!\3\14\377\234\0\0\0\377\1n\12'\377\356\274\21B\377" \
+  "\2\252\17<\377\10\1\3\377\230\0\0\0\377\1\0\0\0D\360\0\0\0\0\2\0\0\0" \
+  "\34\0\0\0\373\230\0\0\0\377\1S\7\35\377\351\274\21B\377\1L\7\33\377\245" \
+  "\0\0\0\377\2\25\2\10\377\241\17""8\377\365\274\21B\377\2\251\17;\377" \
+  "\35\3\12\377\235\0\0\0\377\1\231\16""6\377\356\274\21B\377\1H\6\31\377" \
+  "\230\0\0\0\377\2\0\0\0\331\0\0\0\1\361\0\0\0\0\1\0\0\0\263\230\0\0\0" \
+  "\377\2\6\1\2\377\247\17:\377\350\274\21B\377\1t\13)\377\246\0\0\0\377" \
+  "\2\21\2\6\377\233\16""6\377\363\274\21B\377\2\247\17:\377\34\3\12\377" \
+  "\235\0\0\0\377\2\7\1\2\377\271\21A\377\355\274\21B\377\2\224\15""4\377" \
+  "\1\0\0\377\230\0\0\0\377\1\0\0\0v\362\0\0\0\0\1\0\0\0=\231\0\0\0\377" \
+  "\1K\7\32\377\350\274\21B\377\1\234\16""7\377\247\0\0\0\377\2\22\2\6\377" \
+  "\231\16""6\377\361\274\21B\377\2\244\17""9\377\34\3\12\377\236\0\0\0" \
+  "\377\1&\3\15\377\355\274\21B\377\2\273\21B\377.\4\20\377\230\0\0\0\377" \
+  "\2\0\0\0\357\0\0\0\16\363\0\0\0\0\1\0\0\0\305\230\0\0\0\377\2\4\0\1\377" \
+  "\242\17""9\377\347\274\21B\377\2\273\21A\377\12\1\4\377\247\0\0\0\377" \
+  "\2\10\1\3\377\202\14.\377\357\274\21B\377\2\216\15""2\377\15\1\5\377" \
+  "\237\0\0\0\377\1L\7\33\377\355\274\21B\377\1p\12'\377\231\0\0\0\377\1" \
+  "\0\0\0\212\364\0\0\0\0\1\0\0\0Q\231\0\0\0\377\1E\6\30\377\350\274\21" \
+  "B\377\1""1\4\21\377\250\0\0\0\377\2\4\0\1\377t\12)\377\355\274\21B\377" \
+  "\2\202\14.\377\7\1\3\377\240\0\0\0\377\1p\12'\377\354\274\21B\377\2\247" \
+  "\17:\377\12\1\4\377\230\0\0\0\377\2\0\0\0\371\0\0\0\33\364\0\0\0\0\2" \
+  "\0\0\0\2\0\0\0\326\230\0\0\0\377\2\3\0\1\377\237\16""8\377\347\274\21" \
+  "B\377\1R\7\35\377\252\0\0\0\377\2K\7\32\377\270\21@\377\351\274\21B\377" \
+  "\3\273\21A\377X\10\37\377\1\0\0\377\241\0\0\0\377\1\223\15""4\377\354" \
+  "\274\21B\377\1<\5\25\377\231\0\0\0\377\1\0\0\0\236\366\0\0\0\0\1\0\0" \
+  "\0f\231\0\0\0\377\1@\6\27\377\347\274\21B\377\1l\12&\377\253\0\0\0\377" \
+  "\2,\4\20\377\253\17<\377\347\274\21B\377\2\261\20>\3777\5\23\377\242" \
+  "\0\0\0\377\2\4\0\1\377\266\20@\377\353\274\21B\377\1r\12(\377\231\0\0" \
+  "\0\377\2\0\0\0\375\0\0\0,\366\0\0\0\0\2\0\0\0\3\0\0\0\330\231\0\0\0\377" \
+  "\1{\13+\377\346\274\21B\377\1\210\14""0\377\254\0\0\0\377\2\33\2\11\377" \
+  "\226\16""5\377\345\274\21B\377\2\237\16""8\377#\3\14\377\243\0\0\0\377" \
+  "\1\34\3\12\377\353\274\21B\377\2\241\17""8\377\11\1\3\377\231\0\0\0\377" \
+  "\1\0\0\0\242\370\0\0\0\0\1\0\0\0[\231\0\0\0\377\2\14\1\4\377\244\17:" \
+  "\377\345\274\21B\377\1\242\17""9\377\255\0\0\0\377\3\2\0\1\377X\10\37" \
+  "\377\270\21A\377\341\274\21B\377\3\273\21A\377d\11#\377\5\0\2\377\244" \
+  "\0\0\0\377\1""4\5\22\377\352\274\21B\377\2\265\20@\377\40\3\13\377\231" \
+  "\0\0\0\377\2\0\0\0\372\0\0\0#\370\0\0\0\0\2\0\0\0\2\0\0\0\320\231\0\0" \
+  "\0\377\2,\4\20\377\271\21A\377\344\274\21B\377\2\271\21A\377\4\0\1\377" \
+  "\256\0\0\0\377\2""1\4\21\377\244\17:\377\337\274\21B\377\2\253\17<\377" \
+  ";\5\25\377\246\0\0\0\377\1J\7\32\377\352\274\21B\377\1T\10\36\377\232" \
+  "\0\0\0\377\1\0\0\0\232\372\0\0\0\0\1\0\0\0V\232\0\0\0\377\1]\10!\377" \
+  "\345\274\21B\377\1\33\2\11\377\257\0\0\0\377\3\6\1\2\377^\11!\377\270" \
+  "\21A\377\333\274\21B\377\3\273\21A\377k\12&\377\12\1\4\377\247\0\0\0" \
+  "\377\1a\11\"\377\351\274\21B\377\1z\13+\377\232\0\0\0\377\2\0\0\0\371" \
+  "\0\0\0!\373\0\0\0\0\1\0\0\0\301\231\0\0\0\377\2\3\0\1\377\215\15""1\377" \
+  "\344\274\21B\377\1""3\5\22\377\261\0\0\0\377\2+\4\17\377\234\16""7\377" \
+  "\331\274\21B\377\2\243\17""9\3774\5\22\377\251\0\0\0\377\1w\13*\377\350" \
+  "\274\21B\377\2\237\16""8\377\12\1\3\377\232\0\0\0\377\1\0\0\0\210\374" \
+  "\0\0\0\0\2\0\0\0""1\0\0\0\375\231\0\0\0\377\2\15\1\5\377\244\17""9\377" \
+  "\343\274\21B\377\1B\6\27\377\262\0\0\0\377\3\1\0\1\377E\6\30\377\256" \
+  "\20=\377\325\274\21B\377\3\262\20\77\377R\7\35\377\4\0\1\377\252\0\0" \
+  "\0\377\1\216\15""2\377\347\274\21B\377\2\265\20@\377\"\3\14\377\232\0" \
+  "\0\0\377\2\0\0\0\346\0\0\0\15\375\0\0\0\0\1\0\0\0\237\232\0\0\0\377\2" \
+  "#\3\14\377\265\20@\377\342\274\21B\377\1N\7\33\377\264\0\0\0\377\3\24" \
+  "\2\7\377z\13+\377\273\21A\377\322\274\21B\377\2\202\14.\377\33\2\11\377" \
+  "\254\0\0\0\377\1\243\17""9\377\347\274\21B\377\1R\7\35\377\233\0\0\0" \
+  "\377\1\0\0\0b\376\0\0\0\0\2\0\0\0\27\0\0\0\361\232\0\0\0\377\1N\7\33" \
+  "\377\342\274\21B\377\1Z\10\40\377\266\0\0\0\377\3\35\3\12\377}\13,\377" \
+  "\273\21B\377\316\274\21B\377\2}\13,\377\40\3\13\377\256\0\0\0\377\1\265" \
+  "\20\77\377\346\274\21B\377\1v\13)\377\233\0\0\0\377\2\0\0\0\312\0\0\0" \
+  "\2\377\0\0\0\0\1\0\0\0z\233\0\0\0\377\1j\12%\377\341\274\21B\377\1f\11" \
+  "$\377\270\0\0\0\377\2,\4\20\377\210\14""0\377\313\274\21B\377\2\221\15" \
+  "3\3775\5\23\377\257\0\0\0\377\2\1\0\0\377\273\21B\377\345\274\21B\377" \
+  "\2\216\15""2\377\4\0\1\377\232\0\0\0\377\2\0\0\0\376\0\0\0>\377\0\0\0" \
+  "\0\3\0\0\0\0\0\0\0\4\0\0\0\317\232\0\0\0\377\2\1\0\1\377\202\14.\377" \
+  "\340\274\21B\377\1r\12(\377\272\0\0\0\377\3\40\3\13\377w\13*\377\271" \
+  "\21A\377\305\274\21B\377\3\272\21A\377w\13*\377#\3\14\377\261\0\0\0\377" \
+  "\1\7\1\3\377\345\274\21B\377\2\244\17""9\377\16\1\5\377\233\0\0\0\377" \
+  "\1\0\0\0\230\377\0\0\0\0\203\0\0\0\0\2\0\0\0""6\0\0\0\375\232\0\0\0\377" \
+  "\2\12\1\4\377\234\16""7\377\337\274\21B\377\1}\13,\377\274\0\0\0\377" \
+  "\3\32\2\11\377e\11#\377\255\20=\377\301\274\21B\377\3\261\20>\377l\12" \
+  "&\377\40\3\13\377\263\0\0\0\377\1\17\1\5\377\344\274\21B\377\2\265\20" \
+  "@\377)\4\16\377\233\0\0\0\377\2\0\0\0\345\0\0\0\17\377\0\0\0\0\204\0" \
+  "\0\0\0\1\0\0\0\227\233\0\0\0\377\2\27\2\10\377\252\17<\377\336\274\21" \
+  "B\377\1\200\14-\377\276\0\0\0\377\4\5\0\2\377B\6\27\377\210\14""0\377" \
+  "\272\21A\377\273\274\21B\377\4\273\21B\377\220\15""2\377I\7\32\377\10" \
+  "\1\3\377\265\0\0\0\377\1\27\2\10\377\343\274\21B\377\2\271\21A\3777\5" \
+  "\23\377\234\0\0\0\377\1\0\0\0Z\377\0\0\0\0\205\0\0\0\0\2\0\0\0\22\0\0" \
+  "\0\346\233\0\0\0\377\2\33\2\12\377\253\17<\377\335\274\21B\377\1z\13" \
+  "+\377\301\0\0\0\377\3\23\2\7\377T\10\36\377\230\16""5\377\267\274\21" \
+  "B\377\3\236\16""7\377[\10\40\377\30\2\10\377\270\0\0\0\377\1\36\3\13" \
+  "\377\343\274\21B\377\1I\7\32\377\234\0\0\0\377\2\0\0\0\273\0\0\0\1\377" \
+  "\0\0\0\0\206\0\0\0\0\2\0\0\0D\0\0\0\376\233\0\0\0\377\2'\4\16\377\262" \
+  "\20\77\377\334\274\21B\377\1u\13)\377\304\0\0\0\377\4\17\1\5\377E\6\30" \
+  "\377\204\14.\377\270\21@\377\257\274\21B\377\4\271\21A\377\212\14""0" \
+  "\377R\7\35\377\27\2\10\377\273\0\0\0\377\1%\3\15\377\342\274\21B\377" \
+  "\1e\11#\377\234\0\0\0\377\2\0\0\0\355\0\0\0\32\377\0\0\0\0\210\0\0\0" \
+  "\0\1\0\0\0\227\234\0\0\0\377\2""0\4\21\377\266\20@\377\333\274\21B\377" \
+  "\1p\12'\377\307\0\0\0\377\4\17\1\5\377\77\6\26\377o\12'\377\240\16""8" \
+  "\377\251\274\21B\377\4\244\17:\377t\12)\377C\6\30\377\22\2\6\377\276" \
+  "\0\0\0\377\1#\3\14\377\341\274\21B\377\2w\13*\377\1\0\0\377\234\0\0\0" \
+  "\377\1\0\0\0Z\377\0\0\0\0\211\0\0\0\0\2\0\0\0\13\0\0\0\332\234\0\0\0" \
+  "\377\2\77\6\26\377\271\21A\377\332\274\21B\377\1l\12&\377\313\0\0\0\377" \
+  "\5\22\2\6\377<\5\25\377f\11$\377\217\15""2\377\263\20\77\377\237\274" \
+  "\21B\377\5\266\20@\377\222\15""3\377i\12%\377@\6\27\377\26\2\10\377\302" \
+  "\0\0\0\377\1\35\3\12\377\340\274\21B\377\2x\13*\377\1\0\1\377\234\0\0" \
+  "\0\377\1\0\0\0\252\377\0\0\0\0\213\0\0\0\0\2\0\0\0>\0\0\0\374\234\0\0" \
+  "\0\377\2A\6\27\377\272\21A\377\331\274\21B\377\1f\11$\377\317\0\0\0\377" \
+  "\10\1\0\0\377\30\2\10\3777\5\23\377V\10\36\377r\12(\377\207\14/\377\235" \
+  "\16""7\377\263\20\77\377\221\274\21B\377\10\265\20@\377\237\16""8\377" \
+  "\212\14""0\377t\13)\377Y\10\37\377:\5\24\377\33\2\11\377\2\0\1\377\306" \
+  "\0\0\0\377\1\30\2\10\377\337\274\21B\377\2\204\14.\377\4\0\2\377\234" \
+  "\0\0\0\377\2\0\0\0\347\0\0\0\27\377\0\0\0\0\214\0\0\0\0\1\0\0\0v\235" \
+  "\0\0\0\377\2<\5\25\377\270\21A\377\330\274\21B\377\1X\10\37\377\327\0" \
+  "\0\0\377\7\12\1\3\377\26\2\10\377\"\3\14\377.\4\20\377:\5\24\377\77\6" \
+  "\26\377E\6\30\377\203K\7\32\377\7G\6\31\377\77\6\26\377<\5\25\377/\4" \
+  "\21\377#\3\14\377\27\2\10\377\13\1\4\377\316\0\0\0\377\1\14\1\4\377\336" \
+  "\274\21B\377\2\203\14.\377\4\0\1\377\234\0\0\0\377\2\0\0\0\373\0\0\0" \
+  "=\377\0\0\0\0\215\0\0\0\0\2\0\0\0\1\0\0\0\261\235\0\0\0\377\2B\6\27\377" \
+  "\270\21A\377\327\274\21B\377\1E\6\30\377\377\0\0\0\377\267\0\0\0\377" \
+  "\2\1\0\0\377\270\21A\377\334\274\21B\377\2\210\14""0\377\7\1\3\377\235" \
+  "\0\0\0\377\1\0\0\0|\377\0\0\0\0\217\0\0\0\0\2\0\0\0\27\0\0\0\347\235" \
+  "\0\0\0\377\2""5\5\23\377\264\20\77\377\326\274\21B\377\1""1\4\21\377" \
+  "\377\0\0\0\377\270\0\0\0\377\1\251\17;\377\333\274\21B\377\2\200\14-" \
+  "\377\5\0\2\377\235\0\0\0\377\2\0\0\0\300\0\0\0\3\377\0\0\0\0\220\0\0" \
+  "\0\0\2\0\0\0""8\0\0\0\370\235\0\0\0\377\2%\3\15\377\254\20<\377\325\274" \
+  "\21B\377\1\25\2\7\377\377\0\0\0\377\270\0\0\0\377\1\223\15""4\377\332" \
+  "\274\21B\377\2r\12(\377\1\0\1\377\235\0\0\0\377\2\0\0\0\336\0\0\0\23" \
+  "\377\0\0\0\0\222\0\0\0\0\1\0\0\0h\236\0\0\0\377\2\36\3\13\377\244\17" \
+  "9\377\323\274\21B\377\2\263\20\77\377\1\0\0\377\377\0\0\0\377\270\0\0" \
+  "\0\377\1z\13+\377\331\274\21B\377\2l\12&\377\1\0\1\377\235\0\0\0\377" \
+  "\2\0\0\0\366\0\0\0""0\377\0\0\0\0\224\0\0\0\0\1\0\0\0\234\236\0\0\0\377" \
+  "\2\20\1\6\377\221\15""3\377\322\274\21B\377\1\223\15""4\377\377\0\0\0" \
+  "\377\271\0\0\0\377\1a\11\"\377\327\274\21B\377\2\273\21B\377W\10\37\377" \
+  "\237\0\0\0\377\1\0\0\0]\377\0\0\0\0\225\0\0\0\0\2\0\0\0\12\0\0\0\315" \
+  "\236\0\0\0\377\2\3\0\1\377n\12'\377\321\274\21B\377\1h\11$\377\377\0" \
+  "\0\0\377\271\0\0\0\377\1=\6\25\377\326\274\21B\377\2\265\20@\377;\5\25" \
+  "\377\237\0\0\0\377\1\0\0\0\232\377\0\0\0\0\227\0\0\0\0\2\0\0\0\24\0\0" \
+  "\0\332\236\0\0\0\377\3\1\0\0\377X\10\37\377\272\21A\377\317\274\21B\377" \
+  "\1\77\6\26\377\377\0\0\0\377\271\0\0\0\377\1\27\2\10\377\325\274\21B" \
+  "\377\2\257\20>\3771\4\21\377\237\0\0\0\377\2\0\0\0\257\0\0\0\3\377\0" \
+  "\0\0\0\230\0\0\0\0\2\0\0\0#\0\0\0\351\237\0\0\0\377\2""0\4\21\377\254" \
+  "\20<\377\315\274\21B\377\2\272\21A\377\17\1\5\377\377\0\0\0\377\272\0" \
+  "\0\0\377\1\252\17<\377\323\274\21B\377\2\236\16""7\377\33\2\12\377\237" \
+  "\0\0\0\377\2\0\0\0\307\0\0\0\11\377\0\0\0\0\232\0\0\0\0\2\0\0\0@\0\0" \
+  "\0\370\237\0\0\0\377\2\24\2\7\377\221\15""3\377\314\274\21B\377\1\221" \
+  "\15""3\377\377\0\0\0\377\273\0\0\0\377\1w\13*\377\322\274\21B\377\2\177" \
+  "\13-\377\10\1\3\377\237\0\0\0\377\2\0\0\0\342\0\0\0\33\377\0\0\0\0\234" \
+  "\0\0\0\0\2\0\0\0M\0\0\0\373\237\0\0\0\377\3\3\0\1\377a\11\"\377\272\21" \
+  "A\377\312\274\21B\377\1V\10\36\377\377\0\0\0\377\273\0\0\0\377\1E\6\30" \
+  "\377\320\274\21B\377\3\273\21A\377c\11#\377\2\0\1\377\237\0\0\0\377\2" \
+  "\0\0\0\350\0\0\0#\377\0\0\0\0\236\0\0\0\0\1\0\0\0e\241\0\0\0\377\2'\4" \
+  "\16\377\241\17""8\377\310\274\21B\377\2\267\21@\377\16\1\5\377\377\0" \
+  "\0\0\377\273\0\0\0\377\2\20\1\6\377\271\21A\377\316\274\21B\377\2\252" \
+  "\17<\3772\5\22\377\240\0\0\0\377\2\0\0\0\362\0\0\0""4\377\0\0\0\0\240" \
+  "\0\0\0\0\1\0\0\0}\241\0\0\0\377\3\14\1\4\377t\12)\377\273\21B\377\306" \
+  "\274\21B\377\1}\13,\377\377\0\0\0\377\275\0\0\0\377\1\202\14.\377\315" \
+  "\274\21B\377\2{\13+\377\13\1\4\377\240\0\0\0\377\2\0\0\0\370\0\0\0B\377" \
+  "\0\0\0\0\241\0\0\0\0\2\0\0\0\1\0\0\0\222\242\0\0\0\377\2+\4\17\377\237" \
+  "\16""8\377\304\274\21B\377\2\273\21B\377#\3\14\377\377\0\0\0\377\275" \
+  "\0\0\0\377\1\77\6\26\377\313\274\21B\377\3\264\20\77\377N\7\33\377\1" \
+  "\0\0\377\240\0\0\0\377\2\0\0\0\374\0\0\0Y\377\0\0\0\0\244\0\0\0\0\1\0" \
+  "\0\0\204\242\0\0\0\377\3\11\1\3\377h\11$\377\270\21A\377\302\274\21B" \
+  "\377\1\211\14""0\377\377\0\0\0\377\276\0\0\0\377\2\2\0\1\377\241\17""8" \
+  "\377\311\274\21B\377\2\213\15""1\377\26\2\10\377\241\0\0\0\377\2\0\0" \
+  "\0\372\0\0\0R\377\0\0\0\0\246\0\0\0\0\1\0\0\0\204\243\0\0\0\377\2\32" \
+  "\2\11\377\204\14.\377\300\274\21B\377\2\270\21A\377\40\3\13\377\377\0" \
+  "\0\0\377\277\0\0\0\377\1M\7\33\377\307\274\21B\377\3\265\20\77\377W\10" \
+  "\37\377\2\0\1\377\241\0\0\0\377\2\0\0\0\372\0\0\0R\377\0\0\0\0\247\0" \
+  "\0\0\0\2\0\0\0\1\0\0\0\210\244\0\0\0\377\2>\6\26\377\241\17""8\377\276" \
+  "\274\21B\377\1j\12%\377\377\0\0\0\377\300\0\0\0\377\2\5\0\2\377\241\17" \
+  "8\377\305\274\21B\377\2\204\14.\377\30\2\11\377\242\0\0\0\377\2\0\0\0" \
+  "\370\0\0\0U\377\0\0\0\0\252\0\0\0\0\2\0\0\0i\0\0\0\375\243\0\0\0\377" \
+  "\3\1\0\1\377\77\6\26\377\242\17""9\377\273\274\21B\377\2\231\16""6\377" \
+  "\6\1\2\377\377\0\0\0\377\301\0\0\0\377\1""6\5\23\377\303\274\21B\377" \
+  "\2\244\17:\377:\5\24\377\243\0\0\0\377\2\0\0\0\360\0\0\0>\377\0\0\0\0" \
+  "\254\0\0\0\0\2\0\0\0Q\0\0\0\367\244\0\0\0\377\3\7\1\3\377U\10\36\377" \
+  "\253\17<\377\270\274\21B\377\2\265\20\77\377\40\3\13\377\377\0\0\0\377" \
+  "\303\0\0\0\377\1y\13*\377\300\274\21B\377\3\260\20>\377W\10\37\377\6" \
+  "\1\2\377\243\0\0\0\377\2\0\0\0\344\0\0\0+\377\0\0\0\0\256\0\0\0\0\2\0" \
+  "\0\0B\0\0\0\362\245\0\0\0\377\3\7\1\3\377S\10\35\377\252\17<\377\265" \
+  "\274\21B\377\2\270\21@\3776\5\23\377\377\0\0\0\377\304\0\0\0\377\2\11" \
+  "\1\3\377\240\16""8\377\275\274\21B\377\3\267\21@\377l\12&\377\17\1\5" \
+  "\377\244\0\0\0\377\2\0\0\0\332\0\0\0!\377\0\0\0\0\260\0\0\0\0\2\0\0\0" \
+  "5\0\0\0\353\246\0\0\0\377\3\4\0\2\377E\6\30\377\227\16""5\377\262\274" \
+  "\21B\377\2\267\21@\377=\6\25\377\377\0\0\0\377\306\0\0\0\377\2\35\3\12" \
+  "\377\255\20=\377\272\274\21B\377\3\265\20\77\377j\12%\377\24\2\7\377" \
+  "\245\0\0\0\377\2\0\0\0\317\0\0\0\27\377\0\0\0\0\262\0\0\0\0\2\0\0\0/" \
+  "\0\0\0\345\250\0\0\0\377\3-\4\20\377w\13*\377\265\20\77\377\256\274\21" \
+  "B\377\2\255\20=\377+\4\17\377\377\0\0\0\377\310\0\0\0\377\2$\3\15\377" \
+  "\257\20>\377\267\274\21B\377\3\257\20>\377c\11#\377\20\1\6\377\246\0" \
+  "\0\0\377\2\0\0\0\306\0\0\0\23\377\0\0\0\0\264\0\0\0\0\2\0\0\0\23\0\0" \
+  "\0\275\251\0\0\0\377\4\12\1\4\377J\7\32\377\214\15""1\377\272\21A\377" \
+  "\251\274\21B\377\3\264\20\77\377d\11#\377\16\1\5\377\377\0\0\0\377\312" \
+  "\0\0\0\377\2\21\2\6\377\203\14.\377\264\274\21B\377\3\234\16""7\377E" \
+  "\6\30\377\4\0\2\377\247\0\0\0\377\2\0\0\0\210\0\0\0\4\377\0\0\0\0\266" \
+  "\0\0\0\0\2\0\0\0\4\0\0\0\221\253\0\0\0\377\4\17\1\5\377J\7\32\377\204" \
+  "\14.\377\263\20\77\377\244\274\21B\377\3\257\20=\377a\11\"\377\17\1\5" \
+  "\377\377\0\0\0\377\315\0\0\0\377\3\1\0\1\377I\7\32\377\255\20=\377\257" \
+  "\274\21B\377\4\266\20@\377}\13,\3776\5\23\377\1\0\1\377\247\0\0\0\377" \
+  "\2\0\0\0\371\0\0\0f\377\0\0\0\0\272\0\0\0\0\2\0\0\0f\0\0\0\371\254\0" \
+  "\0\0\377\5\1\0\1\377&\3\15\377X\10\37\377\212\14""0\377\267\21@\377\235" \
+  "\274\21B\377\4\253\17<\377k\12&\377,\4\20\377\1\0\1\377\333\0\0\0\377" \
+  "\15\3\0\1\377\22\2\6\377#\3\14\3775\5\23\377E\6\30\377T\10\36\377d\11" \
+  "#\377o\12'\377z\13+\377\205\14/\377\221\15""3\377\234\16""7\377\247\17" \
+  ";\377\217\257\20>\377\1\247\17;\377\202\243\17""9\377\12\236\16""7\377" \
+  "\221\15""3\377\203\14.\377u\13)\377h\11$\377[\10\40\377M\7\33\377<\5" \
+  "\25\377%\3\15\377\16\1\5\377\314\0\0\0\377\3\15\1\4\377c\11#\377\264" \
+  "\20\77\377\252\274\21B\377\4\273\21A\377\217\15""2\377M\7\33\377\15\1" \
+  "\4\377\251\0\0\0\377\2\0\0\0\347\0\0\0;\377\0\0\0\0\274\0\0\0\0\2\0\0" \
+  "\0;\0\0\0\350\257\0\0\0\377\5\14\1\4\377;\5\25\377a\11\"\377\203\14." \
+  "\377\245\17:\377\225\274\21B\377\5\265\20\77\377\216\15""2\377d\11#\377" \
+  "8\5\24\377\6\1\2\377\327\0\0\0\377\7\15\1\4\377(\4\16\377C\6\30\377^" \
+  "\11!\377z\13+\377\225\15""4\377\255\20=\377\251\274\21B\377\10\263\20" \
+  "\77\377\234\16""7\377\205\14/\377n\12'\377S\7\35\3775\5\23\377\30\2\11" \
+  "\377\1\0\1\377\306\0\0\0\377\3\20\1\6\377[\10\40\377\244\17""9\377\245" \
+  "\274\21B\377\4\271\21A\377\217\15""2\377S\10\35\377\25\2\7\377\253\0" \
+  "\0\0\377\2\0\0\0\312\0\0\0\33\377\0\0\0\0\276\0\0\0\0\2\0\0\0#\0\0\0" \
+  "\317\263\0\0\0\377\10\14\1\4\377.\4\20\377P\7\34\377g\11$\377v\13)\377" \
+  "\204\14.\377\223\15""4\377\241\17""8\377\206\257\20>\377\10\252\17<\377" \
+  "\226\16""5\377\203\14.\377o\12'\377]\10!\377I\7\32\377%\3\15\377\3\0" \
+  "\1\377\325\0\0\0\377\6\14\1\4\377,\4\20\377L\7\33\377n\12'\377\216\15" \
+  "2\377\256\20=\377\267\274\21B\377\6\266\20@\377\232\16""6\377}\13,\377" \
+  "^\11!\377;\5\25\377\30\2\10\377\303\0\0\0\377\4\1\0\1\377.\4\20\377o" \
+  "\12'\377\254\20<\377\237\274\21B\377\4\242\17""9\377u\13)\377@\6\27\377" \
+  "\15\1\4\377\255\0\0\0\377\2\0\0\0\253\0\0\0\15\377\0\0\0\0\300\0\0\0" \
+  "\0\3\0\0\0\4\0\0\0\200\0\0\0\375\377\0\0\0\377\230\0\0\0\377\5\12\1\3" \
+  "\3772\5\22\377]\10!\377\205\14/\377\247\17:\377\303\274\21B\377\5\257" \
+  "\20>\377\214\15""1\377i\11%\377D\6\30\377\30\2\10\377\301\0\0\0\377\6" \
+  "\1\0\1\377$\3\15\377V\10\36\377\200\14-\377\243\17""9\377\273\21B\377" \
+  "\225\274\21B\377\5\261\20>\377\214\15""1\377f\11$\377\77\6\26\377\22" \
+  "\2\6\377\257\0\0\0\377\2\0\0\0\357\0\0\0U\377\0\0\0\0\304\0\0\0\0\2\0" \
+  "\0\0A\0\0\0\344\377\0\0\0\377\223\0\0\0\377\5\32\2\11\377E\6\30\377o" \
+  "\12'\377\232\16""6\377\272\21A\377\314\274\21B\377\5\247\17;\377z\13" \
+  "+\377M\7\33\377\40\3\13\377\1\0\0\377\301\0\0\0\377\11\13\1\4\377-\4" \
+  "\20\377P\7\34\377n\12'\377~\13,\377\216\15""2\377\234\16""7\377\253\17" \
+  "<\377\271\21A\377\204\274\21B\377\12\270\21@\377\257\20>\377\244\17""9" \
+  "\377\220\15""2\377}\13,\377h\11$\377M\7\33\3773\5\22\377\30\2\11\377" \
+  "\1\0\0\377\262\0\0\0\377\2\0\0\0\305\0\0\0\40\377\0\0\0\0\306\0\0\0\0" \
+  "\2\0\0\0\24\0\0\0\262\377\0\0\0\377\216\0\0\0\377\4\22\2\6\377C\6\30" \
+  "\377t\12)\377\245\17:\377\325\274\21B\377\4\255\20=\377y\13*\377@\6\27" \
+  "\377\14\1\4\377\377\0\0\0\377\206\0\0\0\377\3\0\0\0\375\0\0\0\200\0\0" \
+  "\0\4\377\0\0\0\0\310\0\0\0\0\3\0\0\0\2\0\0\0w\0\0\0\370\377\0\0\0\377" \
+  "\210\0\0\0\377\4\4\0\2\3775\5\23\377k\12&\377\234\16""7\377\334\274\21" \
+  "B\377\4\271\21A\377\215\15""1\377V\10\36\377\34\3\12\377\377\0\0\0\377" \
+  "\202\0\0\0\377\2\0\0\0\350\0\0\0L\377\0\0\0\0\314\0\0\0\0\2\0\0\0\"\0" \
+  "\0\0\272\377\0\0\0\377\204\0\0\0\377\4\21\2\6\377K\7\32\377\204\14.\377" \
+  "\266\20@\377\343\274\21B\377\3\244\17:\377d\11#\377\36\3\13\377\374\0" \
+  "\0\0\377\3\0\0\0\375\0\0\0\221\0\0\0\16\377\0\0\0\0\317\0\0\0\0\2\0\0" \
+  "\0U\0\0\0\354\376\0\0\0\377\4\13\1\4\377H\6\31\377\205\14/\377\267\21" \
+  "@\377\350\274\21B\377\4\273\21B\377\223\15""4\377S\7\35\377\17\1\5\377" \
+  "\370\0\0\0\377\2\0\0\0\326\0\0\0;\377\0\0\0\0\322\0\0\0\0\2\0\0\0\27" \
+  "\0\0\0\242\372\0\0\0\377\4\11\1\3\377E\6\30\377\212\14""0\377\272\21" \
+  "A\377\356\274\21B\377\3\270\21A\377}\13,\3772\5\22\377\364\0\0\0\377" \
+  "\3\0\0\0\371\0\0\0\200\0\0\0\10\377\0\0\0\0\325\0\0\0\0\2\0\0\0T\0\0" \
+  "\0\336\366\0\0\0\377\3)\4\16\377p\12'\377\257\20=\377\364\274\21B\377" \
+  "\3\217\15""2\377\77\6\26\377\2\0\1\377\360\0\0\0\377\2\0\0\0\303\0\0" \
+  "\0""4\377\0\0\0\0\330\0\0\0\0\3\0\0\0\5\0\0\0f\0\0\0\352\361\0\0\0\377" \
+  "\3\7\1\2\377K\7\32\377\231\16""6\377\371\274\21B\377\3\246\17:\377R\7" \
+  "\35\377\6\1\2\377\354\0\0\0\377\2\0\0\0\323\0\0\0D\377\0\0\0\0\334\0" \
+  "\0\0\0\3\0\0\0\21\0\0\0\210\0\0\0\370\355\0\0\0\377\3\24\2\7\377d\11" \
+  "#\377\254\20<\377\375\274\21B\377\3\247\17:\377R\7\35\377\6\1\2\377\350" \
+  "\0\0\0\377\3\0\0\0\351\0\0\0f\0\0\0\4\377\0\0\0\0\337\0\0\0\0\3\0\0\0" \
+  ")\0\0\0\243\0\0\0\373\351\0\0\0\377\3\14\1\4\377b\11\"\377\264\20\77" \
+  "\377\377\274\21B\377\202\274\21B\377\2\234\16""7\377)\4\16\377\345\0" \
+  "\0\0\377\3\0\0\0\361\0\0\0\206\0\0\0\24\377\0\0\0\0\343\0\0\0\0\3\0\0" \
+  "\0\35\0\0\0\221\0\0\0\366\345\0\0\0\377\3\12\1\4\377d\11#\377\263\20" \
+  "\77\377\377\274\21B\377\205\274\21B\377\3\273\21B\377w\13*\377\15\1\5" \
+  "\377\341\0\0\0\377\3\0\0\0\345\0\0\0o\0\0\0\14\377\0\0\0\0\347\0\0\0" \
+  "\0\3\0\0\0\36\0\0\0\212\0\0\0\354\341\0\0\0\377\3\1\0\0\377H\7\31\377" \
+  "\247\17;\377\377\274\21B\377\211\274\21B\377\2\244\17:\377,\4\20\377" \
+  "\336\0\0\0\377\3\0\0\0\332\0\0\0q\0\0\0\15\377\0\0\0\0\353\0\0\0\0\3" \
+  "\0\0\0\10\0\0\0_\0\0\0\307\336\0\0\0\377\2$\3\15\377\230\16""5\377\377" \
+  "\274\21B\377\214\274\21B\377\2\272\21A\377X\10\37\377\332\0\0\0\377\4" \
+  "\0\0\0\373\0\0\0\260\0\0\0F\0\0\0\1\377\0\0\0\0\360\0\0\0\0\3\0\0\0\37" \
+  "\0\0\0l\0\0\0\273\331\0\0\0\377\3\4\0\2\377d\11#\377\270\21A\377\377" \
+  "\274\21B\377\217\274\21B\377\2y\13*\377\7\1\2\377\325\0\0\0\377\4\0\0" \
+  "\0\367\0\0\0\251\0\0\0[\0\0\0\21\377\0\0\0\0\366\0\0\0\0\2\0\0\0D\0\0" \
+  "\0\350\326\0\0\0\377\2\30\2\11\377\225\15""4\377\377\274\21B\377\222" \
+  "\274\21B\377\2\200\14-\377\3\0\1\377\323\0\0\0\377\2\0\0\0\321\0\0\0" \
+  "(\377\0\0\0\0\372\0\0\0\0\2\0\0\0\34\0\0\0\303\324\0\0\0\377\2""1\4\21" \
+  "\377\256\20=\377\377\274\21B\377\224\274\21B\377\1r\12(\377\322\0\0\0" \
+  "\377\2\0\0\0\221\0\0\0\10\377\0\0\0\0\374\0\0\0\0\3\0\0\0\4\0\0\0\200" \
+  "\0\0\0\375\321\0\0\0\377\2C\6\30\377\270\21A\377\377\274\21B\377\226" \
+  "\274\21B\377\1G\6\31\377\317\0\0\0\377\2\0\0\0\363\0\0\0\\\377\0\0\0" \
+  "\0\377\0\0\0\0\3\0\0\0\0\0\0\0C\0\0\0\347\317\0\0\0\377\2J\7\32\377\273" \
+  "\21A\377\377\274\21B\377\227\274\21B\377\2\260\20>\377\20\1\6\377\315" \
+  "\0\0\0\377\2\0\0\0\320\0\0\0'\377\0\0\0\0\377\0\0\0\0\203\0\0\0\0\2\0" \
+  "\0\0\27\0\0\0\273\315\0\0\0\377\2<\5\25\377\272\21A\377\377\274\21B\377" \
+  "\231\274\21B\377\1k\12&\377\314\0\0\0\377\2\0\0\0\221\0\0\0\10\377\0" \
+  "\0\0\0\377\0\0\0\0\205\0\0\0\0\3\0\0\0\5\0\0\0\215\0\0\0\376\312\0\0" \
+  "\0\377\2\36\3\13\377\264\20\77\377\377\274\21B\377\232\274\21B\377\2" \
+  "\263\20\77\377\11\1\3\377\311\0\0\0\377\2\0\0\0\364\0\0\0a\377\0\0\0" \
+  "\0\377\0\0\0\0\211\0\0\0\0\2\0\0\0@\0\0\0\343\310\0\0\0\377\2\4\0\1\377" \
+  "\232\16""6\377\377\274\21B\377\234\274\21B\377\1""6\5\23\377\310\0\0" \
+  "\0\377\2\0\0\0\303\0\0\0\37\377\0\0\0\0\377\0\0\0\0\213\0\0\0\0\2\0\0" \
+  "\0\17\0\0\0\247\307\0\0\0\377\1S\7\35\377\377\274\21B\377\235\274\21" \
+  "B\377\1X\10\37\377\306\0\0\0\377\3\0\0\0\374\0\0\0\200\0\0\0\4\377\0" \
+  "\0\0\0\377\0\0\0\0\216\0\0\0\0\2\0\0\0^\0\0\0\364\304\0\0\0\377\2\4\0" \
+  "\1\377\252\17<\377\377\274\21B\377\235\274\21B\377\1f\11$\377\305\0\0" \
+  "\0\377\2\0\0\0\336\0\0\0""8\377\0\0\0\0\377\0\0\0\0\221\0\0\0\0\2\0\0" \
+  "\0(\0\0\0\316\303\0\0\0\377\1:\5\24\377\377\274\21B\377\236\274\21B\377" \
+  "\1a\11\"\377\304\0\0\0\377\2\0\0\0\246\0\0\0\17\377\0\0\0\0\377\0\0\0" \
+  "\0\223\0\0\0\0\3\0\0\0\5\0\0\0\200\0\0\0\375\301\0\0\0\377\1k\12&\377" \
+  "\377\274\21B\377\236\274\21B\377\1L\7\33\377\302\0\0\0\377\2\0\0\0\363" \
+  "\0\0\0^\377\0\0\0\0\377\0\0\0\0\227\0\0\0\0\2\0\0\0O\0\0\0\350\300\0" \
+  "\0\0\377\1\213\15""1\377\377\274\21B\377\236\274\21B\377\1'\4\16\377" \
+  "\301\0\0\0\377\2\0\0\0\317\0\0\0-\377\0\0\0\0\377\0\0\0\0\231\0\0\0\0" \
+  "\2\0\0\0\17\0\0\0\231\277\0\0\0\377\1\225\15""4\377\377\274\21B\377\235" \
+  "\274\21B\377\2\253\17<\377\1\0\1\377\277\0\0\0\377\3\0\0\0\370\0\0\0" \
+  "w\0\0\0\3\377\0\0\0\0\377\0\0\0\0\234\0\0\0\0\2\0\0\0H\0\0\0\343\275" \
+  "\0\0\0\377\1\222\15""3\377\377\274\21B\377\235\274\21B\377\1m\12&\377" \
+  "\277\0\0\0\377\2\0\0\0\312\0\0\0*\377\0\0\0\0\377\0\0\0\0\237\0\0\0\0" \
+  "\2\0\0\0\17\0\0\0\231\274\0\0\0\377\1z\13+\377\377\274\21B\377\235\274" \
+  "\21B\377\1!\3\14\377\275\0\0\0\377\3\0\0\0\370\0\0\0w\0\0\0\4\377\0\0" \
+  "\0\0\377\0\0\0\0\242\0\0\0\0\2\0\0\0J\0\0\0\344\272\0\0\0\377\1J\7\32" \
+  "\377\377\274\21B\377\234\274\21B\377\1\204\14.\377\275\0\0\0\377\2\0" \
+  "\0\0\313\0\0\0+\377\0\0\0\0\377\0\0\0\0\245\0\0\0\0\2\0\0\0\30\0\0\0" \
+  "\257\271\0\0\0\377\2\15\1\4\377\266\20@\377\377\274\21B\377\232\274\21" \
+  "B\377\2\270\21A\377\35\3\12\377\273\0\0\0\377\3\0\0\0\374\0\0\0\210\0" \
+  "\0\0\7\377\0\0\0\0\377\0\0\0\0\250\0\0\0\0\2\0\0\0J\0\0\0\336\270\0\0" \
+  "\0\377\1l\12&\377\377\274\21B\377\232\274\21B\377\1i\11%\377\273\0\0" \
+  "\0\377\2\0\0\0\274\0\0\0&\377\0\0\0\0\377\0\0\0\0\253\0\0\0\0\3\0\0\0" \
+  "\11\0\0\0\200\0\0\0\371\266\0\0\0\377\2\26\2\10\377\264\20\77\377\377" \
+  "\274\21B\377\230\274\21B\377\2\257\20>\377\17\1\5\377\271\0\0\0\377\3" \
+  "\0\0\0\352\0\0\0^\0\0\0\1\377\0\0\0\0\377\0\0\0\0\256\0\0\0\0\2\0\0\0" \
+  "&\0\0\0\275\266\0\0\0\377\1S\7\35\377\377\274\21B\377\230\274\21B\377" \
+  "\1<\5\25\377\270\0\0\0\377\3\0\0\0\376\0\0\0\231\0\0\0\22\377\0\0\0\0" \
+  "\377\0\0\0\0\261\0\0\0\0\3\0\0\0\1\0\0\0^\0\0\0\353\264\0\0\0\377\2\2" \
+  "\0\1\377\227\16""5\377\377\274\21B\377\226\274\21B\377\1r\12(\377\270" \
+  "\0\0\0\377\2\0\0\0\325\0\0\0>\377\0\0\0\0\377\0\0\0\0\265\0\0\0\0\3\0" \
+  "\0\0\22\0\0\0\231\0\0\0\376\263\0\0\0\377\2)\4\16\377\271\21A\377\377" \
+  "\274\21B\377\224\274\21B\377\2\242\17""9\377\12\1\3\377\266\0\0\0\377" \
+  "\3\0\0\0\367\0\0\0w\0\0\0\5\377\0\0\0\0\377\0\0\0\0\270\0\0\0\0\2\0\0" \
+  "\0G\0\0\0\324\263\0\0\0\377\1U\10\36\377\377\274\21B\377\223\274\21B" \
+  "\377\2\270\21A\377)\4\16\377\266\0\0\0\377\2\0\0\0\267\0\0\0*\377\0\0" \
+  "\0\0\377\0\0\0\0\273\0\0\0\0\3\0\0\0\1\0\0\0U\0\0\0\340\262\0\0\0\377" \
+  "\1t\13)\377\377\274\21B\377\221\274\21B\377\2\273\21B\377@\6\27\377\265" \
+  "\0\0\0\377\2\0\0\0\306\0\0\0""8\377\0\0\0\0\377\0\0\0\0\277\0\0\0\0\3" \
+  "\0\0\0\12\0\0\0w\0\0\0\362\260\0\0\0\377\2\6\1\2\377\226\16""5\377\377" \
+  "\274\21B\377\220\274\21B\377\1[\10\40\377\264\0\0\0\377\3\0\0\0\337\0" \
+  "\0\0U\0\0\0\1\377\0\0\0\0\377\0\0\0\0\302\0\0\0\0\3\0\0\0\32\0\0\0\231" \
+  "\0\0\0\374\257\0\0\0\377\2\31\2\11\377\252\17<\377\377\274\21B\377\216" \
+  "\274\21B\377\2y\13*\377\1\0\0\377\262\0\0\0\377\3\0\0\0\361\0\0\0w\0" \
+  "\0\0\12\377\0\0\0\0\377\0\0\0\0\306\0\0\0\0\2\0\0\0*\0\0\0\266\257\0" \
+  "\0\0\377\2!\3\14\377\257\20=\377\377\274\21B\377\214\274\21B\377\2\216" \
+  "\15""2\377\5\0\2\377\261\0\0\0\377\3\0\0\0\374\0\0\0\231\0\0\0\31\377" \
+  "\0\0\0\0\377\0\0\0\0\311\0\0\0\0\3\0\0\0\1\0\0\0T\0\0\0\324\256\0\0\0" \
+  "\377\2#\3\14\377\257\20>\377\377\274\21B\377\212\274\21B\377\2\213\15" \
+  "1\377\7\1\3\377\261\0\0\0\377\2\0\0\0\270\0\0\0""6\377\0\0\0\0\377\0" \
+  "\0\0\0\316\0\0\0\0\2\0\0\0D\0\0\0\313\255\0\0\0\377\2*\4\17\377\264\20" \
+  "\77\377\377\274\21B\377\210\274\21B\377\2\211\14""0\377\7\1\3\377\257" \
+  "\0\0\0\377\3\0\0\0\376\0\0\0\252\0\0\0-\377\0\0\0\0\377\0\0\0\0\321\0" \
+  "\0\0\0\3\0\0\0\1\0\0\0M\0\0\0\315\254\0\0\0\377\2""4\5\22\377\264\20" \
+  "\77\377\377\274\21B\377\206\274\21B\377\2\213\15""1\377\10\1\3\377\256" \
+  "\0\0\0\377\3\0\0\0\376\0\0\0\252\0\0\0.\377\0\0\0\0\377\0\0\0\0\325\0" \
+  "\0\0\0\3\0\0\0\1\0\0\0M\0\0\0\315\253\0\0\0\377\2\40\3\13\377\251\17" \
+  ";\377\377\274\21B\377\204\274\21B\377\2\201\14-\377\4\0\2\377\256\0\0" \
+  "\0\377\2\0\0\0\252\0\0\0/\377\0\0\0\0\377\0\0\0\0\331\0\0\0\0\3\0\0\0" \
+  "\1\0\0\0M\0\0\0\316\252\0\0\0\377\2\37\3\13\377\247\17;\377\377\274\21" \
+  "B\377\202\274\21B\377\2|\13+\377\5\0\2\377\255\0\0\0\377\2\0\0\0\263" \
+  "\0\0\0""8\377\0\0\0\0\377\0\0\0\0\335\0\0\0\0\3\0\0\0\4\0\0\0X\0\0\0" \
+  "\311\251\0\0\0\377\2\27\2\10\377\237\16""8\377\377\274\21B\377\2e\11" \
+  "#\377\1\0\0\377\253\0\0\0\377\3\0\0\0\375\0\0\0\257\0\0\0>\377\0\0\0" \
+  "\0\377\0\0\0\0\342\0\0\0\0\3\0\0\0""0\0\0\0\231\0\0\0\367\247\0\0\0\377" \
+  "\2\12\1\3\377\202\14.\377\374\274\21B\377\2\270\21@\377F\6\31\377\253" \
+  "\0\0\0\377\3\0\0\0\355\0\0\0\200\0\0\0\30\377\0\0\0\0\377\0\0\0\0\346" \
+  "\0\0\0\0\3\0\0\0\27\0\0\0\200\0\0\0\354\246\0\0\0\377\3\1\0\0\377^\11" \
+  "!\377\273\21B\377\371\274\21B\377\2\261\20>\3771\4\21\377\252\0\0\0\377" \
+  "\3\0\0\0\326\0\0\0f\0\0\0\14\377\0\0\0\0\377\0\0\0\0\352\0\0\0\0\3\0" \
+  "\0\0\7\0\0\0^\0\0\0\325\246\0\0\0\377\2I\7\32\377\270\21@\377\367\274" \
+  "\21B\377\2\242\17""9\377$\3\15\377\250\0\0\0\377\4\0\0\0\376\0\0\0\263" \
+  "\0\0\0D\0\0\0\2\377\0\0\0\0\377\0\0\0\0\356\0\0\0\0\3\0\0\0\3\0\0\0T" \
+  "\0\0\0\300\245\0\0\0\377\2+\4\17\377\252\17<\377\365\274\21B\377\2~\13" \
+  ",\377\13\1\4\377\247\0\0\0\377\3\0\0\0\371\0\0\0\250\0\0\0:\377\0\0\0" \
+  "\0\377\0\0\0\0\364\0\0\0\0\3\0\0\0\34\0\0\0w\0\0\0\343\243\0\0\0\377" \
+  "\2\13\1\4\377z\13+\377\362\274\21B\377\2\264\20\77\377E\6\30\377\247" \
+  "\0\0\0\377\3\0\0\0\321\0\0\0f\0\0\0\17\377\0\0\0\0\377\0\0\0\0\370\0" \
+  "\0\0\0\4\0\0\0\11\0\0\0^\0\0\0\303\0\0\0\376\242\0\0\0\377\2E\6\30\377" \
+  "\263\20\77\377\357\274\21B\377\2\234\16""7\377\35\3\12\377\245\0\0\0" \
+  "\377\4\0\0\0\371\0\0\0\254\0\0\0F\0\0\0\2\377\0\0\0\0\377\0\0\0\0\375" \
+  "\0\0\0\0\3\0\0\0\32\0\0\0o\0\0\0\316\241\0\0\0\377\2\40\3\13\377\231" \
+  "\16""6\377\355\274\21B\377\2v\13)\377\12\1\4\377\243\0\0\0\377\4\0\0" \
+  "\0\374\0\0\0\263\0\0\0U\0\0\0\11\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0" \
+  "\203\0\0\0\0\4\0\0\0\1\0\0\0;\0\0\0\234\0\0\0\376\237\0\0\0\377\3\5\0" \
+  "\2\377g\11$\377\272\21A\377\351\274\21B\377\2\250\17;\3777\5\23\377\243" \
+  "\0\0\0\377\3\0\0\0\363\0\0\0\203\0\0\0&\377\0\0\0\0\377\0\0\0\0\377\0" \
+  "\0\0\0\211\0\0\0\0\2\0\0\0b\0\0\0\375\240\0\0\0\377\2!\3\14\377\223\15" \
+  "4\377\346\274\21B\377\3\273\21A\377d\11#\377\7\1\3\377\243\0\0\0\377" \
+  "\2\0\0\0\355\0\0\0""3\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\214\0\0\0\0" \
+  "\2\0\0\0Y\0\0\0\374\240\0\0\0\377\3\1\0\0\377K\7\32\377\262\20>\377\343" \
+  "\274\21B\377\2\241\17""8\377,\4\20\377\244\0\0\0\377\2\0\0\0\355\0\0" \
+  "\0""2\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\216\0\0\0\0\2\0\0\0X\0\0\0" \
+  "\373\241\0\0\0\377\2\30\2\11\377\207\14/\377\340\274\21B\377\3\270\21" \
+  "@\377h\11$\377\13\1\4\377\244\0\0\0\377\2\0\0\0\354\0\0\0""1\377\0\0" \
+  "\0\0\377\0\0\0\0\377\0\0\0\0\220\0\0\0\0\2\0\0\0W\0\0\0\373\242\0\0\0" \
+  "\377\2\77\6\26\377\243\17""9\377\335\274\21B\377\2\202\14.\377\33\2\12" \
+  "\377\245\0\0\0\377\2\0\0\0\353\0\0\0""0\377\0\0\0\0\377\0\0\0\0\377\0" \
+  "\0\0\0\222\0\0\0\0\2\0\0\0b\0\0\0\375\242\0\0\0\377\3\1\0\1\377E\6\30" \
+  "\377\251\17;\377\331\274\21B\377\2\221\15""3\377'\4\16\377\246\0\0\0" \
+  "\377\2\0\0\0\357\0\0\0""5\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\224\0\0" \
+  "\0\0\2\0\0\0F\0\0\0\362\243\0\0\0\377\3\13\1\4\377c\11#\377\265\20\77" \
+  "\377\325\274\21B\377\3\252\17<\377J\7\32\377\2\0\1\377\246\0\0\0\377" \
+  "\2\0\0\0\333\0\0\0#\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\226\0\0\0\0\2" \
+  "\0\0\0""5\0\0\0\351\244\0\0\0\377\3\24\2\7\377r\12(\377\270\21A\377\321" \
+  "\274\21B\377\3\251\17;\377Q\7\34\377\6\1\2\377\247\0\0\0\377\2\0\0\0" \
+  "\315\0\0\0\30\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\230\0\0\0\0\2\0\0\0" \
+  "\"\0\0\0\332\245\0\0\0\377\3\17\1\5\377^\11!\377\257\20=\377\315\274" \
+  "\21B\377\3\241\17""9\377E\6\30\377\4\0\1\377\250\0\0\0\377\2\0\0\0\267" \
+  "\0\0\0\14\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\232\0\0\0\0\2\0\0\0\30" \
+  "\0\0\0\314\246\0\0\0\377\3\15\1\4\377[\10\40\377\254\20<\377\311\274" \
+  "\21B\377\3\250\17;\377P\7\34\377\6\1\2\377\251\0\0\0\377\2\0\0\0\244" \
+  "\0\0\0\6\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\234\0\0\0\0\2\0\0\0\20\0" \
+  "\0\0\276\247\0\0\0\377\3\7\1\2\377M\7\33\377\241\17""8\377\305\274\21" \
+  "B\377\3\216\15""2\377@\6\27\377\4\0\2\377\252\0\0\0\377\2\0\0\0\221\0" \
+  "\0\0\2\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\236\0\0\0\0\2\0\0\0\3\0\0" \
+  "\0\210\251\0\0\0\377\3&\3\15\377k\12&\377\257\20=\377\277\274\21B\377" \
+  "\3\255\20=\377d\11#\377\32\2\11\377\253\0\0\0\377\2\0\0\0\366\0\0\0Y" \
+  "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\242\0\0\0\0\2\0\0\0Z\0\0\0\367\251" \
+  "\0\0\0\377\3\12\1\4\377L\7\33\377\224\15""4\377\273\274\21B\377\3\224" \
+  "\15""4\377J\7\32\377\10\1\3\377\254\0\0\0\377\2\0\0\0\346\0\0\0""8\377" \
+  "\0\0\0\0\377\0\0\0\0\377\0\0\0\0\244\0\0\0\0\2\0\0\0""9\0\0\0\347\253" \
+  "\0\0\0\377\3\40\3\13\377e\11#\377\241\17""9\377\264\274\21B\377\4\273" \
+  "\21A\377\217\15""2\377S\7\35\377\27\2\10\377\256\0\0\0\377\2\0\0\0\311" \
+  "\0\0\0\32\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\246\0\0\0\0\2\0\0\0\33" \
+  "\0\0\0\313\255\0\0\0\377\4!\3\14\377]\10!\377\223\15""4\377\272\21A\377" \
+  "\255\274\21B\377\4\270\21A\377\210\14""0\377L\7\33\377\22\2\6\377\260" \
+  "\0\0\0\377\2\0\0\0\241\0\0\0\10\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\250" \
+  "\0\0\0\0\2\0\0\0\14\0\0\0\243\257\0\0\0\377\4\15\1\5\377\77\6\26\377" \
+  "r\12(\377\237\16""8\377\246\274\21B\377\5\273\21B\377\234\16""7\377j" \
+  "\12%\377:\5\24\377\13\1\4\377\261\0\0\0\377\3\0\0\0\372\0\0\0v\0\0\0" \
+  "\1\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\253\0\0\0\0\2\0\0\0R\0\0\0\357" \
+  "\261\0\0\0\377\5\17\1\5\377;\5\25\377d\11#\377\205\14/\377\247\17:\377" \
+  "\235\274\21B\377\5\253\17<\377\211\14""0\377`\11\"\3777\5\23\377\15\1" \
+  "\5\377\264\0\0\0\377\2\0\0\0\332\0\0\0""2\377\0\0\0\0\377\0\0\0\0\377" \
+  "\0\0\0\0\256\0\0\0\0\2\0\0\0\37\0\0\0\307\265\0\0\0\377\11\15\1\4\377" \
+  ")\4\16\377C\6\30\377^\11!\377x\13*\377\211\14""0\377\233\16""6\377\252" \
+  "\17<\377\272\21A\377\213\274\21B\377\11\263\20\77\377\246\17:\377\230" \
+  "\16""5\377\206\14/\377s\12(\377^\10!\377I\7\32\377,\4\20\377\15\1\5\377" \
+  "\270\0\0\0\377\2\0\0\0\245\0\0\0\15\377\0\0\0\0\377\0\0\0\0\377\0\0\0" \
+  "\0\260\0\0\0\0\3\0\0\0\5\0\0\0\210\0\0\0\376\275\0\0\0\377\1\14\1\4\377" \
+  "\204\15\1\4\377\1\12\1\3\377\303\0\0\0\377\2\0\0\0\364\0\0\0^\377\0\0" \
+  "\0\0\377\0\0\0\0\377\0\0\0\0\264\0\0\0\0\2\0\0\0O\0\0\0\346\377\0\0\0" \
+  "\377\205\0\0\0\377\2\0\0\0\314\0\0\0.\377\0\0\0\0\377\0\0\0\0\377\0\0" \
+  "\0\0\266\0\0\0\0\3\0\0\0\16\0\0\0\221\0\0\0\375\377\0\0\0\377\4\0\0\0" \
+  "\377\0\0\0\364\0\0\0f\0\0\0\1\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\271" \
+  "\0\0\0\0\2\0\0\0=\0\0\0\332\376\0\0\0\377\2\0\0\0\276\0\0\0\"\377\0\0" \
+  "\0\0\377\0\0\0\0\377\0\0\0\0\274\0\0\0\0\3\0\0\0\20\0\0\0\234\0\0\0\376" \
+  "\372\0\0\0\377\3\0\0\0\365\0\0\0v\0\0\0\3\377\0\0\0\0\377\0\0\0\0\377" \
+  "\0\0\0\0\277\0\0\0\0\2\0\0\0""0\0\0\0\304\367\0\0\0\377\3\0\0\0\376\0" \
+  "\0\0\242\0\0\0\30\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\302\0\0\0\0\3\0" \
+  "\0\0\1\0\0\0^\0\0\0\350\364\0\0\0\377\2\0\0\0\321\0\0\0=\377\0\0\0\0" \
+  "\377\0\0\0\0\377\0\0\0\0\306\0\0\0\0\3\0\0\0\23\0\0\0\231\0\0\0\375\360" \
+  "\0\0\0\377\3\0\0\0\363\0\0\0v\0\0\0\6\377\0\0\0\0\377\0\0\0\0\377\0\0" \
+  "\0\0\311\0\0\0\0\3\0\0\0\40\0\0\0\231\0\0\0\374\354\0\0\0\377\3\0\0\0" \
+  "\361\0\0\0w\0\0\0\15\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\315\0\0\0\0" \
+  "\3\0\0\0*\0\0\0\252\0\0\0\376\350\0\0\0\377\3\0\0\0\366\0\0\0\210\0\0" \
+  "\0\24\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\321\0\0\0\0\2\0\0\0=\0\0\0" \
+  "\300\345\0\0\0\377\3\0\0\0\373\0\0\0\242\0\0\0#\377\0\0\0\0\377\0\0\0" \
+  "\0\377\0\0\0\0\325\0\0\0\0\3\0\0\0.\0\0\0\242\0\0\0\372\340\0\0\0\377" \
+  "\3\0\0\0\355\0\0\0\200\0\0\0\27\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\331" \
+  "\0\0\0\0\3\0\0\0\30\0\0\0\200\0\0\0\357\334\0\0\0\377\3\0\0\0\341\0\0" \
+  "\0o\0\0\0\14\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\335\0\0\0\0\3\0\0\0" \
+  "\25\0\0\0y\0\0\0\334\330\0\0\0\377\3\0\0\0\306\0\0\0a\0\0\0\10\377\0" \
+  "\0\0\0\377\0\0\0\0\377\0\0\0\0\342\0\0\0\0\3\0\0\0""3\0\0\0\231\0\0\0" \
+  "\364\322\0\0\0\377\3\0\0\0\342\0\0\0\200\0\0\0$\377\0\0\0\0\377\0\0\0" \
+  "\0\377\0\0\0\0\347\0\0\0\0\4\0\0\0\24\0\0\0q\0\0\0\311\0\0\0\376\314" \
+  "\0\0\0\377\4\0\0\0\371\0\0\0\265\0\0\0[\0\0\0\10\377\0\0\0\0\377\0\0" \
+  "\0\0\377\0\0\0\0\354\0\0\0\0\4\0\0\0\24\0\0\0^\0\0\0\263\0\0\0\373\306" \
+  "\0\0\0\377\4\0\0\0\363\0\0\0\242\0\0\0M\0\0\0\11\377\0\0\0\0\377\0\0" \
+  "\0\0\377\0\0\0\0\362\0\0\0\0\4\0\0\0\40\0\0\0q\0\0\0\272\0\0\0\367\300" \
+  "\0\0\0\377\4\0\0\0\356\0\0\0\251\0\0\0_\0\0\0\21\377\0\0\0\0\377\0\0" \
+  "\0\0\377\0\0\0\0\370\0\0\0\0\4\0\0\0\12\0\0\0L\0\0\0\224\0\0\0\335\271" \
+  "\0\0\0\377\5\0\0\0\375\0\0\0\314\0\0\0\203\0\0\0;\0\0\0\3\377\0\0\0\0" \
+  "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\5\0\0\0\16\0\0\0D\0\0\0\200\0\0" \
+  "\0\263\0\0\0\357\260\0\0\0\377\5\0\0\0\351\0\0\0\252\0\0\0o\0\0\0<\0" \
+  "\0\0\12\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\210\0\0\0\0\6" \
+  "\0\0\0\10\0\0\0:\0\0\0f\0\0\0\217\0\0\0\272\0\0\0\343\245\0\0\0\377\7" \
+  "\0\0\0\374\0\0\0\332\0\0\0\257\0\0\0\206\0\0\0[\0\0\0.\0\0\0\3\377\0" \
+  "\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\222\0\0\0\0\11\0\0\0\17\0" \
+  "\0\0""5\0\0\0R\0\0\0p\0\0\0\217\0\0\0\255\0\0\0\312\0\0\0\341\0\0\0\363" \
+  "\224\0\0\0\377\11\0\0\0\356\0\0\0\334\0\0\0\304\0\0\0\245\0\0\0\207\0" \
+  "\0\0j\0\0\0L\0\0\0-\0\0\0\7\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0" \
+  "\0\0\0\241\0\0\0\0\4\0\0\0\5\0\0\0\27\0\0\0)\0\0\0;\202\0\0\0D\1\0\0" \
+  "\0O\206\0\0\0U\1\0\0\0K\202\0\0\0D\4\0\0\0""7\0\0\0%\0\0\0\23\0\0\0\2" \
+  "\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0" \
+  "\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\220" \
+  "\0\0\0\0")
+
+
diff --git a/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend b/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
new file mode 100644
index 0000000..65dc30f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SPLASH_IMAGES += "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.46.bb b/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.46.bb
new file mode 100644
index 0000000..dd37b8f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.46.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Package that provides access to GPIO and other IO\
+functions on the Broadcom BCM 2835 chip, allowing access to the\
+GPIO pins on the 26 pin IDE plug on the RPi board"
+SECTION = "base"
+HOMEPAGE = "http://www.open.com.au/mikem/bcm2835"
+AUTHOR = "Mike McCauley (mikem@open.com.au)"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+SRC_URI = "http://www.airspayce.com/mikem/bcm2835/bcm2835-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "3a40c01ee7d81fbff80c54fbe1a351b5"
+SRC_URI[sha256sum] = "fc6b0412525e6b7e85aeffec67e2d01a99fb906346620041e6684d59ea5517a7"
+
+inherit autotools
+
+do_compile_append() {
+    # Now compiling the examples provided by the package
+    mkdir -p ${B}/examples
+    for file in `ls ${S}/examples`; do
+        ${CC} ${S}/examples/${file}/${file}.c -o ${B}/examples/${file} -Bstatic -L${B}/src -lbcm2835 -I${S}/src
+    done
+}
+
+do_install_append() {
+    install -d ${D}/${libdir}/${BPN}
+    for file in ${B}/examples/*
+    do
+        install -m 0755 ${file} ${D}/${libdir}/${BPN}
+    done
+}
+
+PACKAGES += "${PN}-tests"
+
+FILES_${PN} = ""
+FILES_${PN}-tests = "${libdir}/${BPN}"
+FILES_${PN}-dbg += "${libdir}/${BPN}/.debug"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch
new file mode 100644
index 0000000..7ea9a3b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch
@@ -0,0 +1,77 @@
+Remove dependencies on LSB functions
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>
+
+diff -ur git.org/pi-blaster.boot.sh git/pi-blaster.boot.sh
+--- git.org/pi-blaster.boot.sh	2014-05-20 14:49:44.378582168 +0100
++++ git/pi-blaster.boot.sh	2014-05-20 14:51:08.330582386 +0100
+@@ -28,12 +28,12 @@
+ [ -r /etc/default/$NAME ] && . /etc/default/$NAME
+ 
+ # Load the VERBOSE setting and other rcS variables
+-. /lib/init/vars.sh
++#. /lib/init/vars.sh
+ 
+ # Define LSB log_* functions.
+ # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+ # and status_of_proc is working.
+-. /lib/lsb/init-functions
++#. /lib/lsb/init-functions
+ 
+ #
+ # Function that starts the daemon/service
+@@ -77,48 +77,23 @@
+ 
+ case "$1" in
+   start)
+-	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
++	[ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
+ 	do_start
+-	case "$?" in
+-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+-	esac
+ 	;;
+   stop)
+-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
++	[ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
+ 	do_stop
+-	case "$?" in
+-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+-	esac
+-	;;
+-  status)
+-	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ 	;;
+   restart|force-reload)
+ 	#
+ 	# If the "reload" option is implemented then remove the
+ 	# 'force-reload' alias
+ 	#
+-	log_daemon_msg "Restarting $DESC" "$NAME"
+ 	do_stop
+-	case "$?" in
+-	  0|1)
+-		do_start
+-		case "$?" in
+-			0) log_end_msg 0 ;;
+-			1) log_end_msg 1 ;; # Old process is still running
+-			*) log_end_msg 1 ;; # Failed to start
+-		esac
+-		;;
+-	  *)
+-		# Failed to stop
+-		log_end_msg 1
+-		;;
+-	esac
++	do_start
+ 	;;
+   *)
+-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
++	echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
+ 	exit 3
+ 	;;
+ esac
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc
new file mode 100644
index 0000000..a3beccc
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "This project enables PWM on the GPIO pins you request of a Raspberry Pi."
+HOMEPAGE = "https://github.com/sarfata/pi-blaster/"
+SECTION = "devel/libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.md;beginline=157;endline=170;md5=f20832f31126609af5a7bf2340014540"
+
+SRC_URI = "git://github.com/sarfata/pi-blaster \
+           file://remove-initscript-lsb-dependency.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit update-rc.d autotools
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME_${PN} = "${PN}.boot.sh"
+INITSCRIPT_PARAMS_${PN} = "defaults 15 85"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
new file mode 100644
index 0000000..263852b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
@@ -0,0 +1,3 @@
+require pi-blaster.inc
+
+SRCREV = "ec5e1b4c6191d8f9a538497dbbb86f9cf0de7016"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch b/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
new file mode 100644
index 0000000..4a93a1c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
@@ -0,0 +1,33 @@
+From c3aa4af56652b403e304ea5f321acfe289e42922 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 16:07:14 -0800
+Subject: [PATCH] include asm/ioctl.h for ioctl() define
+
+also fixes errors e.g.
+
+../../RTIMULib/RTIMUHal.cpp:208:29: error: '_IOC_SIZEBITS' was not
+declared in this scope
+         return ioctl(m_SPI, SPI_IOC_MESSAGE(1), &wrIOC);
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ RTIMULib/RTIMUHal.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/RTIMULib/RTIMUHal.cpp b/RTIMULib/RTIMUHal.cpp
+index f9c3d15..d968326 100644
+--- a/RTIMULib/RTIMUHal.cpp
++++ b/RTIMULib/RTIMUHal.cpp
+@@ -29,6 +29,7 @@
+ #if !defined(WIN32) && !defined(__APPLE__)
+ 
+ #include <linux/spi/spidev.h>
++#include <asm/ioctl.h>
+ 
+ RTIMUHal::RTIMUHal()
+ {
+-- 
+2.7.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb
new file mode 100644
index 0000000..63c92b3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "RTIMULib is a C++ and Python library that makes it easy to use 9-dof and \
+10-dof IMUs with embedded Linux systems"
+HOMEPAGE = "https://github.com/RPi-Distro/RTIMULib/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://../../LICENSE;md5=96cdecb41125f498958e09b72faf318e"
+
+SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master \
+           file://0001-include-asm-ioctl.h-for-ioctl-define.patch;patchdir=../.. \
+          "
+SRCREV = "b949681af69b45f0f7f4bb53b6770037b5b02178"
+
+S = "${WORKDIR}/git/Linux/python/"
+
+inherit setuptools
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.1.0.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.1.0.bb
new file mode 100644
index 0000000..e990a28
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.1.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Python module to control the Raspberry Pi Sense HAT used in the Astro Pi mission"
+HOMEPAGE = "https://github.com/RPi-Distro/python-sense-hat"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=d80fe312e1ff5fbd97369b093bf21cda"
+
+SRCNAME = "sense-hat"
+
+SRC_URI = "https://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "71217f15ea963040f06e2f50722186ca"
+SRC_URI[sha256sum] = "c6c76707c0ea514e4b0f1f96f1b5b79755875891aae037df7434b6aad7b9dbca"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DEPENDS += " \
+    jpeg \
+    zlib \
+    freetype \
+    "
+
+RDEPENDS_${PN} += " \
+    python-numpy \
+    python-rtimu \
+    python-imaging \
+    "
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
new file mode 100644
index 0000000..bd97179
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
@@ -0,0 +1,294 @@
+From 23d7ab77865f8b17042f5cd4c6720cca475e0eb5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jan 2016 14:27:10 -0800
+Subject: [PATCH] Remove nested functions
+
+nested functions are not supported on llvm/clang compiler, replacing
+them helps make code portable and be compilable with non-gcc compilers
+additionally fix the diagnostic messages clang reported
+
+source/c_gpio.c:130:18: warning: comparison of distinct pointer types
+('volatile uint32_t *' (aka 'volatile unsigned int *') an
+d 'void *') [-Wcompare-distinct-pointer-types]
+    if (gpio_map < MAP_FAILED)
+        ~~~~~~~~ ^ ~~~~~~~~~~
+
+        source/c_gpio.c:89:13: warning: variable 'peri_base' is used
+uninitialized whenever 'if' condition is false [-Wsometimes-uninit
+ialized]
+        if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
+            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+source/c_gpio.c:116:17: note: uninitialized use occurs here
+    gpio_base = peri_base + GPIO_BASE_OFFSET;
+                ^~~~~~~~~
+source/c_gpio.c:89:9: note: remove the 'if' if its condition is always
+true
+        if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
+        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+source/c_gpio.c:64:23: note: initialize the variable 'peri_base' to
+silence this warning
+    uint32_t peri_base;
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ source/c_gpio.c  |   6 +--
+ source/py_gpio.c | 135 ++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 71 insertions(+), 70 deletions(-)
+
+diff --git a/source/c_gpio.c b/source/c_gpio.c
+index c96a2b0..b69880f 100644
+--- a/source/c_gpio.c
++++ b/source/c_gpio.c
+@@ -61,7 +61,7 @@ int setup(void)
+ {
+     int mem_fd;
+     uint8_t *gpio_mem;
+-    uint32_t peri_base;
++    uint32_t peri_base = 0;
+     uint32_t gpio_base;
+     unsigned char buf[4];
+     FILE *fp;
+@@ -73,7 +73,7 @@ int setup(void)
+     if ((mem_fd = open("/dev/gpiomem", O_RDWR|O_SYNC)) > 0)
+     {
+         gpio_map = (uint32_t *)mmap(NULL, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0);
+-        if ((uint32_t)gpio_map < 0) {
++        if (gpio_map == MAP_FAILED) {
+             return SETUP_MMAP_FAIL;
+         } else {
+             return SETUP_OK;
+@@ -127,7 +127,7 @@ int setup(void)
+ 
+     gpio_map = (uint32_t *)mmap( (void *)gpio_mem, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, gpio_base);
+ 
+-    if ((uint32_t)gpio_map < 0)
++    if (gpio_map == MAP_FAILED)
+         return SETUP_MMAP_FAIL;
+ 
+     return SETUP_OK;
+diff --git a/source/py_gpio.c b/source/py_gpio.c
+index d54cc7f..007bad5 100644
+--- a/source/py_gpio.c
++++ b/source/py_gpio.c
+@@ -69,6 +69,20 @@ static int mmap_gpio_mem(void)
+       return 0;
+    }
+ }
++static inline int cleanup_one(unsigned int gpio)
++{
++   // clean up any /sys/class exports
++   event_cleanup(gpio);
++
++   // set everything back to input
++   if (gpio_direction[gpio] != -1) {
++      setup_gpio(gpio, INPUT, PUD_OFF);
++      gpio_direction[gpio] = -1;
++      return 1;
++   }
++   return 0;
++}
++
+ 
+ // python function cleanup(channel=None)
+ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+@@ -83,19 +97,6 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+    PyObject *tempobj;
+    static char *kwlist[] = {"channel", NULL};
+ 
+-   void cleanup_one(void)
+-   {
+-      // clean up any /sys/class exports
+-      event_cleanup(gpio);
+-
+-      // set everything back to input
+-      if (gpio_direction[gpio] != -1) {
+-         setup_gpio(gpio, INPUT, PUD_OFF);
+-         gpio_direction[gpio] = -1;
+-         found = 1;
+-      }
+-   }
+-
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, &chanlist))
+       return NULL;
+ 
+@@ -140,7 +141,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+       } else if (channel != -666) {    // channel was an int indicating single channel
+          if (get_gpio_number(channel, &gpio))
+             return NULL;
+-         cleanup_one();
++         found = cleanup_one(gpio);
+       } else {  // channel was a list/tuple
+          for (i=0; i<chancount; i++) {
+             if (chanlist) {
+@@ -169,7 +170,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+ 
+             if (get_gpio_number(channel, &gpio))
+                return NULL;
+-            cleanup_one();
++            found = cleanup_one(gpio);
+          }
+       }
+    }
+@@ -182,6 +183,37 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+    Py_RETURN_NONE;
+ }
+ 
++static inline int setup_one(unsigned int *gpio, int channel, int pud, int direction, int initial) {
++   if (get_gpio_number(channel, gpio))
++      return 0;
++
++   int func = gpio_function(*gpio);
++   if (gpio_warnings &&                             // warnings enabled and
++       ((func != 0 && func != 1) ||                 // (already one of the alt functions or
++       (gpio_direction[*gpio] == -1 && func == 1)))  // already an output not set from this program)
++   {
++      PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.", 1);
++   }
++
++   // warn about pull/up down on i2c channels
++   if (gpio_warnings) {
++      if (rpiinfo.p1_revision == 0) { // compute module - do nothing
++      } else if ((rpiinfo.p1_revision == 1 && (*gpio == 0 || *gpio == 1)) ||
++                 (*gpio == 2 || *gpio == 3)) {
++         if (pud == PUD_UP || pud == PUD_DOWN)
++            PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
++      }
++   }
++
++   if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
++      output_gpio(*gpio, initial);
++   }
++   setup_gpio(*gpio, direction, pud);
++   gpio_direction[*gpio] = direction;
++   return 1;
++}
++
++
+ // python function setup(channel(s), direction, pull_up_down=PUD_OFF, initial=None)
+ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwargs)
+ {
+@@ -195,37 +227,6 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+    int pud = PUD_OFF + PY_PUD_CONST_OFFSET;
+    int initial = -1;
+    static char *kwlist[] = {"channel", "direction", "pull_up_down", "initial", NULL};
+-   int func;
+-
+-   int setup_one(void) {
+-      if (get_gpio_number(channel, &gpio))
+-         return 0;
+-
+-      func = gpio_function(gpio);
+-      if (gpio_warnings &&                             // warnings enabled and
+-          ((func != 0 && func != 1) ||                 // (already one of the alt functions or
+-          (gpio_direction[gpio] == -1 && func == 1)))  // already an output not set from this program)
+-      {
+-         PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.", 1);
+-      }
+-
+-      // warn about pull/up down on i2c channels
+-      if (gpio_warnings) {
+-         if (rpiinfo.p1_revision == 0) { // compute module - do nothing
+-         } else if ((rpiinfo.p1_revision == 1 && (gpio == 0 || gpio == 1)) ||
+-                    (gpio == 2 || gpio == 3)) {
+-            if (pud == PUD_UP || pud == PUD_DOWN)
+-               PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
+-         }
+-      }
+-
+-      if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
+-         output_gpio(gpio, initial);
+-      }
+-      setup_gpio(gpio, direction, pud);
+-      gpio_direction[gpio] = direction;
+-      return 1;
+-   }
+ 
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii", kwlist, &chanlist, &direction, &pud, &initial))
+       return NULL;
+@@ -290,7 +291,7 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+    } else if (chantuple) {
+        chancount = PyTuple_Size(chantuple);
+    } else {
+-       if (!setup_one())
++       if (!setup_one(&gpio, channel, pud, direction, initial))
+           return NULL;
+        Py_RETURN_NONE;
+    }
+@@ -320,12 +321,29 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+           return NULL;
+       }
+ 
+-      if (!setup_one())
++      if (!setup_one(&gpio, channel, pud, direction, initial))
+          return NULL;
+    }
+ 
+    Py_RETURN_NONE;
+ }
++static inline int output_val(unsigned int *gpio, int channel, int value) {
++   if (get_gpio_number(channel, gpio))
++       return 0;
++
++   if (gpio_direction[*gpio] != OUTPUT)
++   {
++      PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
++      return 0;
++   }
++
++   if (check_gpio_priv())
++      return 0;
++
++   output_gpio(*gpio, value);
++   return 1;
++}
++
+ 
+ // python function output(channel(s), value(s))
+ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+@@ -342,23 +360,6 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+    int chancount = -1;
+    int valuecount = -1;
+ 
+-   int output(void) {
+-      if (get_gpio_number(channel, &gpio))
+-          return 0;
+-
+-      if (gpio_direction[gpio] != OUTPUT)
+-      {
+-         PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
+-         return 0;
+-      }
+-
+-      if (check_gpio_priv())
+-         return 0;
+-
+-      output_gpio(gpio, value);
+-      return 1;
+-   }
+-
+    if (!PyArg_ParseTuple(args, "OO", &chanlist, &valuelist))
+        return NULL;
+ 
+@@ -416,7 +417,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+    }
+ 
+    if (chancount == -1) {
+-      if (!output())
++      if (!output_val(&gpio, channel, value))
+          return NULL;
+       Py_RETURN_NONE;
+    }
+@@ -472,7 +473,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+               return NULL;
+           }
+       }
+-      if (!output())
++      if (!output_val(&gpio, channel, value))
+          return NULL;
+    }
+ 
+-- 
+2.7.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb
new file mode 100644
index 0000000..89f601b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A module to control Raspberry Pi GPIO channels"
+HOMEPAGE = "http://code.google.com/p/raspberry-gpio-python/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=9b95630a648966b142f1a0dcea001cb7"
+
+SRCNAME = "RPi.GPIO"
+
+SRC_URI = "\
+          http://pypi.python.org/packages/source/R/RPi.GPIO/${SRCNAME}-${PV}.tar.gz \
+          file://0001-Remove-nested-functions.patch \
+          "
+SRC_URI[md5sum] = "254d0443a436eb241367c487274e7197"
+SRC_URI[sha256sum] = "54e5fb06d9ea1a1389a497fb5a06dfa950c86303b0f4ba89b68c55999d1df064"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
new file mode 100644
index 0000000..bed9749
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
@@ -0,0 +1,30 @@
+From c86bfacc98d58244f532626954ed00d84ecfa82d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 17:12:37 -0800
+Subject: [PATCH] include sys/types.h explicitly for getting caddr_t definition
+
+Helps fixing build on musl where sys/types.h is not included indirectly
+as happening on glibc
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ source/c_gpio/c_gpio.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/source/c_gpio/c_gpio.c b/source/c_gpio/c_gpio.c
+index 25a04ca..70df632 100644
+--- a/source/c_gpio/c_gpio.c
++++ b/source/c_gpio/c_gpio.c
+@@ -29,6 +29,7 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
++#include <sys/types.h>
+ #include <sys/mman.h>
+ #include "c_gpio.h"
+ 
+-- 
+2.7.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
new file mode 100644
index 0000000..69ecb6f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Advanced GPIO for the Raspberry Pi. Extends RPi.GPIO with PWM, \
+GPIO interrups, TCP socket interrupts, command line tools and more"
+HOMEPAGE = "https://github.com/metachris/RPIO"
+SECTION = "devel/python"
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://README.rst;beginline=41;endline=53;md5=d5d95d7486a4d98c999675c23196b25a"
+
+SRCNAME = "RPIO"
+
+SRC_URI = "http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
+           file://0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch \
+           "
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+SRC_URI[md5sum] = "cefc45422833dcafcd59b78dffc540f4"
+SRC_URI[sha256sum] = "b89f75dec9de354681209ebfaedfe22b7c178aacd91a604a7bd6d92024e4cf7e"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch
new file mode 100644
index 0000000..ed47fab
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch
@@ -0,0 +1,410 @@
+From 6d85e6cc3ab97c3f060e5e0a8e3f1945a14c86ba Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <gianfranco.costamagna@abinsula.com>
+Date: Mon, 12 Oct 2015 12:15:51 +0200
+Subject: [PATCH] Add initial cross compile support (rebase from Petter Mabäcker <petter@technux.se> version)
+
+---
+ devLib/Makefile             |   54 ++++++++++++++++++++++++-------------------
+ examples/Gertboard/Makefile |   22 +++++++++++-------
+ examples/Makefile           |   22 +++++++++++-------
+ examples/PiFace/Makefile    |   22 +++++++++++-------
+ examples/PiGlow/Makefile    |    4 ++--
+ examples/q2w/Makefile       |    4 ++--
+ gpio/Makefile               |   29 ++++++++++++-----------
+ wiringPi/Makefile           |   50 +++++++++++++++++++++------------------
+ 8 files changed, 119 insertions(+), 88 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index 0fb0033..cbea759 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -31,15 +31,19 @@ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-STATIC=libwiringPiDev.a
+-DYNAMIC=libwiringPiDev.so.$(VERSION)
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O2
+-CC	= gcc
+-INCLUDE	= -I.
+-DEFS	= -D_GNU_SOURCE
+-CFLAGS	= $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
++BASE_NAME=libwiringPiDev
++STATIC=$(BASE_NAME).a
++DYNAMIC=$(BASE_NAME).so.$(VERSION)
++
++#DEBUG ?= -g -O0
++DEBUG	?= -O2
++CC	?= gcc
++INCLUDE	?= -I.
++DEFS	?= -D_GNU_SOURCE
++CFLAGS	?= $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
+ 
+ LIBS    =
+ 
+@@ -66,16 +70,16 @@ $(STATIC):	$(OBJ)
+ 
+ $(DYNAMIC):	$(OBJ)
+ 	$Q echo "[Link (Dynamic)]"
+-	$Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ)
++	$Q $(CC) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so -lpthread $(OBJ)
+ 
+ .c.o:
+ 	$Q echo [Compile] $<
+-	$Q $(CC) -c $(CFLAGS) $< -o $@
++	$Q $(CC) -c $(CFLAGS) -fPIC $< -o $@
+ 
+ .PHONY:	clean
+ clean:
+ 	$Q echo "[Clean]"
+-	$Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPiDev.*
++	$Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak $(BASE_NAME).so* $(BASE_NAME).a
+ 
+ .PHONY:	tags
+ tags:	$(SRC)
+@@ -86,22 +90,22 @@ tags:	$(SRC)
+ .PHONY:	install
+ install:	$(DYNAMIC)
+ 	$Q echo "[Install Headers]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/include
+-	$Q install -m 0644 $(HEADERS)					$(DESTDIR)$(PREFIX)/include
++	$Q install -m 0755 -d						$(INCLUDE_DIR)
++	$Q install -m 0644 $(HEADERS)					$(INCLUDE_DIR)
+ 	$Q echo "[Install Dynamic Lib]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/lib
+-	$Q install -m 0755 libwiringPiDev.so.$(VERSION)			$(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)
+-	$Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)	$(DESTDIR)/lib/libwiringPiDev.so
+-	$Q $(LDCONFIG)
++	$Q install -m 0755 -d						$(LIB_DIR)
++	$Q install -m 0755 $(BASE_NAME).so				$(LIB_DIR)/$(DYNAMIC)
++	$Q ln -sf $(DYNAMIC)						$(LIB_DIR)/$(BASE_NAME).so
++	$Q ln -sf $(DYNAMIC)						$(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
+ 
+ .PHONY:	install-static
+ install-static:	$(STATIC)
+ 	$Q echo "[Install Headers]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/include
+-	$Q install -m 0644 $(HEADERS)					$(DESTDIR)$(PREFIX)/include
++	$Q install -m 0755 -d						$(INCLUDE_DIR)
++	$Q install -m 0644 $(HEADERS)					$(INCLUDE_DIR)
+ 	$Q echo "[Install Static Lib]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/lib
+-	$Q install -m 0755 libwiringPiDev.a				$(DESTDIR)$(PREFIX)/lib
++	$Q install -m 0755 -d						$(LIB_DIR)
++	$Q install -m 0755 $(STATIC)					$(LIB_DIR)
+ 
+ .PHONY:	install-deb
+ install-deb:	$(DYNAMIC)
+@@ -116,9 +120,11 @@ install-deb:	$(DYNAMIC)
+ .PHONY:	uninstall
+ uninstall:
+ 	$Q echo "[UnInstall]"
+-	$Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS)
+-	$Q cd $(DESTDIR)$(PREFIX)/lib/     && rm -f libwiringPiDev.*
+-	$Q $(LDCONFIG)
++	$Q cd $(INCLUDE_DIR) && rm -f $(HEADERS)
++	$Q rm -f $(LIB_DIR)/$(STATIC)
++	$Q rm -f $(LIB_DIR)/$(DYNAMIC)
++	$Q rm -f $(LIB_DIR)/$(BASE_NAME).so
++	$Q rm -f $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
+ 
+ 
+ .PHONY:	depend
+diff --git a/examples/Gertboard/Makefile b/examples/Gertboard/Makefile
+index 1939ad6..98d1415 100644
+--- a/examples/Gertboard/Makefile
++++ b/examples/Gertboard/Makefile
+@@ -9,14 +9,20 @@ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O3
+-CC	= gcc
+-INCLUDE	= -I/usr/local/include
+-CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+-
+-LDFLAGS	= -L/usr/local/lib
+-LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
++DESTDIR?=/usr
++PREFIX?=/local
++
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
++
++#DEBUG	?= -g -O0
++DEBUG	?= -O3
++CC	?= gcc
++INCLUDE	?= -I$(INCLUDE_DIR)
++CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++
++LDFLAGS	?= -L$(LIB_DIR)
++LDLIBS    ?= -lwiringPi -lwiringPiDev -lpthread -lm
+ 
+ # Should not alter anything below this line
+ ###############################################################################
+diff --git a/examples/Makefile b/examples/Makefile
+index e6b9b71..931b167 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -26,14 +26,20 @@ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O3
+-CC	= gcc
+-INCLUDE	= -I/usr/local/include
+-CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+-
+-LDFLAGS	= -L/usr/local/lib
+-LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
++DESTDIR?=/usr
++PREFIX?=/local
++
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
++
++#DEBUG	?= -g -O0
++DEBUG	?= -O3
++CC	?= gcc
++INCLUDE	?= -I$(INCLUDE_DIR)
++CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++
++LDFLAGS	?= -L$(LIB_DIR)
++LDLIBS    ?= -lwiringPi -lwiringPiDev -lpthread -lm
+ 
+ # Should not alter anything below this line
+ ###############################################################################
+diff --git a/examples/PiFace/Makefile b/examples/PiFace/Makefile
+index 4685adc..cfaf902 100644
+--- a/examples/PiFace/Makefile
++++ b/examples/PiFace/Makefile
+@@ -26,14 +26,20 @@ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O3
+-CC	= gcc
+-INCLUDE	= -I/usr/local/include
+-CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+-
+-LDFLAGS	= -L/usr/local/lib
+-LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
++DESTDIR?=/usr
++PREFIX?=/local
++
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
++
++#DEBUG	?= -g -O0
++DEBUG	?= -O3
++CC	?= gcc
++INCLUDE	?= -I$(INCLUDE_DIR)
++CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++
++LDFLAGS	?= -L$(LIB_DIR)
++LDLIBS    ?= -lwiringPi -lwiringPiDev -lpthread -lm
+ 
+ # Should not alter anything below this line
+ ###############################################################################
+diff --git a/examples/PiGlow/Makefile b/examples/PiGlow/Makefile
+index acd4818..dabd64e 100644
+--- a/examples/PiGlow/Makefile
++++ b/examples/PiGlow/Makefile
+@@ -29,10 +29,10 @@ endif
+ #DEBUG	= -g -O0
+ DEBUG	= -O3
+ CC	= gcc
+-INCLUDE	= -I/usr/local/include
++INCLUDE	= -I../wiringPi -I../wiringPiDev
+ CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+ 
+-LDFLAGS	= -L/usr/local/lib
++LDFLAGS	= -L../wiringPi -L../wiringPiDev
+ LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
+ 
+ # Should not alter anything below this line
+diff --git a/examples/q2w/Makefile b/examples/q2w/Makefile
+index 6f50fa0..c5e9f6e 100644
+--- a/examples/q2w/Makefile
++++ b/examples/q2w/Makefile
+@@ -29,10 +29,10 @@ endif
+ #DEBUG	= -g -O0
+ DEBUG	= -O3
+ CC	= gcc
+-INCLUDE	= -I/usr/local/include
++INCLUDE	= -I../wiringPi -I../devLib
+ CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+ 
+-LDFLAGS	= -L/usr/local/lib
++LDFLAGS	= -L../wiringPi -L../devLib
+ LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
+ 
+ ###############################################################################
+diff --git a/gpio/Makefile b/gpio/Makefile
+index 7dcd090..83ec454 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -30,13 +30,17 @@ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O2
+-CC	= gcc
+-INCLUDE	= -I$(DESTDIR)$(PREFIX)/include
+-CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
++BIN_DIR?=$(DESTDIR)$(PREFIX)/bin
+ 
+-LDFLAGS	= -L$(DESTDIR)$(PREFIX)/lib
++#DEBUG	?= -g -O0
++DEBUG	?= -O2
++CC	?= gcc
++INCLUDE	?= -I$(INCLUDE_DIR)
++CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++
++LDFLAGS	?= -L$(LIB_DIR)
+ LIBS    = -lwiringPi -lwiringPiDev -lpthread
+ 
+ # May not need to  alter anything below this line
+@@ -72,13 +76,10 @@ tags:	$(SRC)
+ .PHONY:	install
+ install: gpio
+ 	$Q echo "[Install]"
+-	$Q cp gpio		$(DESTDIR)$(PREFIX)/bin
+-ifneq ($(WIRINGPI_SUID),0)
+-	$Q chown root.root	$(DESTDIR)$(PREFIX)/bin/gpio
+-	$Q chmod 4755		$(DESTDIR)$(PREFIX)/bin/gpio
+-endif
+-	$Q mkdir -p		$(DESTDIR)$(PREFIX)/man/man1
+-	$Q cp gpio.1		$(DESTDIR)$(PREFIX)/man/man1
++	$Q install -d $(BIN_DIR)
++	$Q install -m 4755 -o root -g root gpio $(BIN_DIR)
++	$Q install -d $(DESTDIR)$(PREFIX)/share/man/man1
++	$Q install -m 644 -o root -g root gpio.1 $(DESTDIR)$(PREFIX)/share/man/man1
+ 
+ .PHONY:	install-deb
+ install-deb:	gpio
+@@ -89,7 +90,7 @@ install-deb:	gpio
+ .PHONY:	uninstall
+ uninstall:
+ 	$Q echo "[UnInstall]"
+-	$Q rm -f $(DESTDIR)$(PREFIX)/bin/gpio
++	$Q rm -f $(BIN_DIR)/gpio
+ 	$Q rm -f $(DESTDIR)$(PREFIX)/man/man1/gpio.1
+ 
+ .PHONY:	depend
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index 6bbcc5d..5355b74 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -25,19 +25,23 @@ VERSION=$(shell cat ../VERSION)
+ DESTDIR?=/usr
+ PREFIX?=/local
+ 
++INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
++LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
++
+ LDCONFIG?=ldconfig
+ 
+ ifneq ($V,1)
+ Q ?= @
+ endif
+ 
+-STATIC=libwiringPi.a
+-DYNAMIC=libwiringPi.so.$(VERSION)
++BASE_NAME=libwiringPi
++STATIC=$(BASE_NAME).a
++DYNAMIC=$(BASE_NAME).so.$(VERSION)
+ 
+-#DEBUG	= -g -O0
+-DEBUG	= -O2
+-CC	= gcc
+-INCLUDE	= -I.
++#DEBUG	?= -g -O0
++DEBUG	?= -O2
++CC	?= gcc
++INCLUDE	?= -I.
+ DEFS	= -D_GNU_SOURCE
+ CFLAGS	= $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
+ 
+@@ -89,17 +93,17 @@ $(STATIC):	$(OBJ)
+ 
+ $(DYNAMIC):	$(OBJ)
+ 	$Q echo "[Link (Dynamic)]"
+-	$Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) -lpthread $(OBJ)
++	$Q $(CC) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so -lpthread $(OBJ)
+ 
+ .c.o:
+ 	$Q echo [Compile] $<
+-	$Q $(CC) -c $(CFLAGS) $< -o $@
++	$Q $(CC) -c $(CFLAGS) -fPIC $< -o $@
+ 
+ 
+ .PHONY:	clean
+ clean:
+ 	$Q echo "[Clean]"
+-	$Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPi.*
++	$Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak $(BASE_NAME).so* $(BASE_NAME).a
+ 
+ .PHONY:	tags
+ tags:	$(SRC)
+@@ -110,22 +114,22 @@ tags:	$(SRC)
+ .PHONY:	install
+ install:	$(DYNAMIC)
+ 	$Q echo "[Install Headers]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/include
+-	$Q install -m 0644 $(HEADERS)					$(DESTDIR)$(PREFIX)/include
++	$Q install -m 0755 -d						$(INCLUDE_DIR)
++	$Q install -m 0644 $(HEADERS)					$(INCLUDE_DIR)
+ 	$Q echo "[Install Dynamic Lib]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/lib
+-	$Q install -m 0755 libwiringPi.so.$(VERSION)			$(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
+-	$Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)	$(DESTDIR)/lib/libwiringPi.so
+-	$Q $(LDCONFIG)
++	$Q install -m 0755 -d						$(LIB_DIR)
++	$Q install -m 0755 $(BASE_NAME).so				$(LIB_DIR)/$(DYNAMIC)
++	$Q ln -sf $(DYNAMIC)						$(LIB_DIR)/$(BASE_NAME).so
++	$Q ln -sf $(DYNAMIC)						$(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
+ 
+ .PHONY:	install-static
+ install-static:	$(STATIC)
+ 	$Q echo "[Install Headers]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/include
+-	$Q install -m 0644 $(HEADERS)					$(DESTDIR)$(PREFIX)/include
++	$Q install -m 0755 -d						$(INCLUDE_DIR)
++	$Q install -m 0644 $(HEADERS)					$(INCLUDE_DIR)
+ 	$Q echo "[Install Static Lib]"
+-	$Q install -m 0755 -d						$(DESTDIR)$(PREFIX)/lib
+-	$Q install -m 0755 libwiringPi.a					$(DESTDIR)$(PREFIX)/lib
++	$Q install -m 0755 -d						$(LIB_DIR)
++	$Q install -m 0755 $(STATIC)					$(LIB_DIR)
+ 
+ .PHONY:	install-deb
+ install-deb:	$(DYNAMIC)
+@@ -140,9 +144,11 @@ install-deb:	$(DYNAMIC)
+ .PHONY:	uninstall
+ uninstall:
+ 	$Q echo "[UnInstall]"
+-	$Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS)
+-	$Q cd $(DESTDIR)$(PREFIX)/lib/     && rm -f libwiringPi.*
+-	$Q $(LDCONFIG)
++	$Q cd $(INCLUDE_DIR) && rm -f $(HEADERS)
++	$Q rm -f $(LIB_DIR)/$(STATIC)
++	$Q rm -f $(LIB_DIR)/$(DYNAMIC)
++	$Q rm -f $(LIB_DIR)/$(BASE_NAME).so
++	$Q rm -f $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
+ 
+ 
+ .PHONY:	depend
+-- 
+2.1.4
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
new file mode 100644
index 0000000..5de5853
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
@@ -0,0 +1,58 @@
+From 7f65eb37a82a6d9b095d9c8f262ad9dd205acd03 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 16:57:38 -0800
+Subject: [PATCH] include <asm/ioctl.h> directly for _IOC_SIZEBITS
+
+Fixes errors like
+| wiringPiSPI.c: In function 'wiringPiSPIDataRW':
+| wiringPiSPI.c:89:35: error: '_IOC_SIZEBITS' undeclared (first use in
+this function)
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ wiringPi/wiringPi.c    | 1 +
+ wiringPi/wiringPiI2C.c | 1 +
+ wiringPi/wiringPiSPI.c | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
+index 32e5100..cb5db9d 100644
+--- a/wiringPi/wiringPi.c
++++ b/wiringPi/wiringPi.c
+@@ -64,6 +64,7 @@
+ #include <time.h>
+ #include <fcntl.h>
+ #include <pthread.h>
++#include <asm/ioctl.h>
+ #include <sys/time.h>
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+diff --git a/wiringPi/wiringPiI2C.c b/wiringPi/wiringPiI2C.c
+index c787bce..efdf53c 100644
+--- a/wiringPi/wiringPiI2C.c
++++ b/wiringPi/wiringPiI2C.c
+@@ -52,6 +52,7 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#include <asm/ioctl.h>
+ 
+ #include "wiringPi.h"
+ #include "wiringPiI2C.h"
+diff --git a/wiringPi/wiringPiSPI.c b/wiringPi/wiringPiSPI.c
+index 453df31..ae3c7d9 100644
+--- a/wiringPi/wiringPiSPI.c
++++ b/wiringPi/wiringPiSPI.c
+@@ -27,6 +27,7 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <string.h>
++#include <asm/ioctl.h>
+ #include <sys/ioctl.h>
+ #include <linux/spi/spidev.h>
+ 
+-- 
+2.7.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
new file mode 100644
index 0000000..9d2206b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "A library to control Raspberry Pi GPIO channels"
+HOMEPAGE = "https://projects.drogon.net/raspberry-pi/wiringpi/"
+SECTION = "devel/libs"
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+# tag 2.29
+SRCREV = "d79506694d7ba1c3da865d095238289d6175057d"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://git.drogon.net/wiringPi \
+           file://0001-Add-initial-cross-compile-support.patch \
+           file://0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch \
+           "
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+CFLAGS_prepend = "-I${S}/wiringPi -I${S}/devLib"
+
+EXTRA_OEMAKE += "'INCLUDE_DIR=${D}${includedir}' 'LIB_DIR=${D}${libdir}'"
+EXTRA_OEMAKE += "'DESTDIR=${D}/usr' 'PREFIX=""'"
+
+do_compile() {
+    oe_runmake -C devLib
+    oe_runmake -C wiringPi
+    oe_runmake -C gpio 'LDFLAGS=${LDFLAGS} -L${S}/wiringPi -L${S}/devLib'
+}
+
+do_install() {
+    oe_runmake -C devLib install
+    oe_runmake -C wiringPi install
+    oe_runmake -C gpio install
+}
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
new file mode 100644
index 0000000..7f8b600
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
@@ -0,0 +1 @@
+EGLINFO_DEVICE_rpi  = "raspberrypi"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
new file mode 100644
index 0000000..fd32abc
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
@@ -0,0 +1,2 @@
+EGLINFO_DEVICE_rpi  = "raspberrypi"
+ASNEEDED = ""
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch
new file mode 100644
index 0000000..4d026bd
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch
@@ -0,0 +1,208 @@
+From 83c5ac5892d0cd29caa8922ff8b639b9a373c3cb Mon Sep 17 00:00:00 2001
+From: Dom Cobley <dc4@broadcom.com>
+Date: Tue, 9 Jul 2013 09:26:26 -0400
+Subject: [PATCH 01/13] Allow applications to set next resource handle
+
+This patch adds provisions in userland to
+let apps callers set the next rendereing dispmanx resource.
+It's useful for implementing, say, a buffer carousel.
+---
+ interface/khronos/common/khrn_client_rpc.h |  2 ++
+ interface/khronos/common/khrn_int_ids.h    |  2 ++
+ interface/khronos/egl/egl_client.c         | 30 +++++++++++++++++++++++++++---
+ interface/khronos/egl/egl_client_surface.c | 24 +++++++++++++++++++++++-
+ interface/khronos/egl/egl_client_surface.h |  3 ++-
+ interface/khronos/egl/egl_int_impl.h       |  5 +++--
+ 6 files changed, 59 insertions(+), 7 deletions(-)
+
+diff --git a/interface/khronos/common/khrn_client_rpc.h b/interface/khronos/common/khrn_client_rpc.h
+index 418aa67..a7557a8 100644
+--- a/interface/khronos/common/khrn_client_rpc.h
++++ b/interface/khronos/common/khrn_client_rpc.h
+@@ -683,6 +683,7 @@ static INLINE void rpc_call12_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
+ static INLINE void rpc_call13_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, void *out)               { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);      rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ static INLINE void rpc_call14_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
++static INLINE void rpc_call16_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, uint32_t p14, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ #endif
+ 
+ #define RPC_CALL1_OUT_CTRL(fn, thread, id, out)                                               rpc_call1_out_ctrl(thread, id, out)
+@@ -700,6 +701,7 @@ static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
+ #define RPC_CALL13_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out)      rpc_call13_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out)
+ #define RPC_CALL14_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out) rpc_call14_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out)
+ #define RPC_CALL15_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out) rpc_call15_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out)
++#define RPC_CALL16_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out) rpc_call16_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out)
+ 
+ # if !defined(__SYMBIAN32__)  //use functions defined in khrpc.cpp
+ static INLINE uint32_t rpc_call1_out_ctrl_res(CLIENT_THREAD_STATE_T *thread,uint32_t id, void *out)                                                                                                                       { uint32_t res; rpc_begin(thread); RPC_CALL(thread, id);                                     res = rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_RES | RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); return res; }
+diff --git a/interface/khronos/common/khrn_int_ids.h b/interface/khronos/common/khrn_int_ids.h
+index 8378f4a..ec961e0 100644
+--- a/interface/khronos/common/khrn_int_ids.h
++++ b/interface/khronos/common/khrn_int_ids.h
+@@ -367,6 +367,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ 
+ #define EGLINTCREATESURFACE_ID            0x4000
++#define EGLINTCREATESURFACE_ID_V2         0x4100
+ #define EGLINTCREATEGLES11_ID             0x4001
+ #define EGLINTCREATEGLES20_ID             0x4002
+ #define EGLINTCREATEVG_ID                 0x4003
+@@ -377,6 +378,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #define EGLINTMAKECURRENT_ID              0x4008
+ #define EGLINTFLUSHANDWAIT_ID             0x4009
+ #define EGLINTSWAPBUFFERS_ID              0x400a
++#define EGLINTSWAPBUFFERS_ID_V2           0x410a
+ #define EGLINTSELECTMIPMAP_ID             0x400b
+ #define EGLINTFLUSH_ID                    0x400c
+ #define EGLINTGETCOLORDATA_ID             0x400d
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 472ef0c..234da65 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -162,6 +162,17 @@ static void egl_current_release(CLIENT_PROCESS_STATE_T *process, EGL_CURRENT_T *
+ void egl_gl_flush_callback(bool wait);
+ void egl_vg_flush_callback(bool wait);
+ 
++#include "interface/vmcs_host/vc_dispmanx_types.h"
++/**HACKHACK - give us the ability to inject a DispmanX 
++ * resource handle into the CreateWindowSurface and 
++ * SwapBuffers calls */ 
++static DISPMANX_RESOURCE_HANDLE_T next_resource_handle;
++
++EGLAPI EGLBoolean EGLAPIENTRY eglSetNextResourceHandle(DISPMANX_RESOURCE_HANDLE_T handle)
++{
++   next_resource_handle = handle;
++}
++
+ /*
+ TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
+ Also affects global image (and possibly others?)
+@@ -644,7 +655,8 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
+                                 false,
+                                 EGL_NO_TEXTURE,
+                                 EGL_NO_TEXTURE,
+-                                0, 0);
++                                0, 0,
++                                next_resource_handle);
+ 
+                if (surface) {
+                   if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -889,7 +901,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
+                              mipmap_texture,
+                              texture_format,
+                              texture_target,
+-                             0, 0);
++                             0, 0, 0);
+ 
+             if (surface) {
+                if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -1031,7 +1043,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
+                                    false,
+                                    EGL_NO_TEXTURE,
+                                    EGL_NO_TEXTURE,
+-                                   pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle);
++                                   pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle, 0);
+ 
+                      if (surface) {
+                         if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -2303,6 +2315,18 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+ 
+                vcos_log_trace("eglSwapBuffers server call");
+ 
++               if (next_resource_handle)
++               RPC_CALL7(eglIntSwapBuffers_impl,
++                     thread,
++                     EGLINTSWAPBUFFERS_ID_V2,
++                     RPC_UINT(surface->serverbuffer),
++                     RPC_UINT(surface->width),
++                     RPC_UINT(surface->height),
++                     RPC_UINT(surface->internal_handle),
++                     RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
++                     RPC_UINT(khrn_platform_get_window_position(surface->win)),
++                     RPC_INT(next_resource_handle));
++               else
+                RPC_CALL6(eglIntSwapBuffers_impl,
+                      thread,
+                      EGLINTSWAPBUFFERS_ID,
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 0fa1fd1..0dc10e2 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -314,7 +314,8 @@ EGL_SURFACE_T *egl_surface_create(
+    EGLenum texture_format,
+    EGLenum texture_target,
+    EGLNativePixmapType pixmap,
+-   const uint32_t *pixmap_server_handle)
++   const uint32_t *pixmap_server_handle,
++   DISPMANX_RESOURCE_HANDLE_T next_resource_handle)
+ {
+    KHRN_IMAGE_FORMAT_T color;
+    KHRN_IMAGE_FORMAT_T depth;
+@@ -473,6 +474,27 @@ EGL_SURFACE_T *egl_surface_create(
+ #endif
+          uint32_t results[3];
+ 
++         if (next_resource_handle)
++         RPC_CALL16_OUT_CTRL(eglIntCreateSurface_impl,
++                             thread,
++                             EGLINTCREATESURFACE_ID_V2,
++                             RPC_UINT(serverwin),
++                             RPC_UINT(buffers),
++                             RPC_UINT(width),
++                             RPC_UINT(height),
++                             RPC_UINT(color),
++                             RPC_UINT(depth),
++                             RPC_UINT(mask),
++                             RPC_UINT(multi),
++                             RPC_UINT(largest_pbuffer),
++                             RPC_UINT(mipmap_texture),
++                             RPC_UINT(config_depth_bits),
++                             RPC_UINT(config_stencil_bits),
++                             RPC_UINT(sem_name),
++                             RPC_UINT(type),
++                             RPC_INT(next_resource_handle),
++                             results);
++         else
+          RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
+                              thread,
+                              EGLINTCREATESURFACE_ID,
+diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
+index c99d44c..b5bf70a 100644
+--- a/interface/khronos/egl/egl_client_surface.h
++++ b/interface/khronos/egl/egl_client_surface.h
+@@ -322,7 +322,8 @@ extern EGL_SURFACE_T *egl_surface_create(
+    EGLenum texture_format,
+    EGLenum texture_target,
+    EGLNativePixmapType pixmap,
+-   const uint32_t *pixmap_server_handle);
++   const uint32_t *pixmap_server_handle,
++   DISPMANX_RESOURCE_HANDLE_T next_resource_handle);
+ extern EGL_SURFACE_T *egl_surface_from_vg_image(
+    VGImage vg_handle,
+    EGLSurface name,
+diff --git a/interface/khronos/egl/egl_int_impl.h b/interface/khronos/egl/egl_int_impl.h
+index 8a5734c..51b3580 100644
+--- a/interface/khronos/egl/egl_int_impl.h
++++ b/interface/khronos/egl/egl_int_impl.h
+@@ -56,7 +56,8 @@ FN(int, eglIntCreateSurface_impl, (
+    uint32_t config_stencil_bits,
+    uint32_t sem,
+    uint32_t type,
+-   uint32_t *results))
++   uint32_t *results,
++   DISPMANX_RESOURCE_HANDLE_T next_resource_handle))
+ 
+ FN(int, eglIntCreatePbufferFromVGImage_impl, (
+    VGImage vg_handle,
+@@ -110,7 +111,7 @@ FN(void, eglIntMakeCurrent_impl, (uint32_t pid_0, uint32_t pid_1, uint32_t glver
+ FN(int, eglIntFlushAndWait_impl, (uint32_t flushgl, uint32_t flushvg))
+ FN(void, eglIntFlush_impl, (uint32_t flushgl, uint32_t flushvg))
+ 
+-FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position))
++FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position, DISPMANX_RESOURCE_HANDLE_T new_back_buffer))
+ FN(void, eglIntSelectMipmap_impl, (EGL_SURFACE_ID_T s, int level))
+ 
+ FN(void, eglIntGetColorData_impl, (EGL_SURFACE_ID_T s, KHRN_IMAGE_FORMAT_T format, uint32_t width, uint32_t height, int32_t stride, uint32_t y_offset, void *data))
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch
new file mode 100644
index 0000000..aa09dda
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch
@@ -0,0 +1,1880 @@
+From 79ce2b4125359593f37c5b9744a37203e24249de Mon Sep 17 00:00:00 2001
+From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Tue, 1 Oct 2013 13:19:20 +0200
+Subject: [PATCH 02/13] wayland: Add support for the Wayland winsys
+
+* Adds EGL_WL_bind_wayland_display extension
+* Adds wayland-egl library
+* Adds wl_dispmanx_buffer protocol extension
+
+TODO: Check that platform_get_dimensions() returning swapchain_count == 1 is correct
+
+TODO: Remove the requirement of passing a valid DispmanX element handle to
+the SwapBuffers and CreateSurface RPC calls. This will remove the need to open
+a DispmanX display from the clients.
+
+TODO: wl_dispmanx_server_buffer should probably be defined in a
+private header that can be included from EGL and vc_* instead of in
+vc_vchi_dispmanx.h
+---
+ .gitignore                                         |   2 +
+ CMakeLists.txt                                     |  11 +
+ README.md                                          |   4 +
+ buildme                                            |  14 +-
+ interface/khronos/CMakeLists.txt                   |  52 ++++-
+ interface/khronos/common/khrn_client.c             |  15 ++
+ interface/khronos/common/khrn_client.h             |  10 +
+ interface/khronos/common/khrn_client_mangle.h      |   3 +
+ interface/khronos/common/khrn_client_platform.h    |   8 +
+ interface/khronos/common/khrn_client_unmangle.h    |   3 +
+ .../common/linux/khrn_client_platform_linux.c      | 115 ++++++++--
+ interface/khronos/common/linux/khrn_wayland.c      | 215 ++++++++++++++++++
+ .../common/linux/khrn_wayland.h}                   |  46 +---
+ interface/khronos/egl/egl_client.c                 |  92 +++++---
+ interface/khronos/egl/egl_client_get_proc.c        |  11 +
+ interface/khronos/egl/egl_client_surface.c         |  42 +++-
+ interface/khronos/egl/egl_client_surface.h         |  38 +++-
+ interface/khronos/egl/egl_int_impl.h               |   2 +-
+ interface/khronos/ext/egl_wayland.c                | 246 +++++++++++++++++++++
+ interface/khronos/include/EGL/eglext.h             |  23 ++
+ interface/khronos/wayland-egl/wayland-egl-priv.h   |  53 +++++
+ interface/khronos/wayland-egl/wayland-egl.c        |  59 +++++
+ interface/khronos/wayland-egl/wayland-egl.pc.in    |  10 +
+ interface/vmcs_host/CMakeLists.txt                 |  21 +-
+ interface/vmcs_host/vc_dispmanx.h                  |  10 +
+ interface/vmcs_host/vc_vchi_dispmanx.c             |  42 ++++
+ interface/vmcs_host/vc_vchi_dispmanx.h             |  15 ++
+ interface/wayland/dispmanx.xml                     | 123 +++++++++++
+ makefiles/cmake/Wayland.cmake                      |  72 ++++++
+ 29 files changed, 1260 insertions(+), 97 deletions(-)
+ create mode 100644 interface/khronos/common/linux/khrn_wayland.c
+ copy interface/{vmcs_host/vc_vchi_dispmanx.h => khronos/common/linux/khrn_wayland.h} (56%)
+ create mode 100644 interface/khronos/ext/egl_wayland.c
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl-priv.h
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl.c
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl.pc.in
+ create mode 100644 interface/wayland/dispmanx.xml
+ create mode 100644 makefiles/cmake/Wayland.cmake
+
+diff --git a/.gitignore b/.gitignore
+index 8df9393..d0d1387 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -10,3 +10,5 @@
+ *.lai
+ *.la
+ *.a
++
++*~
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3113618..56b7fb8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,6 +19,17 @@ include(makefiles/cmake/global_settings.cmake)
+ include(makefiles/cmake/arm-linux.cmake)
+ include(makefiles/cmake/vmcs.cmake)
+ 
++if (BUILD_WAYLAND)
++   include(makefiles/cmake/Wayland.cmake)
++
++   # Find Wayland libraries
++   find_package(PkgConfig)
++   pkg_check_modules(WAYLAND_CLIENT wayland-client REQUIRED)
++   pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
++
++   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBUILD_WAYLAND")
++endif()
++
+ enable_language(ASM)
+ 
+ # Global include paths
+diff --git a/README.md b/README.md
+index 358d2b4..4da4448 100644
+--- a/README.md
++++ b/README.md
+@@ -4,3 +4,7 @@ EGL, mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG.
+ 
+ Use buildme to build. It requires cmake to be installed and an arm cross compiler. It is set up to use this one:
+ https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
++
++To build support for the Wayland winsys in EGL, execute the buildme script like this:
++
++$ BUILD_WAYLAND=1 ./buildme.
+diff --git a/buildme b/buildme
+index d5d3de9..c46f214 100755
+--- a/buildme
++++ b/buildme
+@@ -1,10 +1,14 @@
+ #!/bin/bash
+ 
++if [ -n "$BUILD_WAYLAND" ]; then
++       WAYLAND_VARS="-DBUILD_WAYLAND=TRUE"
++fi
++
+ if [ "armv6l" = `arch` ] || [ "armv7l" = `arch` ]; then
+ 	# Native compile on the Raspberry Pi
+ 	mkdir -p build/raspberry/release
+ 	pushd build/raspberry/release
+-	cmake -DCMAKE_BUILD_TYPE=Release ../../..
++	cmake -DCMAKE_BUILD_TYPE=Release $WAYLAND_VARS ../../..
+ 	if [ "armv6l" = `arch` ]; then
+ 		make
+ 	else
+@@ -17,9 +21,15 @@ if [ "armv6l" = `arch` ] || [ "armv7l" = `arch` ]; then
+ 	fi
+ else
+ 	# Cross compile on a more capable machine
++
++	if [ -n "$BUILD_WAYLAND" ]; then
++		# Use wayland-scanner from the build platform
++		WAYLAND_VARS+=" -DWAYLAND_SCANNER_EXECUTABLE:FILEPATH=/usr/bin/wayland-scanner"
++	fi
++
+ 	mkdir -p build/arm-linux/release/
+ 	pushd build/arm-linux/release/
+-	cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=Release ../../..
++	cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=Release $WAYLAND_VARS ../../..
+ 	make -j 6
+ 
+ 	if [ "$1" != "" ]; then
+diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt
+index c437291..6778e10 100644
+--- a/interface/khronos/CMakeLists.txt
++++ b/interface/khronos/CMakeLists.txt
+@@ -6,6 +6,12 @@
+ # have quite a few circular dependencies, and so the only way
+ # to make it work seems to be to have everything static.
+ 
++if (BUILD_WAYLAND)
++include_directories(
++   ${WAYLAND_SERVER_INCLUDE_DIRS}
++)
++endif ()
++
+ set(EGL_SOURCE
+    egl/egl_client_config.c
+    egl/egl_client_context.c
+@@ -55,19 +61,63 @@ set(CLIENT_SOURCE
+    common/khrn_int_hash_asm.s
+    common/khrn_client_cache.c)
+ 
++set(EGL_LIBS
++   khrn_client
++   vchiq_arm
++   vcos
++   bcm_host
++   -lm)
++
++if (BUILD_WAYLAND)
++   set(EGL_SOURCE
++      ${EGL_SOURCE}
++      ext/egl_wayland.c
++      common/linux/khrn_wayland.c)
++
++   set(EGL_LIBS
++      ${EGL_LIBS}
++      wayland-client
++      wayland-server)
++
++   set(WAYLAND_EGL_SOURCE
++      wayland-egl/wayland-egl.c)
++
++   wayland_add_protocol_server(
++       EGL_SOURCE
++       ../../interface/wayland/dispmanx.xml
++       dispmanx
++   )
++
++   wayland_add_protocol_client(
++       EGL_SOURCE
++       ../../interface/wayland/dispmanx.xml
++       dispmanx
++   )
++
++   add_library(wayland-egl ${SHARED} ${WAYLAND_EGL_SOURCE})
++   install(TARGETS wayland-egl DESTINATION lib)
++
++   configure_file ("wayland-egl/wayland-egl.pc.in" "wayland-egl/wayland-egl.pc" @ONLY)
++   install (FILES "${CMAKE_CURRENT_BINARY_DIR}/wayland-egl/wayland-egl.pc"
++            DESTINATION lib/pkgconfig)
++endif ()
++
+ add_library(EGL ${SHARED} ${EGL_SOURCE})
+ add_library(GLESv2 ${SHARED} ${GLES_SOURCE})
+ add_library(OpenVG ${SHARED} ${VG_SOURCE})
+ add_library(WFC ${SHARED} ${WFC_SOURCE})
+ add_library(khrn_client ${CLIENT_SOURCE})
+ 
++set_target_properties(EGL PROPERTIES SOVERSION 1 VERSION 1.0.0)
++set_target_properties(GLESv2 PROPERTIES SOVERSION 2 VERSION 2.0.0)
++
+ # TODO do we need EGL_static and GLESv2_static now that khrn_static exists?
+ add_library(EGL_static STATIC ${EGL_SOURCE})
+ add_library(GLESv2_static STATIC ${GLES_SOURCE})
+ add_library(khrn_static STATIC
+    ${EGL_SOURCE} ${GLES_SOURCE} ${VG_SOURCE} ${WFC_SOURCE} ${CLIENT_SOURCE})
+ 
+-target_link_libraries(EGL khrn_client vchiq_arm vcos bcm_host -lm)
++target_link_libraries(EGL ${EGL_LIBS})
+ target_link_libraries(GLESv2 EGL khrn_client vcos)
+ target_link_libraries(WFC EGL)
+ target_link_libraries(OpenVG EGL)
+diff --git a/interface/khronos/common/khrn_client.c b/interface/khronos/common/khrn_client.c
+index e38a85f..783a68e 100644
+--- a/interface/khronos/common/khrn_client.c
++++ b/interface/khronos/common/khrn_client.c
+@@ -54,6 +54,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "applications/vmcs/khronos/khronos_server.h"
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
++
+ VCOS_LOG_CAT_T khrn_client_log = VCOS_LOG_INIT("khrn_client", VCOS_LOG_WARN);
+ 
+ /*
+@@ -142,6 +146,10 @@ void client_try_unload_server(CLIENT_PROCESS_STATE_T *process)
+ bool client_process_state_init(CLIENT_PROCESS_STATE_T *process)
+ {
+    if (!process->inited) {
++#ifdef BUILD_WAYLAND
++      process->wl_global = NULL;
++#endif
++
+       if (!khrn_pointer_map_init(&process->contexts, 64))
+          return false;
+ 
+@@ -194,6 +202,13 @@ bool client_process_state_init(CLIENT_PROCESS_STATE_T *process)
+       }
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++      struct wl_display *wl_display = khrn_platform_get_wl_display();
++      if (wl_display)
++         if (!init_process_wayland(process))
++            return false;
++#endif
++
+       process->inited = true;
+    }
+ 
+diff --git a/interface/khronos/common/khrn_client.h b/interface/khronos/common/khrn_client.h
+index 804039b..615f7b4 100644
+--- a/interface/khronos/common/khrn_client.h
++++ b/interface/khronos/common/khrn_client.h
+@@ -310,6 +310,16 @@ struct CLIENT_PROCESS_STATE {
+ #ifdef RPC_LIBRARY
+    KHRONOS_SERVER_CONNECTION_T khrn_connection;
+ #endif
++
++#ifdef BUILD_WAYLAND
++   /* Client-side Wayland state */
++   struct wl_registry *wl_registry;
++   struct wl_dispmanx *wl_dispmanx;
++   struct wl_event_queue *wl_queue;
++
++   /* Compositor-side Wayland state */
++   struct wl_global *wl_global;
++#endif
+ };
+ 
+ extern bool client_process_state_init(CLIENT_PROCESS_STATE_T *process);
+diff --git a/interface/khronos/common/khrn_client_mangle.h b/interface/khronos/common/khrn_client_mangle.h
+index b3c04f4..b7b21c5 100644
+--- a/interface/khronos/common/khrn_client_mangle.h
++++ b/interface/khronos/common/khrn_client_mangle.h
+@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #define eglReleaseGlobalImageBRCM mangled_eglReleaseGlobalImageBRCM
+ #define eglInitGlobalImageBRCM mangled_eglInitGlobalImageBRCM
+ #define eglTermGlobalImageBRCM mangled_eglTermGlobalImageBRCM
++#define eglBindWaylandDisplayWL mangled_eglBindWaylandDisplayWL
++#define eglUnbindWaylandDisplayWL mangled_eglUnbindWaylandDisplayWL
++#define eglQueryWaylandBufferWL mangled_eglQueryWaylandBufferWL
+ 
+ /* OpenGL ES 1.1 and 2.0 functions */
+ 
+diff --git a/interface/khronos/common/khrn_client_platform.h b/interface/khronos/common/khrn_client_platform.h
+index 1c9da3a..715c67e 100644
+--- a/interface/khronos/common/khrn_client_platform.h
++++ b/interface/khronos/common/khrn_client_platform.h
+@@ -48,6 +48,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "interface/khronos/common/vcos/khrn_client_platform_filler_vcos.h"
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++#include <wayland-client.h>
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -328,4 +332,8 @@ typedef struct
+ 
+ void *platform_wfc_bounce_thread(void *param);
+ 
++#ifdef BUILD_WAYLAND
++struct wl_display *khrn_platform_get_wl_display();
++#endif
++
+ #endif // KHRN_CLIENT_PLATFORM_H
+diff --git a/interface/khronos/common/khrn_client_unmangle.h b/interface/khronos/common/khrn_client_unmangle.h
+index 4f3ce49..84f6ec0 100644
+--- a/interface/khronos/common/khrn_client_unmangle.h
++++ b/interface/khronos/common/khrn_client_unmangle.h
+@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #undef eglReleaseGlobalImageBRCM
+ #undef eglInitGlobalImageBRCM
+ #undef eglTermGlobalImageBRCM
++#undef eglBindWaylandDisplayWL
++#undef eglUnbindWaylandDisplayWL
++#undef eglQueryWaylandBufferWL
+ 
+ /* OpenGL ES 1.1 and 2.0 functions */
+ 
+diff --git a/interface/khronos/common/linux/khrn_client_platform_linux.c b/interface/khronos/common/linux/khrn_client_platform_linux.c
+index 9d43d15..00821d3 100644
+--- a/interface/khronos/common/linux/khrn_client_platform_linux.c
++++ b/interface/khronos/common/linux/khrn_client_platform_linux.c
+@@ -37,6 +37,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "X11/Xlib.h"
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++#include <wayland-client.h>
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#endif
++
+ extern VCOS_LOG_CAT_T khrn_client_log;
+ 
+ extern void vc_vchi_khronos_init();
+@@ -460,13 +465,36 @@ EGLDisplay khrn_platform_set_display_id(EGLNativeDisplayType display_id)
+ 	   return EGL_NO_DISPLAY;
+ }
+ #else
++
++#ifdef BUILD_WAYLAND
++static struct wl_display *hacky_display = NULL;
++#endif
++
+ EGLDisplay khrn_platform_set_display_id(EGLNativeDisplayType display_id)
+ {
+    if (display_id == EGL_DEFAULT_DISPLAY)
+       return (EGLDisplay)1;
+-   else
+-      return EGL_NO_DISPLAY;
++   else {
++#ifdef BUILD_WAYLAND
++      void *first_pointer = *(void **) display_id;
++
++      /* wl_display is a wl_proxy, which is a wl_object.
++       * wl_object's first element points to the interfacetype. */
++      if (first_pointer == &wl_display_interface) {
++         hacky_display = (struct wl_display*)display_id;
++         return (EGLDisplay)1;
++      } else
++#endif
++         return EGL_NO_DISPLAY;
++   }
+ }
++
++#ifdef BUILD_WAYLAND
++struct wl_display *khrn_platform_get_wl_display()
++{
++   return hacky_display;
++}
++#endif
+ #endif
+ 
+ #ifdef WANT_X
+@@ -801,22 +829,81 @@ static EGL_DISPMANX_WINDOW_T *check_default(EGLNativeWindowType win)
+ void platform_get_dimensions(EGLDisplay dpy, EGLNativeWindowType win,
+       uint32_t *width, uint32_t *height, uint32_t *swapchain_count)
+ {
+-   EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
+-   vcos_assert(dwin);
+-   vcos_assert(dwin->width < 1<<16); // sanity check
+-   vcos_assert(dwin->height < 1<<16); // sanity check
+-   *width = dwin->width;
+-   *height = dwin->height;
+-   *swapchain_count = 0;
++#ifdef BUILD_WAYLAND
++   if(khrn_platform_get_wl_display()) {
++      struct wl_egl_window *wl_egl_window = (struct wl_egl_window*)win;
++      *width = wl_egl_window->width;
++      *height = wl_egl_window->height;
++      /* This seems to be used for sync'ing with the VC on buffer creation, but
++         we are managing them on the CPU side */
++      *swapchain_count = 1;
++   } else {
++#endif
++      EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
++      vcos_assert(dwin);
++      vcos_assert(dwin->width < 1<<16); // sanity check
++      vcos_assert(dwin->height < 1<<16); // sanity check
++      *width = dwin->width;
++      *height = dwin->height;
++      *swapchain_count = 0;
++#ifdef BUILD_WAYLAND
++   }
++#endif
+ }
+ 
++#ifdef BUILD_WAYLAND
++static DISPMANX_ELEMENT_HANDLE_T create_dummy_element()
++{
++   DISPMANX_DISPLAY_HANDLE_T display = vc_dispmanx_display_open(0);
++   DISPMANX_UPDATE_HANDLE_T update = vc_dispmanx_update_start(0);
++   DISPMANX_ELEMENT_HANDLE_T element;
++   VC_DISPMANX_ALPHA_T alpha = {DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS, 255, 0};
++   VC_RECT_T src_rect;
++   VC_RECT_T dst_rect;
++
++   src_rect.x = 0;
++   src_rect.y = 0;
++   src_rect.width = 1 << 16;
++   src_rect.height = 1 << 16;
++
++   dst_rect.x = 0;
++   dst_rect.y = 0;
++   dst_rect.width = 1;
++   dst_rect.height = 1;
++
++   element = vc_dispmanx_element_add(update, display, 0/*layer*/, &dst_rect,
++                                     0/*src*/, &src_rect,
++                                     DISPMANX_PROTECTION_NONE, &alpha,
++                                     0/*clamp*/, 0/*transform*/);
++
++   vc_dispmanx_update_submit_sync(update);
++
++   vc_dispmanx_display_close(display);
++
++   return element;
++}
++#endif
++
+ uint32_t platform_get_handle(EGLDisplay dpy, EGLNativeWindowType win)
+ {
+-   EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
+-   vcos_assert(dwin);
+-   vcos_assert(dwin->width < 1<<16); // sanity check
+-   vcos_assert(dwin->height < 1<<16); // sanity check
+-   return dwin->element;
++#ifdef BUILD_WAYLAND
++   if(khrn_platform_get_wl_display()) {
++      struct wl_egl_window *wl_egl_window = (struct wl_egl_window*)win;
++
++      if (wl_egl_window->dummy_element == PLATFORM_WIN_NONE)
++         wl_egl_window->dummy_element = create_dummy_element();
++
++      return wl_egl_window->dummy_element;
++   } else {
++#endif
++      EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
++      vcos_assert(dwin);
++      vcos_assert(dwin->width < 1<<16); // sanity check
++      vcos_assert(dwin->height < 1<<16); // sanity check
++      return dwin->element;
++#ifdef BUILD_WAYLAND
++   }
++#endif
+ }
+ 
+ #endif
+diff --git a/interface/khronos/common/linux/khrn_wayland.c b/interface/khronos/common/linux/khrn_wayland.c
+new file mode 100644
+index 0000000..0e1b9e7
+--- /dev/null
++++ b/interface/khronos/common/linux/khrn_wayland.c
+@@ -0,0 +1,215 @@
++/*
++Copyright (c) 2013, Raspberry Pi Foundation
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++    * Redistributions of source code must retain the above copyright
++      notice, this list of conditions and the following disclaimer.
++    * 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.
++    * Neither the name of the copyright holder nor the
++      names of its contributors may be used to endorse or promote products
++      derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
++*/
++
++#define VCOS_LOG_CATEGORY (&khrn_client_log)
++
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#include "interface/khronos/wayland-dispmanx-client-protocol.h"
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++
++extern VCOS_LOG_CAT_T khrn_client_log;
++
++static void handle_dispmanx_format(void *data, struct wl_dispmanx *dispmanx,
++                                   uint32_t format)
++{
++}
++
++static void handle_dispmanx_allocated(void *data, struct wl_dispmanx *dispmanx,
++                                      struct wl_buffer *wl_buffer,
++                                      uint32_t resource_handle)
++{
++    struct wl_dispmanx_client_buffer *buffer = wl_buffer_get_user_data(wl_buffer);
++
++    buffer->pending_allocation = 0;
++    buffer->resource = resource_handle;
++}
++
++static const struct wl_dispmanx_listener dispmanx_listener = {
++    handle_dispmanx_format,
++    handle_dispmanx_allocated,
++};
++
++static void
++sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
++{
++   int *done = data;
++
++   *done = 1;
++
++   wl_callback_destroy(callback);
++}
++
++static const struct wl_callback_listener sync_listener = {
++   sync_callback
++};
++
++static int
++roundtrip(CLIENT_PROCESS_STATE_T *process)
++{
++   struct wl_display *wl_display = khrn_platform_get_wl_display();
++   struct wl_callback *callback;
++   int done = 0, ret = 0;
++
++   callback = wl_display_sync(wl_display);
++   wl_callback_add_listener(callback, &sync_listener, &done);
++   wl_proxy_set_queue((struct wl_proxy *) callback, process->wl_queue);
++   while (ret != -1 && !done)
++      ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
++
++   if (!done)
++      wl_callback_destroy(callback);
++
++   return ret;
++}
++
++int do_wl_roundtrip()
++{
++   CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE();
++   return roundtrip(process);
++}
++
++static void
++registry_handle_global(void *data, struct wl_registry *registry,
++                       uint32_t name, const char *interface, uint32_t version)
++{
++   struct wl_display *wl_display = khrn_platform_get_wl_display();
++   CLIENT_PROCESS_STATE_T *process = (CLIENT_PROCESS_STATE_T *)data;
++
++   if (strcmp(interface, "wl_dispmanx") == 0) {
++      process->wl_dispmanx = wl_registry_bind(registry, name,
++	       &wl_dispmanx_interface, 1);
++
++      wl_proxy_set_queue((struct wl_proxy *) process->wl_dispmanx,
++                         process->wl_queue);
++      wl_dispmanx_add_listener(process->wl_dispmanx, &dispmanx_listener, wl_display);
++      roundtrip(process);
++   }
++}
++
++static void
++registry_handle_global_remove(void *data, struct wl_registry *registry,
++                              uint32_t name)
++{
++}
++
++static const struct wl_registry_listener registry_listener = {
++	registry_handle_global,
++	registry_handle_global_remove
++};
++
++int
++init_process_wayland(CLIENT_PROCESS_STATE_T *process)
++{
++    struct wl_display *wl_display = khrn_platform_get_wl_display();
++
++    process->wl_queue = wl_display_create_queue(wl_display);
++    if (!process->wl_queue) {
++        vcos_log_error("wl_display_create_queue failed\n");
++        return false;
++    }
++    wl_display_dispatch_pending(wl_display);
++
++    process->wl_registry = wl_display_get_registry(wl_display);
++    if (!process->wl_registry) {
++        vcos_log_error("wl_display_get_registry failed\n");
++        return false;
++    }
++
++    wl_proxy_set_queue((struct wl_proxy *) process->wl_registry,
++    process->wl_queue);
++
++    wl_registry_add_listener(process->wl_registry, &registry_listener, process);
++
++    if (roundtrip(process) < 0 || process->wl_dispmanx == NULL) {
++        vcos_log_error("failed to get wl_dispmanx\n");
++        return false;
++    }
++
++    return true;
++}
++
++#ifndef ALIGN_UP
++#define ALIGN_UP(x,y)  ((x + (y)-1) & ~((y)-1))
++#endif
++
++static void handle_buffer_release(void *data, struct wl_buffer *buffer_wl)
++{
++   struct wl_dispmanx_client_buffer *wl_dispmanx_client_buffer = data;
++   wl_dispmanx_client_buffer->in_use = 0;
++}
++
++static const struct wl_buffer_listener buffer_listener = {
++   handle_buffer_release
++};
++
++struct wl_dispmanx_client_buffer *
++allocate_wl_buffer(struct wl_egl_window *window, KHRN_IMAGE_FORMAT_T color)
++{
++   CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE();
++   struct wl_dispmanx_client_buffer *wl_dispmanx_client_buffer;
++   struct wl_buffer *wl_buffer;
++   uint32_t stride = ALIGN_UP(window->width * 4, 16);
++   uint32_t buffer_height = ALIGN_UP(window->height, 16);
++   enum wl_dispmanx_format color_format;
++   int ret = 0;
++
++   switch (color) {
++   case ABGR_8888:
++      color_format = WL_DISPMANX_FORMAT_ABGR8888;
++      break;
++   case XBGR_8888:
++      color_format = WL_DISPMANX_FORMAT_XBGR8888;
++      break;
++   case RGB_565:
++      color_format = WL_DISPMANX_FORMAT_RGB565;
++      break;
++   default:
++      vcos_log_error("unknown KHRN_IMAGE_FORMAT_T 0x%x\n", color);
++      return NULL;
++   }
++
++   wl_buffer = wl_dispmanx_create_buffer(process->wl_dispmanx, window->width,
++                                         window->height, stride, buffer_height,
++                                         color_format);
++   if (wl_buffer == NULL)
++      return NULL;
++
++   wl_dispmanx_client_buffer = calloc(1, sizeof(struct wl_dispmanx_client_buffer));
++   wl_dispmanx_client_buffer->wl_buffer = wl_buffer;
++   wl_dispmanx_client_buffer->in_use = 0;
++   wl_dispmanx_client_buffer->pending_allocation = 1;
++   wl_dispmanx_client_buffer->width = window->width;
++   wl_dispmanx_client_buffer->height = window->height;
++
++   wl_proxy_set_queue((struct wl_proxy *) wl_buffer, process->wl_queue);
++   wl_buffer_add_listener(wl_buffer, &buffer_listener, wl_dispmanx_client_buffer);
++
++   while (ret != -1 && wl_dispmanx_client_buffer->pending_allocation)
++      ret = do_wl_roundtrip();
++
++   return wl_dispmanx_client_buffer;
++}
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/khronos/common/linux/khrn_wayland.h
+similarity index 56%
+copy from interface/vmcs_host/vc_vchi_dispmanx.h
+copy to interface/khronos/common/linux/khrn_wayland.h
+index b723b76..b9bf08c 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/khronos/common/linux/khrn_wayland.h
+@@ -1,5 +1,5 @@
+ /*
+-Copyright (c) 2012, Broadcom Europe Ltd
++Copyright (c) 2013, Raspberry Pi Foundation
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+@@ -25,45 +25,9 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ 
+-#ifndef VC_VCHI_DISPMANX_H
+-#define VC_VCHI_DISPMANX_H
++#include "interface/khronos/common/khrn_client.h"
+ 
+-#include "interface/peer/vc_vchi_dispmanx_common.h"
++int init_process_wayland(CLIENT_PROCESS_STATE_T *process);
++int do_wl_roundtrip();
+ 
+-#define VC_NUM_HOST_RESOURCES 64
+-#define DISPMANX_MSGFIFO_SIZE 1024
+-#define DISPMANX_CLIENT_NAME MAKE_FOURCC("DISP")
+-#define DISPMANX_NOTIFY_NAME MAKE_FOURCC("UPDH")
+-
+-//Or with command to indicate we don't need a response
+-#define DISPMANX_NO_REPLY_MASK (1<<31)
+-
+-typedef struct {
+-   char     description[32];
+-   uint32_t width;
+-   uint32_t height;
+-   uint32_t aspect_pixwidth;
+-   uint32_t aspect_pixheight;
+-   uint32_t fieldrate_num;
+-   uint32_t fieldrate_denom;
+-   uint32_t fields_per_frame;
+-   uint32_t transform;        
+-} GET_MODES_DATA_T;
+-
+-typedef struct {
+-   int32_t  response;
+-   uint32_t width;
+-   uint32_t height;
+-   uint32_t transform;
+-   uint32_t input_format;
+-} GET_INFO_DATA_T;
+-
+-//Attributes changes flag mask
+-#define ELEMENT_CHANGE_LAYER          (1<<0)
+-#define ELEMENT_CHANGE_OPACITY        (1<<1)
+-#define ELEMENT_CHANGE_DEST_RECT      (1<<2)
+-#define ELEMENT_CHANGE_SRC_RECT       (1<<3)
+-#define ELEMENT_CHANGE_MASK_RESOURCE  (1<<4)
+-#define ELEMENT_CHANGE_TRANSFORM      (1<<5)
+-
+-#endif
++struct wl_dispmanx_client_buffer *allocate_wl_buffer(struct wl_egl_window *window, KHRN_IMAGE_FORMAT_T color);
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 234da65..024f3ed 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -153,6 +153,10 @@ by an attribute value"
+ #include <stdlib.h>
+ #include <string.h>
+ 
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
+ 
+ #include "interface/khronos/egl/egl_client_cr.c"
+ 
+@@ -162,17 +166,6 @@ static void egl_current_release(CLIENT_PROCESS_STATE_T *process, EGL_CURRENT_T *
+ void egl_gl_flush_callback(bool wait);
+ void egl_vg_flush_callback(bool wait);
+ 
+-#include "interface/vmcs_host/vc_dispmanx_types.h"
+-/**HACKHACK - give us the ability to inject a DispmanX 
+- * resource handle into the CreateWindowSurface and 
+- * SwapBuffers calls */ 
+-static DISPMANX_RESOURCE_HANDLE_T next_resource_handle;
+-
+-EGLAPI EGLBoolean EGLAPIENTRY eglSetNextResourceHandle(DISPMANX_RESOURCE_HANDLE_T handle)
+-{
+-   next_resource_handle = handle;
+-}
+-
+ /*
+ TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
+ Also affects global image (and possibly others?)
+@@ -451,6 +444,9 @@ EGLAPI const char EGLAPIENTRY * eglQueryString(EGLDisplay dpy, EGLint name)
+             "EGL_KHR_fence_sync "
+ #endif
+ #endif
++#if EGL_WL_bind_wayland_display
++            "EGL_WL_bind_wayland_display "
++#endif
+             ;
+          break;
+       case EGL_VENDOR:
+@@ -655,8 +651,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
+                                 false,
+                                 EGL_NO_TEXTURE,
+                                 EGL_NO_TEXTURE,
+-                                0, 0,
+-                                next_resource_handle);
++                                0, 0);
+ 
+                if (surface) {
+                   if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -901,7 +896,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
+                              mipmap_texture,
+                              texture_format,
+                              texture_target,
+-                             0, 0, 0);
++                             0, 0);
+ 
+             if (surface) {
+                if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -1043,7 +1038,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
+                                    false,
+                                    EGL_NO_TEXTURE,
+                                    EGL_NO_TEXTURE,
+-                                   pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle, 0);
++                                   pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle);
+ 
+                      if (surface) {
+                         if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -2245,6 +2240,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+    CLIENT_THREAD_STATE_T *thread;
+    CLIENT_PROCESS_STATE_T *process;
+    EGLBoolean result;
++#ifdef BUILD_WAYLAND
++   struct wl_display *wl_display = khrn_platform_get_wl_display();
++#endif
+ 
+    vcos_log_trace("eglSwapBuffers start. dpy=%d. surf=%d.", (int)dpy, (int)surf);
+ 
+@@ -2315,18 +2313,58 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+ 
+                vcos_log_trace("eglSwapBuffers server call");
+ 
+-               if (next_resource_handle)
+-               RPC_CALL7(eglIntSwapBuffers_impl,
+-                     thread,
+-                     EGLINTSWAPBUFFERS_ID_V2,
+-                     RPC_UINT(surface->serverbuffer),
+-                     RPC_UINT(surface->width),
+-                     RPC_UINT(surface->height),
+-                     RPC_UINT(surface->internal_handle),
+-                     RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
+-                     RPC_UINT(khrn_platform_get_window_position(surface->win)),
+-                     RPC_INT(next_resource_handle));
+-               else
++#ifdef BUILD_WAYLAND
++               if (wl_display) {
++                  struct wl_egl_window *wl_egl_window = surface->wl_egl_window;
++                  struct wl_dispmanx_client_buffer *buffer_temp;
++                  uint32_t configid;
++                  KHRN_IMAGE_FORMAT_T color;
++                  int ret = 0;
++
++                  buffer_temp = surface->front_wl_buffer;
++                  surface->front_wl_buffer = surface->back_wl_buffer;
++                  surface->back_wl_buffer = buffer_temp;
++
++                  configid = egl_config_to_id(surface->config);
++                  color = egl_config_get_color_format(configid);
++
++                  if (surface->back_wl_buffer == NULL)
++                     surface->back_wl_buffer = allocate_wl_buffer(wl_egl_window, color);
++                  else if (surface->back_wl_buffer->width != width ||
++                           surface->back_wl_buffer->height != height) {
++
++                     struct wl_dispmanx_client_buffer *buffer;
++
++                     wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
++                     free(surface->back_wl_buffer);
++
++                     buffer = allocate_wl_buffer(wl_egl_window, color);
++                     surface->back_wl_buffer = buffer;
++                  }
++
++                  RPC_CALL7(eglIntSwapBuffers_impl,
++                        thread,
++                        EGLINTSWAPBUFFERS_ID_V2,
++                        RPC_UINT(surface->serverbuffer),
++                        RPC_UINT(surface->width),
++                        RPC_UINT(surface->height),
++                        RPC_UINT(surface->internal_handle),
++                        RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
++                        RPC_UINT(khrn_platform_get_window_position(surface->win)),
++                        RPC_INT(surface->back_wl_buffer->resource));
++
++                  surface->front_wl_buffer->in_use = 1;
++                  wl_surface_attach(wl_egl_window->wl_surface,
++                                    surface->front_wl_buffer->wl_buffer,
++                                    0, 0);
++                  wl_surface_damage(wl_egl_window->wl_surface, 0, 0,
++                                    surface->width, surface->height);
++                  wl_surface_commit(wl_egl_window->wl_surface);
++
++                  while(ret != -1 && surface->back_wl_buffer->in_use)
++                     ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
++               } else
++#endif
+                RPC_CALL6(eglIntSwapBuffers_impl,
+                      thread,
+                      EGLINTSWAPBUFFERS_ID,
+diff --git a/interface/khronos/egl/egl_client_get_proc.c b/interface/khronos/egl/egl_client_get_proc.c
+index 4cfa9ff..6a715af 100644
+--- a/interface/khronos/egl/egl_client_get_proc.c
++++ b/interface/khronos/egl/egl_client_get_proc.c
+@@ -254,6 +254,17 @@ EGLAPI void EGLAPIENTRY (* eglGetProcAddress(const char *procname))(void)
+       return (void(*)(void))eglQueryGlobalImageBRCM;
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++#if EGL_WL_bind_wayland_display
++   if (!strcmp(procname, "eglBindWaylandDisplayWL"))
++      return (void(*)(void))eglBindWaylandDisplayWL;
++   if (!strcmp(procname, "eglUnbindWaylandDisplayWL"))
++      return (void(*)(void))eglUnbindWaylandDisplayWL;
++   if (!strcmp(procname, "eglQueryWaylandBufferWL"))
++      return (void(*)(void))eglQueryWaylandBufferWL;
++#endif
++#endif
++
+    return (void(*)(void)) NULL;
+ }
+ 
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 0dc10e2..49cf7e5 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -46,6 +46,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "interface/khronos/egl/egl_int_impl.h"
+ #endif
+ 
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
++
+ #include <stdlib.h>
+ 
+ 
+@@ -314,8 +319,7 @@ EGL_SURFACE_T *egl_surface_create(
+    EGLenum texture_format,
+    EGLenum texture_target,
+    EGLNativePixmapType pixmap,
+-   const uint32_t *pixmap_server_handle,
+-   DISPMANX_RESOURCE_HANDLE_T next_resource_handle)
++   const uint32_t *pixmap_server_handle)
+ {
+    KHRN_IMAGE_FORMAT_T color;
+    KHRN_IMAGE_FORMAT_T depth;
+@@ -326,6 +330,10 @@ EGL_SURFACE_T *egl_surface_create(
+    EGLint   config_depth_bits;
+    EGLint   config_stencil_bits;
+    CLIENT_THREAD_STATE_T *thread = CLIENT_GET_THREAD_STATE();
++#ifdef BUILD_WAYLAND
++   struct wl_display *wl_display = khrn_platform_get_wl_display();
++   DISPMANX_RESOURCE_HANDLE_T resource;
++#endif
+ 
+    EGL_SURFACE_T *surface = egl_surface_pool_alloc();
+ 
+@@ -390,6 +398,18 @@ EGL_SURFACE_T *egl_surface_create(
+ 
+    vcos_assert(color != IMAGE_FORMAT_INVALID);
+ 
++#ifdef BUILD_WAYLAND
++   if (type == WINDOW && wl_display) {
++      surface->wl_egl_window = (struct wl_egl_window*)win;
++      surface->back_wl_buffer = allocate_wl_buffer(
++            surface->wl_egl_window, color);
++      resource = surface->back_wl_buffer->resource;
++   } else {
++      surface->wl_egl_window = NULL;
++      resource = DISPMANX_NO_HANDLE;
++   }
++#endif
++
+ #ifdef KHRONOS_EGL_PLATFORM_OPENWFC
+    // Create stream for this window
+    if(type != PBUFFER)
+@@ -474,7 +494,8 @@ EGL_SURFACE_T *egl_surface_create(
+ #endif
+          uint32_t results[3];
+ 
+-         if (next_resource_handle)
++#ifdef BUILD_WAYLAND
++         if (resource != DISPMANX_NO_HANDLE)
+          RPC_CALL16_OUT_CTRL(eglIntCreateSurface_impl,
+                              thread,
+                              EGLINTCREATESURFACE_ID_V2,
+@@ -492,9 +513,10 @@ EGL_SURFACE_T *egl_surface_create(
+                              RPC_UINT(config_stencil_bits),
+                              RPC_UINT(sem_name),
+                              RPC_UINT(type),
+-                             RPC_INT(next_resource_handle),
++                             RPC_INT(resource),
+                              results);
+          else
++#endif
+          RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
+                              thread,
+                              EGLINTCREATESURFACE_ID,
+@@ -663,6 +685,18 @@ void egl_surface_free(EGL_SURFACE_T *surface)
+    if( surface->type == WINDOW ) {
+       vcos_log_trace("egl_surface_free: calling platform_destroy_winhandle...");
+       platform_destroy_winhandle( surface->win, surface->internal_handle );
++
++#ifdef BUILD_WAYLAND
++      if (surface->back_wl_buffer) {
++         wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
++         free(surface->back_wl_buffer);
++      }
++
++      if (surface->front_wl_buffer) {
++         wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
++         free(surface->front_wl_buffer);
++      }
++#endif
+    }
+    /* return value ignored -- read performed to ensure blocking. we want this to
+     * block so clients can safely destroy the surface's window as soon as the
+diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
+index b5bf70a..e328b77 100644
+--- a/interface/khronos/egl/egl_client_surface.h
++++ b/interface/khronos/egl/egl_client_surface.h
+@@ -288,6 +288,41 @@ typedef struct {
+       type == PIXMAP
+    */
+    bool server_owned;
++
++#ifdef BUILD_WAYLAND
++   /*
++      wl_egl_window
++
++      Validity:
++      type == WINDOW
++
++      Invariant:
++      wayland EGL window
++   */
++   struct wl_egl_window *wl_egl_window;
++
++   /*
++      front_wl_buffer
++
++      Validity:
++      type == WINDOW
++
++      Invariant:
++      client-side information about the wl_buffer in the front
++   */
++   struct wl_dispmanx_client_buffer *front_wl_buffer;
++
++   /*
++      back_wl_buffer
++
++      Validity:
++      type == WINDOW
++
++      Invariant:
++      client-side information about the wl_buffer in the back
++   */
++   struct wl_dispmanx_client_buffer *back_wl_buffer;
++#endif
+ } EGL_SURFACE_T;
+ 
+ extern bool egl_surface_check_attribs(
+@@ -322,8 +357,7 @@ extern EGL_SURFACE_T *egl_surface_create(
+    EGLenum texture_format,
+    EGLenum texture_target,
+    EGLNativePixmapType pixmap,
+-   const uint32_t *pixmap_server_handle,
+-   DISPMANX_RESOURCE_HANDLE_T next_resource_handle);
++   const uint32_t *pixmap_server_handle);
+ extern EGL_SURFACE_T *egl_surface_from_vg_image(
+    VGImage vg_handle,
+    EGLSurface name,
+diff --git a/interface/khronos/egl/egl_int_impl.h b/interface/khronos/egl/egl_int_impl.h
+index 51b3580..6863a3b 100644
+--- a/interface/khronos/egl/egl_int_impl.h
++++ b/interface/khronos/egl/egl_int_impl.h
+@@ -57,7 +57,7 @@ FN(int, eglIntCreateSurface_impl, (
+    uint32_t sem,
+    uint32_t type,
+    uint32_t *results,
+-   DISPMANX_RESOURCE_HANDLE_T next_resource_handle))
++   DISPMANX_RESOURCE_HANDLE_T resource_handle))
+ 
+ FN(int, eglIntCreatePbufferFromVGImage_impl, (
+    VGImage vg_handle,
+diff --git a/interface/khronos/ext/egl_wayland.c b/interface/khronos/ext/egl_wayland.c
+new file mode 100644
+index 0000000..5730743
+--- /dev/null
++++ b/interface/khronos/ext/egl_wayland.c
+@@ -0,0 +1,246 @@
++/*
++Copyright (c) 2013, Raspberry Pi Foundation
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++    * Redistributions of source code must retain the above copyright
++      notice, this list of conditions and the following disclaimer.
++    * 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.
++    * Neither the name of the copyright holder nor the
++      names of its contributors may be used to endorse or promote products
++      derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
++*/
++
++#include "interface/khronos/common/khrn_client_mangle.h"
++#include "interface/khronos/common/khrn_client_rpc.h"
++
++#include "interface/khronos/ext/egl_khr_sync_client.h"
++#include "interface/khronos/include/EGL/egl.h"
++#include "interface/khronos/include/EGL/eglext.h"
++
++#include "interface/vmcs_host/vc_vchi_dispmanx.h"
++
++#include <wayland-server.h>
++#include "interface/khronos/wayland-dispmanx-server-protocol.h"
++
++static void
++destroy_buffer(struct wl_resource *resource)
++{
++   struct wl_dispmanx_server_buffer *buffer = wl_resource_get_user_data(resource);
++
++   if(!buffer->in_use)
++      vc_dispmanx_resource_delete(buffer->handle);
++
++   free(buffer);
++}
++
++static void
++buffer_destroy(struct wl_client *client, struct wl_resource *resource)
++{
++   wl_resource_destroy(resource);
++}
++
++static const struct wl_buffer_interface dispmanx_buffer_interface = {
++   buffer_destroy
++};
++
++static VC_IMAGE_TYPE_T
++get_vc_format(enum wl_dispmanx_format format)
++{
++	/* XXX: The app is likely to have been premultiplying in its shaders,
++	 * but the VC scanout hardware on the RPi cannot mix premultiplied alpha
++	 * channel with the element's alpha.
++	 */
++	switch (format) {
++	case WL_DISPMANX_FORMAT_ABGR8888:
++		return VC_IMAGE_RGBA32;
++	case WL_DISPMANX_FORMAT_XBGR8888:
++		return VC_IMAGE_BGRX8888;
++	case WL_DISPMANX_FORMAT_RGB565:
++		return VC_IMAGE_RGB565;
++	default:
++		/* invalid format */
++		return VC_IMAGE_MIN;
++	}
++}
++
++static void
++dispmanx_create_buffer(struct wl_client *client, struct wl_resource *resource,
++                       uint32_t id, int32_t width, int32_t height,
++                       uint32_t stride, uint32_t buffer_height, uint32_t format)
++{
++   struct wl_dispmanx_server_buffer *buffer;
++   VC_IMAGE_TYPE_T vc_format = get_vc_format(format);
++   uint32_t dummy;
++
++   if(vc_format == VC_IMAGE_MIN) {
++      wl_resource_post_error(resource,
++                             WL_DISPMANX_ERROR_INVALID_FORMAT,
++                             "invalid format");
++      return;
++   }
++
++   buffer = calloc(1, sizeof *buffer);
++   if (buffer == NULL) {
++      wl_resource_post_no_memory(resource);
++      return;
++   }
++
++   buffer->handle = vc_dispmanx_resource_create(vc_format,
++                                                width | (stride << 16),
++                                                height | (buffer_height << 16),
++                                                &dummy);
++   if(buffer->handle == DISPMANX_NO_HANDLE) {
++      wl_resource_post_error(resource,
++                             WL_DISPMANX_ERROR_ALLOC_FAILED,
++                             "allocation failed");
++      free(buffer);
++      return;
++   }
++
++   buffer->width = width;
++   buffer->height = height;
++   buffer->format = format;
++
++   buffer->resource = wl_resource_create(resource->client, &wl_buffer_interface,
++                                         1, id);
++   if (!buffer->resource) {
++      wl_resource_post_no_memory(resource);
++      vc_dispmanx_resource_delete(buffer->handle);
++      free(buffer);
++      return;
++   }
++
++   wl_resource_set_implementation(buffer->resource,
++				       (void (**)(void)) &dispmanx_buffer_interface,
++				       buffer, destroy_buffer);
++
++   wl_dispmanx_send_buffer_allocated(resource, buffer->resource,
++                                     buffer->handle);
++}
++
++static const struct wl_dispmanx_interface dispmanx_interface = {
++   dispmanx_create_buffer,
++};
++
++static void
++bind_dispmanx(struct wl_client *client, void *data, uint32_t version, uint32_t id)
++{
++   struct wl_resource *resource;
++
++   resource = wl_resource_create(client, &wl_dispmanx_interface, 1, id);
++   wl_resource_set_implementation(resource, &dispmanx_interface, NULL, NULL);
++
++   wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++                          WL_DISPMANX_FORMAT_ARGB8888);
++
++   wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++                          WL_DISPMANX_FORMAT_XRGB8888);
++
++   wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++                          WL_DISPMANX_FORMAT_ABGR8888);
++
++   wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++                          WL_DISPMANX_FORMAT_XBGR8888);
++
++   wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++                          WL_DISPMANX_FORMAT_RGB565);
++}
++
++EGLBoolean EGLAPIENTRY
++eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display)
++{
++   CLIENT_THREAD_STATE_T *thread;
++   CLIENT_PROCESS_STATE_T *process;
++
++   if (!CLIENT_LOCK_AND_GET_STATES(dpy, &thread, &process))
++      return EGL_FALSE;
++
++   if (process->wl_global != NULL)
++      goto error;
++
++   process->wl_global = wl_global_create(display, &wl_dispmanx_interface, 1,
++                                         NULL, bind_dispmanx);
++   if (process->wl_global == NULL)
++      goto error;
++
++   return EGL_TRUE;
++
++error:
++   CLIENT_UNLOCK();
++   return EGL_FALSE;
++}
++
++EGLBoolean EGLAPIENTRY
++eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display)
++{
++   CLIENT_THREAD_STATE_T *thread;
++   CLIENT_PROCESS_STATE_T *process;
++
++   if (!CLIENT_LOCK_AND_GET_STATES(dpy, &thread, &process))
++      return EGL_FALSE;
++
++   wl_global_destroy(process->wl_global);
++   process->wl_global = NULL;
++
++   CLIENT_UNLOCK();
++
++   return EGL_TRUE;
++}
++
++static int
++get_egl_format(enum wl_dispmanx_format format)
++{
++	switch (format) {
++	case WL_DISPMANX_FORMAT_ABGR8888:
++		return EGL_TEXTURE_RGBA;
++	case WL_DISPMANX_FORMAT_XBGR8888:
++		return EGL_TEXTURE_RGB;
++	case WL_DISPMANX_FORMAT_RGB565:
++		return EGL_TEXTURE_RGB;
++	default:
++		/* invalid format */
++		return EGL_NO_TEXTURE;
++	}
++}
++
++EGLBoolean EGLAPIENTRY
++eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *_buffer,
++         EGLint attribute, EGLint *value)
++{
++   struct wl_dispmanx_server_buffer *buffer = wl_resource_get_user_data(_buffer);
++
++   if (wl_resource_instance_of(_buffer, &wl_dispmanx_interface,
++                               &dispmanx_buffer_interface))
++      return EGL_FALSE;
++
++   switch (attribute) {
++   case EGL_TEXTURE_FORMAT:
++      *value = get_egl_format(buffer->format);
++      if (*value == EGL_NO_TEXTURE)
++         return EGL_FALSE;
++      return EGL_TRUE;
++   case EGL_WIDTH:
++      *value = buffer->width;
++      return EGL_TRUE;
++   case EGL_HEIGHT:
++      *value = buffer->height;
++      return EGL_TRUE;
++   }
++
++   return EGL_FALSE;
++}
+diff --git a/interface/khronos/include/EGL/eglext.h b/interface/khronos/include/EGL/eglext.h
+index 89a3369..d7e5ba7 100755
+--- a/interface/khronos/include/EGL/eglext.h
++++ b/interface/khronos/include/EGL/eglext.h
+@@ -191,6 +191,29 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EG
+ #endif
+ 
+ 
++#ifndef EGL_WL_bind_wayland_display
++#define EGL_WL_bind_wayland_display 1
++
++#define EGL_WAYLAND_BUFFER_WL		0x31D5 /* eglCreateImageKHR target */
++#define EGL_WAYLAND_PLANE_WL		0x31D6 /* eglCreateImageKHR target */
++#define EGL_TEXTURE_Y_U_V_WL            0x31D7
++#define EGL_TEXTURE_Y_UV_WL             0x31D8
++#define EGL_TEXTURE_Y_XUXV_WL           0x31D9
++
++struct wl_display;
++struct wl_resource;
++#ifdef EGL_EGLEXT_PROTOTYPES
++EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
++EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
++EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
++#endif
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
++
++#endif
++
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/interface/khronos/wayland-egl/wayland-egl-priv.h b/interface/khronos/wayland-egl/wayland-egl-priv.h
+new file mode 100644
+index 0000000..8e38d36
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl-priv.h
+@@ -0,0 +1,53 @@
++/* Copied from Mesa */
++
++#ifndef _WAYLAND_EGL_PRIV_H
++#define _WAYLAND_EGL_PRIV_H
++
++#ifdef  __cplusplus
++extern "C" {
++#endif
++
++/* GCC visibility */
++#if defined(__GNUC__) && __GNUC__ >= 4
++#define WL_EGL_EXPORT __attribute__ ((visibility("default")))
++#else
++#define WL_EGL_EXPORT
++#endif
++
++#include "interface/vmcs_host/vc_dispmanx.h"
++#include "interface/khronos/egl/egl_client_surface.h"
++
++#include <wayland-client.h>
++
++struct wl_dispmanx_client_buffer {
++	struct wl_buffer *wl_buffer;
++	DISPMANX_RESOURCE_HANDLE_T resource;
++
++	int pending_allocation;
++	int in_use;
++	int width;
++	int height;
++};
++
++struct wl_egl_window {
++	struct wl_surface *wl_surface;
++
++	int width;
++	int height;
++	int dx;
++	int dy;
++
++	int attached_width;
++	int attached_height;
++
++	/* XXX: The VC side seems to expect a valid element handle to be
++	   passed to eglIntCreateSurface_impl and/or eglIntSwapBuffers_impl,
++	   even for host-managed surfaces. */
++	DISPMANX_ELEMENT_HANDLE_T dummy_element;
++};
++
++#ifdef  __cplusplus
++}
++#endif
++
++#endif
+diff --git a/interface/khronos/wayland-egl/wayland-egl.c b/interface/khronos/wayland-egl/wayland-egl.c
+new file mode 100644
+index 0000000..b8f050b
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl.c
+@@ -0,0 +1,59 @@
++/* Copied from Mesa */
++
++#include <stdlib.h>
++
++#include <wayland-client.h>
++#include <wayland-egl.h>
++#include "wayland-egl-priv.h"
++
++WL_EGL_EXPORT void
++wl_egl_window_resize(struct wl_egl_window *egl_window,
++		     int width, int height,
++		     int dx, int dy)
++{
++        if (egl_window->width == width &&
++	    egl_window->height == height &&
++	    egl_window->dx == dx &&
++	    egl_window->dy == dy)
++		return;
++
++	egl_window->width = width;
++	egl_window->height = height;
++	egl_window->dx = dx;
++	egl_window->dy = dy;
++}
++
++WL_EGL_EXPORT struct wl_egl_window *
++wl_egl_window_create(struct wl_surface *surface,
++		     int width, int height)
++{
++	struct wl_egl_window *egl_window;
++
++	egl_window = calloc(1, sizeof *egl_window);
++	if (!egl_window)
++		return NULL;
++
++	egl_window->wl_surface = surface;
++	wl_egl_window_resize(egl_window, width, height, 0, 0);
++	egl_window->attached_width  = 0;
++	egl_window->attached_height = 0;
++	egl_window->dummy_element = PLATFORM_WIN_NONE;
++
++	return egl_window;
++}
++
++WL_EGL_EXPORT void
++wl_egl_window_destroy(struct wl_egl_window *egl_window)
++{
++	free(egl_window);
++}
++
++WL_EGL_EXPORT void
++wl_egl_window_get_attached_size(struct wl_egl_window *egl_window,
++				int *width, int *height)
++{
++	if (width)
++		*width = egl_window->attached_width;
++	if (height)
++		*height = egl_window->attached_height;
++}
+diff --git a/interface/khronos/wayland-egl/wayland-egl.pc.in b/interface/khronos/wayland-egl/wayland-egl.pc.in
+new file mode 100644
+index 0000000..8bafc15
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
+@@ -0,0 +1,10 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include
++
++Name: wayland-egl
++Description: VideoCore wayland-egl library
++Version: @PROJECT_APIVER@
++Libs: -L${libdir} -lwayland-egl
++Cflags: -I${includedir}
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index e0c6e13..35150ed 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -9,13 +9,24 @@ add_definitions(-fno-strict-aliasing)
+ 
+ include_directories(${VMCS_TARGET}/vcfiled)
+ 
+-add_library(vchostif
+-            ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
+-            vc_vchi_gencmd.c vc_vchi_filesys.c
+-            vc_vchi_tvservice.c vc_vchi_cecservice.c
+-            vc_vchi_dispmanx.c vc_service_common.c)
++set(VCHOSTIF_SOURCE
++    ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
++    vc_vchi_gencmd.c vc_vchi_filesys.c
++    vc_vchi_tvservice.c vc_vchi_cecservice.c
++    vc_vchi_dispmanx.c vc_service_common.c)
+ #            ${VMCS_TARGET}/vmcs_main.c
+ #  vc_vchi_haud.c
++
++if (BUILD_WAYLAND)
++wayland_add_protocol_server(
++    VCHOSTIF_SOURCE
++    ../../interface/wayland/dispmanx.xml
++    dispmanx
++)
++endif ()
++
++add_library(vchostif ${VCHOSTIF_SOURCE})
++
+ #add_library(bufman            vc_vchi_bufman.c            )
+ 
+ # OpenMAX/IL component service
+diff --git a/interface/vmcs_host/vc_dispmanx.h b/interface/vmcs_host/vc_dispmanx.h
+index 37fdae1..fe3619a 100755
+--- a/interface/vmcs_host/vc_dispmanx.h
++++ b/interface/vmcs_host/vc_dispmanx.h
+@@ -39,6 +39,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
++
++#ifdef BUILD_WAYLAND
++struct wl_resource;
++#endif
++
+ // Same function as above, to aid migration of code.
+ VCHPRE_ int VCHPOST_ vc_dispman_init( void );
+ // Stop the service from being used
+@@ -135,6 +140,11 @@ VCHPRE_ int VCHPOST_ vc_dispmanx_resource_set_palette( DISPMANX_RESOURCE_HANDLE_
+ // Start triggering callbacks synced to vsync
+ VCHPRE_ int VCHPOST_ vc_dispmanx_vsync_callback( DISPMANX_DISPLAY_HANDLE_T display, DISPMANX_CALLBACK_FUNC_T cb_func, void *cb_arg );
+ 
++#ifdef BUILD_WAYLAND
++VCHPRE_ DISPMANX_RESOURCE_HANDLE_T VCHPOST_ vc_dispmanx_get_handle_from_wl_buffer( struct wl_resource *_buffer );
++
++VCHPRE_ void VCHPOST_ vc_dispmanx_set_wl_buffer_in_use( struct wl_resource *_buffer, int in_use );
++#endif
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
+index d188068..3e668f5 100755
+--- a/interface/vmcs_host/vc_vchi_dispmanx.c
++++ b/interface/vmcs_host/vc_vchi_dispmanx.c
+@@ -1316,3 +1316,45 @@ static void *dispmanx_notify_func( void *arg ) {
+    }
+    return 0;
+ }
++
++
++#ifdef BUILD_WAYLAND
++/***********************************************************
++ * Name: vc_dispmanx_get_handle_from_wl_buffer
++ *
++ * Arguments:
++ *       struct wl_resource *_buffer
++ *
++ * Description: Return the handle of the resource associated to this Wayland buffer
++ *
++ * Returns: A resource handle
++ *
++ ***********************************************************/
++VCHPRE_ DISPMANX_RESOURCE_HANDLE_T VCHPOST_ vc_dispmanx_get_handle_from_wl_buffer( struct wl_resource *_buffer )
++{
++	struct wl_dispmanx_server_buffer *buffer = (struct wl_dispmanx_server_buffer*)_buffer->data;
++	if (!buffer)
++		return DISPMANX_NO_HANDLE;
++
++	return buffer->handle;
++}
++
++/***********************************************************
++ * Name: vc_dispmanx_set_wl_buffer_in_use
++ *
++ * Arguments:
++ *       struct wl_resource *_buffer
++ *       int in_use
++ *
++ * Description: Mark this Wayland buffer as being in use by the compositor
++ *
++ ***********************************************************/
++VCHPRE_ void VCHPOST_ vc_dispmanx_set_wl_buffer_in_use( struct wl_resource *_buffer, int in_use )
++{
++	struct wl_dispmanx_server_buffer *buffer = (struct wl_dispmanx_server_buffer*)_buffer->data;
++	if (!buffer)
++		return;
++
++	buffer->in_use = in_use;
++}
++#endif
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/vmcs_host/vc_vchi_dispmanx.h
+index b723b76..f0bae30 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/vmcs_host/vc_vchi_dispmanx.h
+@@ -66,4 +66,19 @@ typedef struct {
+ #define ELEMENT_CHANGE_MASK_RESOURCE  (1<<4)
+ #define ELEMENT_CHANGE_TRANSFORM      (1<<5)
+ 
++#ifdef BUILD_WAYLAND
++/* XXX: This should be in a private header that can be included from EGL and vc_* */
++#include <wayland-server.h>
++#include "interface/vmcs_host/wayland-dispmanx-server-protocol.h"
++struct wl_dispmanx_server_buffer {
++	struct wl_resource *resource;
++	struct wl_dispmanx *dispmanx;
++	enum wl_dispmanx_format format;
++	DISPMANX_RESOURCE_HANDLE_T handle;
++	int32_t width;
++	int32_t height;
++	int in_use;
++};
++#endif
++
+ #endif
+diff --git a/interface/wayland/dispmanx.xml b/interface/wayland/dispmanx.xml
+new file mode 100644
+index 0000000..c18626d
+--- /dev/null
++++ b/interface/wayland/dispmanx.xml
+@@ -0,0 +1,123 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<protocol name="dispmanx">
++
++  <copyright>
++    Copyright © 2008-2011 Kristian Høgsberg
++    Copyright © 2010-2011 Intel Corporation
++    Copyright © 2013 Raspberry Pi Foundation
++
++    Permission to use, copy, modify, distribute, and sell this
++    software and its documentation for any purpose is hereby granted
++    without fee, provided that\n 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>
++
++  <!-- DispManX support. This object is created by the server and published
++       using the display's global event. -->
++  <interface name="wl_dispmanx" version="1">
++    <enum name="error">
++      <entry name="alloc_failed" value="0"/>
++      <entry name="invalid_format" value="1"/>
++    </enum>
++
++    <enum name="format">
++      <!-- The pixel format codes match the #defines in drm_fourcc.h.
++           The formats actually supported by the compositor will be
++           reported by the format event. -->
++      <entry name="c8" value="0x20203843"/>
++      <entry name="rgb332" value="0x38424752"/>
++      <entry name="bgr233" value="0x38524742"/>
++      <entry name="xrgb4444" value="0x32315258"/>
++      <entry name="xbgr4444" value="0x32314258"/>
++      <entry name="rgbx4444" value="0x32315852"/>
++      <entry name="bgrx4444" value="0x32315842"/>
++      <entry name="argb4444" value="0x32315241"/>
++      <entry name="abgr4444" value="0x32314241"/>
++      <entry name="rgba4444" value="0x32314152"/>
++      <entry name="bgra4444" value="0x32314142"/>
++      <entry name="xrgb1555" value="0x35315258"/>
++      <entry name="xbgr1555" value="0x35314258"/>
++      <entry name="rgbx5551" value="0x35315852"/>
++      <entry name="bgrx5551" value="0x35315842"/>
++      <entry name="argb1555" value="0x35315241"/>
++      <entry name="abgr1555" value="0x35314241"/>
++      <entry name="rgba5551" value="0x35314152"/>
++      <entry name="bgra5551" value="0x35314142"/>
++      <entry name="rgb565" value="0x36314752"/>
++      <entry name="bgr565" value="0x36314742"/>
++      <entry name="rgb888" value="0x34324752"/>
++      <entry name="bgr888" value="0x34324742"/>
++      <entry name="xrgb8888" value="0x34325258"/>
++      <entry name="xbgr8888" value="0x34324258"/>
++      <entry name="rgbx8888" value="0x34325852"/>
++      <entry name="bgrx8888" value="0x34325842"/>
++      <entry name="argb8888" value="0x34325241"/>
++      <entry name="abgr8888" value="0x34324241"/>
++      <entry name="rgba8888" value="0x34324152"/>
++      <entry name="bgra8888" value="0x34324142"/>
++      <entry name="xrgb2101010" value="0x30335258"/>
++      <entry name="xbgr2101010" value="0x30334258"/>
++      <entry name="rgbx1010102" value="0x30335852"/>
++      <entry name="bgrx1010102" value="0x30335842"/>
++      <entry name="argb2101010" value="0x30335241"/>
++      <entry name="abgr2101010" value="0x30334241"/>
++      <entry name="rgba1010102" value="0x30334152"/>
++      <entry name="bgra1010102" value="0x30334142"/>
++      <entry name="yuyv" value="0x56595559"/>
++      <entry name="yvyu" value="0x55595659"/>
++      <entry name="uyvy" value="0x59565955"/>
++      <entry name="vyuy" value="0x59555956"/>
++      <entry name="ayuv" value="0x56555941"/>
++      <entry name="nv12" value="0x3231564e"/>
++      <entry name="nv21" value="0x3132564e"/>
++      <entry name="nv16" value="0x3631564e"/>
++      <entry name="nv61" value="0x3136564e"/>
++      <entry name="yuv410" value="0x39565559"/>
++      <entry name="yvu410" value="0x39555659"/>
++      <entry name="yuv411" value="0x31315559"/>
++      <entry name="yvu411" value="0x31315659"/>
++      <entry name="yuv420" value="0x32315559"/>
++      <entry name="yvu420" value="0x32315659"/>
++      <entry name="yuv422" value="0x36315559"/>
++      <entry name="yvu422" value="0x36315659"/>
++      <entry name="yuv444" value="0x34325559"/>
++      <entry name="yvu444" value="0x34325659"/>
++    </enum>
++
++    <event name="format">
++      <arg name="format" type="uint"/>
++    </event>
++
++    <!-- Create a wayland buffer for the DispManX resource. -->
++    <request name="create_buffer">
++      <arg name="id" type="new_id" interface="wl_buffer"/>
++      <arg name="width" type="int"/>
++      <arg name="height" type="int"/>
++      <arg name="stride" type="uint"/>
++      <arg name="buffer_height" type="uint"/>
++      <arg name="format" type="uint"/>
++    </request>
++
++    <event name="buffer_allocated">
++      <arg name="buffer" type="object" interface="wl_buffer"/>
++      <arg name="handle" type="uint"/>
++    </event>
++  </interface>
++
++</protocol>
+diff --git a/makefiles/cmake/Wayland.cmake b/makefiles/cmake/Wayland.cmake
+new file mode 100644
+index 0000000..ad90d30
+--- /dev/null
++++ b/makefiles/cmake/Wayland.cmake
+@@ -0,0 +1,72 @@
++#=============================================================================
++# Copyright (C) 2012-2013 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
++# All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions
++# are met:
++#
++# * Redistributions of source code must retain the above copyright
++#   notice, this list of conditions and the following disclaimer.
++#
++# * 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.
++#
++# * Neither the name of Pier Luigi Fiorini nor the names of his
++#   contributors may be used to endorse or promote products derived
++#   from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "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 COPYRIGHT
++# HOLDER OR CONTRIBUTORS 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.
++#=============================================================================
++
++find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
++
++# wayland_add_protocol_client(outfiles inputfile basename)
++function(WAYLAND_ADD_PROTOCOL_CLIENT _sources _protocol _basename)
++    if(NOT WAYLAND_SCANNER_EXECUTABLE)
++        message(FATAL "The wayland-scanner executable has nto been found on your system. You must install it.")
++    endif()
++
++    get_filename_component(_infile ${_protocol} ABSOLUTE)
++    set(_client_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-client-protocol.h")
++    set(_code "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-protocol.c")
++
++    add_custom_command(OUTPUT "${_client_header}"
++        COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header < ${_infile} > ${_client_header}
++        DEPENDS ${_infile} VERBATIM)
++
++    add_custom_command(OUTPUT "${_code}"
++        COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code < ${_infile} > ${_code}
++        DEPENDS ${_infile} VERBATIM)
++
++    list(APPEND ${_sources} "${_client_header}" "${_code}")
++    set(${_sources} ${${_sources}} PARENT_SCOPE)
++endfunction()
++
++# wayland_add_protocol_server(outfiles inputfile basename)
++function(WAYLAND_ADD_PROTOCOL_SERVER _sources _protocol _basename)
++    if(NOT WAYLAND_SCANNER_EXECUTABLE)
++        message(FATAL "The wayland-scanner executable has nto been found on your system. You must install it.")
++    endif()
++
++    get_filename_component(_infile ${_protocol} ABSOLUTE)
++    set(_server_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-server-protocol.h")
++
++    add_custom_command(OUTPUT "${_server_header}"
++        COMMAND ${WAYLAND_SCANNER_EXECUTABLE} server-header < ${_infile} > ${_server_header}
++        DEPENDS ${_infile} VERBATIM)
++
++    list(APPEND ${_sources} "${_server_header}")
++    set(${_sources} ${${_sources}} PARENT_SCOPE)
++endfunction()
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch
new file mode 100644
index 0000000..11befc3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch
new file mode 100644
index 0000000..2a44e26
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch
@@ -0,0 +1,28 @@
+From e3df3fec01aefac3ec301f6f3d5ec3e91652b9c5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 10 Aug 2015 02:38:27 -0700
+Subject: [PATCH 04/13] wayland-egl: Add bcm_host to dependencies
+
+It uses headers like vcos_platform_types.h but does not
+depend on module which should add the required include paths
+lets add the dependency on bcm_host module which should do it
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/wayland-egl/wayland-egl.pc.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/interface/khronos/wayland-egl/wayland-egl.pc.in b/interface/khronos/wayland-egl/wayland-egl.pc.in
+index 8bafc15..fd259c9 100644
+--- a/interface/khronos/wayland-egl/wayland-egl.pc.in
++++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
+@@ -6,5 +6,6 @@ includedir=${prefix}/include
+ Name: wayland-egl
+ Description: VideoCore wayland-egl library
+ Version: @PROJECT_APIVER@
++Requires: bcm_host
+ Libs: -L${libdir} -lwayland-egl
+ Cflags: -I${includedir}
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch
new file mode 100644
index 0000000..6f41932
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch
@@ -0,0 +1,29 @@
+From 6c9d407c9ec0859380e7bcf35cf915cef4b3687b Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sat, 24 Jan 2015 22:07:19 +0100
+Subject: [PATCH 05/13] interface: remove faulty assert() to make weston happy
+ at runtime
+
+This was removed after a discussion on IRC with the weston guys
+('daniels' on irc.freenode.net/#wayland).
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ interface/vmcs_host/vc_vchi_dispmanx.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
+index 3e668f5..8e065dc 100755
+--- a/interface/vmcs_host/vc_vchi_dispmanx.c
++++ b/interface/vmcs_host/vc_vchi_dispmanx.c
+@@ -1304,7 +1304,6 @@ static void *dispmanx_notify_func( void *arg ) {
+          // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit.
+          vchi_service_release(dispmanx_client.notify_handle[0]);
+          if (dispmanx_client.update_callback ) {
+-            vcos_assert( dispmanx_client.pending_update_handle == handle);
+             dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param);
+          }
+       } else {
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch
new file mode 100644
index 0000000..2d52266
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch
@@ -0,0 +1,33 @@
+From e3ffe9438fe8417586d0045d00eb1368ca3a71b6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:10:47 -0800
+Subject: [PATCH 06/13] zero-out wl buffers in egl_surface_free
+
+origins from buildroot
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client_surface.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 49cf7e5..512c83b 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -690,11 +690,13 @@ void egl_surface_free(EGL_SURFACE_T *surface)
+       if (surface->back_wl_buffer) {
+          wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
+          free(surface->back_wl_buffer);
++         surface->back_wl_buffer = 0;
+       }
+ 
+       if (surface->front_wl_buffer) {
+          wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
+          free(surface->front_wl_buffer);
++         surface->front_wl_buffer = 0;
+       }
+ #endif
+    }
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch
new file mode 100644
index 0000000..f54f77d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch
@@ -0,0 +1,34 @@
+From ed31a6a206c9e205bd5316e95788e5d7bb837e38 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:11:41 -0800
+Subject: [PATCH 07/13] initialize front back wayland buffers
+
+origins from metrological wayland support
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client_surface.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 512c83b..a429724 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -401,11 +401,14 @@ EGL_SURFACE_T *egl_surface_create(
+ #ifdef BUILD_WAYLAND
+    if (type == WINDOW && wl_display) {
+       surface->wl_egl_window = (struct wl_egl_window*)win;
++      surface->front_wl_buffer = NULL;
+       surface->back_wl_buffer = allocate_wl_buffer(
+             surface->wl_egl_window, color);
+       resource = surface->back_wl_buffer->resource;
+    } else {
+       surface->wl_egl_window = NULL;
++      surface->front_wl_buffer = NULL;
++      surface->back_wl_buffer = NULL;
+       resource = DISPMANX_NO_HANDLE;
+    }
+ #endif
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch
new file mode 100644
index 0000000..0206a08
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch
@@ -0,0 +1,27 @@
+From 6e173040a825185013ccbbb33113442207f10eeb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:09:18 -0800
+Subject: [PATCH 08/13] Remove RPC_FLUSH
+
+Origins from buildroot
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/ext/gl_oes_egl_image_client.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/interface/khronos/ext/gl_oes_egl_image_client.c b/interface/khronos/ext/gl_oes_egl_image_client.c
+index f9b7287..b04ffef 100644
+--- a/interface/khronos/ext/gl_oes_egl_image_client.c
++++ b/interface/khronos/ext/gl_oes_egl_image_client.c
+@@ -107,7 +107,6 @@ GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageO
+                    GLEGLIMAGETARGETTEXTURE2DOES_ID,
+                    RPC_ENUM(target),
+                    RPC_EGLID(image));
+-         RPC_FLUSH(thread);
+ #if EGL_BRCM_global_image
+       }
+ #endif
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch
new file mode 100644
index 0000000..87cfce4
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch
@@ -0,0 +1,78 @@
+From c4217231fd78daee83b0c0f312c1d392aa6e0f47 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 13:12:47 -0800
+Subject: [PATCH 09/13] fix cmake dependency race
+
+Fixes errors like
+
+/a/builder/mnt/build-oe/tmp-glibc/work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/git/interface/vmcs_host/vc_vchi_dispmanx.h:72:66:
+fatal error: interface/vmcs_host/wayland-dispmanx-server-protocol.h: No
+such file or directory
+compilation terminated.
+interface/khronos/CMakeFiles/EGL_static.dir/build.make:773: recipe for
+target 'interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o'
+failed
+make[2]: ***
+[interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o] Error 1
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/vcos/pthreads/CMakeLists.txt | 8 ++++++++
+ interface/vmcs_host/CMakeLists.txt     | 8 --------
+ interface/vmcs_host/vc_vchi_dispmanx.h | 2 +-
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt
+index 1d81ca3..d6cd415 100644
+--- a/interface/vcos/pthreads/CMakeLists.txt
++++ b/interface/vcos/pthreads/CMakeLists.txt
+@@ -33,6 +33,14 @@ set (SOURCES
+    ../generic/vcos_generic_blockpool.c
+ )
+ 
++if (BUILD_WAYLAND)
++wayland_add_protocol_server(
++    SOURCES
++    ../../../interface/wayland/dispmanx.xml
++    dispmanx
++)
++endif ()
++
+ if (VCOS_PTHREADS_BUILD_SHARED)
+    add_library (vcos SHARED ${SOURCES})
+    target_link_libraries (vcos pthread dl rt)
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index 35150ed..22949a8 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -17,14 +17,6 @@ set(VCHOSTIF_SOURCE
+ #            ${VMCS_TARGET}/vmcs_main.c
+ #  vc_vchi_haud.c
+ 
+-if (BUILD_WAYLAND)
+-wayland_add_protocol_server(
+-    VCHOSTIF_SOURCE
+-    ../../interface/wayland/dispmanx.xml
+-    dispmanx
+-)
+-endif ()
+-
+ add_library(vchostif ${VCHOSTIF_SOURCE})
+ 
+ #add_library(bufman            vc_vchi_bufman.c            )
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/vmcs_host/vc_vchi_dispmanx.h
+index f0bae30..8c44c58 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/vmcs_host/vc_vchi_dispmanx.h
+@@ -69,7 +69,7 @@ typedef struct {
+ #ifdef BUILD_WAYLAND
+ /* XXX: This should be in a private header that can be included from EGL and vc_* */
+ #include <wayland-server.h>
+-#include "interface/vmcs_host/wayland-dispmanx-server-protocol.h"
++#include "interface/vcos/pthreads/wayland-dispmanx-server-protocol.h"
+ struct wl_dispmanx_server_buffer {
+ 	struct wl_resource *resource;
+ 	struct wl_dispmanx *dispmanx;
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-enum-conversion-warnings.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-enum-conversion-warnings.patch
new file mode 100644
index 0000000..d4e8825
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-enum-conversion-warnings.patch
@@ -0,0 +1,99 @@
+From 377f6aada3b7569e3d662fc830e01b8c5ba8a15d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 18 Feb 2016 09:04:46 +0000
+Subject: [PATCH 10/13] Fix enum conversion warnings
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/mmal/openmaxil/mmalomx_core.c              | 4 ++--
+ interface/mmal/openmaxil/mmalomx_parameters.c        | 6 +++---
+ interface/mmal/openmaxil/mmalomx_util_params_video.c | 8 ++++----
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/interface/mmal/openmaxil/mmalomx_core.c b/interface/mmal/openmaxil/mmalomx_core.c
+index 9bc632b..20d4fc7 100644
+--- a/interface/mmal/openmaxil/mmalomx_core.c
++++ b/interface/mmal/openmaxil/mmalomx_core.c
+@@ -281,7 +281,7 @@ static OMX_ERRORTYPE mmalomx_ComponentGetParameter(
+       {
+          OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+          PARAM_GET_PORT(port, component, param->nPortIndex);
+-         return mmalil_error_to_mmal(mmalomx_get_port_settings(port, param));
++         return mmalil_error_to_omx(mmalomx_get_port_settings(port, param));
+       }
+       return OMX_ErrorNone;
+       break;
+@@ -475,7 +475,7 @@ static OMX_ERRORTYPE mmalomx_ComponentSetParameter(
+       {
+          OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+          PARAM_GET_PORT(port, component, param->nPortIndex);
+-         return mmalil_error_to_mmal(mmalomx_set_port_settings(port, param));
++         return mmalil_error_to_omx(mmalomx_set_port_settings(port, param));
+       }
+       return OMX_ErrorNone;
+       break;
+diff --git a/interface/mmal/openmaxil/mmalomx_parameters.c b/interface/mmal/openmaxil/mmalomx_parameters.c
+index a20a5bd..c4f97d4 100644
+--- a/interface/mmal/openmaxil/mmalomx_parameters.c
++++ b/interface/mmal/openmaxil/mmalomx_parameters.c
+@@ -170,7 +170,7 @@ static OMX_ERRORTYPE mmalomx_parameter_get_xlat(MMALOMX_COMPONENT_T *component,
+ 
+    if (xlat->fn.custom)
+    {
+-      return mmalil_error_to_mmal(xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
++      return mmalil_error_to_omx(xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
+          pParam, mmal_port));
+    }
+ 
+@@ -554,14 +554,14 @@ OMX_ERRORTYPE mmalomx_parameter_set(MMALOMX_COMPONENT_T *component,
+          port->mmal->format->es->video.par.num = param->nX;
+          port->mmal->format->es->video.par.den = param->nY;
+          mmal_rational_simplify(&port->mmal->format->es->video.par);
+-         return mmalil_error_to_mmal(mmal_port_format_commit(port->mmal));
++         return mmalil_error_to_omx(mmal_port_format_commit(port->mmal));
+       }
+    case OMX_IndexParamColorSpace:
+       {
+          OMX_PARAM_COLORSPACETYPE *param = (OMX_PARAM_COLORSPACETYPE *)pParam;
+          PARAM_GET_PORT(port, component, param->nPortIndex);
+          port->mmal->format->es->video.color_space = mmalil_omx_color_space_to_mmal(param->eColorSpace);
+-         return mmalil_error_to_mmal(mmal_port_format_commit(port->mmal));
++         return mmalil_error_to_omx(mmal_port_format_commit(port->mmal));
+       }
+    case OMX_IndexParamBrcmVideoCroppingDisable:
+       {
+diff --git a/interface/mmal/openmaxil/mmalomx_util_params_video.c b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+index f088296..83e3724 100644
+--- a/interface/mmal/openmaxil/mmalomx_util_params_video.c
++++ b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+@@ -56,11 +56,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+       mmal->set = omx->set;
+       mmal->display_num = omx->num;
+       mmal->fullscreen = omx->fullscreen;
+-      mmal->transform = omx->transform;
++      mmal->transform = (MMAL_DISPLAYTRANSFORM_T)omx->transform;
+       rect_to_mmal(&mmal->dest_rect, &omx->dest_rect);
+       rect_to_mmal(&mmal->src_rect, &omx->src_rect);
+       mmal->noaspect = omx->noaspect;
+-      mmal->mode = omx->mode;
++      mmal->mode = (MMAL_DISPLAYMODE_T)omx->mode;
+       mmal->pixel_x = omx->pixel_x;
+       mmal->pixel_y = omx->pixel_y;
+       mmal->layer = omx->layer;
+@@ -72,11 +72,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+       omx->set        = mmal->set;
+       omx->num        = mmal->display_num;
+       omx->fullscreen = mmal->fullscreen;
+-      omx->transform  = mmal->transform;
++      omx->transform  = (OMX_DISPLAYTRANSFORMTYPE)mmal->transform;
+       rect_to_omx(&omx->dest_rect, &mmal->dest_rect);
+       rect_to_omx(&omx->src_rect, &mmal->src_rect);
+       omx->noaspect   = mmal->noaspect;
+-      omx->mode       = mmal->mode;
++      omx->mode       = (OMX_DISPLAYMODETYPE)mmal->mode;
+       omx->pixel_x    = mmal->pixel_x;
+       omx->pixel_y    = mmal->pixel_y;
+       omx->layer      = mmal->layer;
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-Fix-for-framerate-with-nested-composition.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-Fix-for-framerate-with-nested-composition.patch
new file mode 100644
index 0000000..5e97571
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-Fix-for-framerate-with-nested-composition.patch
@@ -0,0 +1,60 @@
+From 6e634184ee4b3d2c98c3213a3931845ec3014754 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Mar 2016 20:38:30 -0700
+Subject: [PATCH 11/13] Fix for framerate with nested composition
+
+frame rate appears irregular and lower than expected when using nested composition.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 024f3ed..83970ec 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -2342,6 +2342,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+                      surface->back_wl_buffer = buffer;
+                   }
+ 
++                  glFlush();
++                  glFinish();
++
+                   RPC_CALL7(eglIntSwapBuffers_impl,
+                         thread,
+                         EGLINTSWAPBUFFERS_ID_V2,
+@@ -2353,6 +2356,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+                         RPC_UINT(khrn_platform_get_window_position(surface->win)),
+                         RPC_INT(surface->back_wl_buffer->resource));
+ 
++                  RPC_FLUSH(thread);
++
+                   surface->front_wl_buffer->in_use = 1;
+                   wl_surface_attach(wl_egl_window->wl_surface,
+                                     surface->front_wl_buffer->wl_buffer,
+@@ -2360,11 +2365,13 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+                   wl_surface_damage(wl_egl_window->wl_surface, 0, 0,
+                                     surface->width, surface->height);
+                   wl_surface_commit(wl_egl_window->wl_surface);
++                  wl_display_flush(wl_display);
+ 
+                   while(ret != -1 && surface->back_wl_buffer->in_use)
+                      ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
+                } else
+ #endif
++               {
+                RPC_CALL6(eglIntSwapBuffers_impl,
+                      thread,
+                      EGLINTSWAPBUFFERS_ID,
+@@ -2376,6 +2383,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+                      RPC_UINT(khrn_platform_get_window_position(surface->win)));
+ 
+                RPC_FLUSH(thread);
++               }
+ 
+ #ifdef ANDROID
+                CLIENT_UNLOCK();
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-build-shared-library-for-vchostif.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-build-shared-library-for-vchostif.patch
new file mode 100644
index 0000000..44815c5
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-build-shared-library-for-vchostif.patch
@@ -0,0 +1,28 @@
+From 559209ce15027b3370466ccb56223a7a66d2a40c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 2 Apr 2016 10:37:24 -0700
+Subject: [PATCH 12/13] build shared library for vchostif
+
+Fixes #149
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/vmcs_host/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index 22949a8..f8c2f2f 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -17,7 +17,7 @@ set(VCHOSTIF_SOURCE
+ #            ${VMCS_TARGET}/vmcs_main.c
+ #  vc_vchi_haud.c
+ 
+-add_library(vchostif ${VCHOSTIF_SOURCE})
++add_library(vchostif SHARED ${VCHOSTIF_SOURCE})
+ 
+ #add_library(bufman            vc_vchi_bufman.c            )
+ 
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-implement-buffer-wrapping-interface-for-dispmanx.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-implement-buffer-wrapping-interface-for-dispmanx.patch
new file mode 100644
index 0000000..8f36048
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-implement-buffer-wrapping-interface-for-dispmanx.patch
@@ -0,0 +1,92 @@
+From 5b55a152651eece345d9ea1e0e40ecd9fc4ca2d5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 2 Apr 2016 10:54:59 -0700
+Subject: [PATCH 13/13] implement buffer wrapping interface for dispmanx
+
+Courtesy: Zan Dobersek
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/ext/egl_wayland.c | 42 +++++++++++++++++++++++++++++++++++++
+ interface/wayland/dispmanx.xml      | 10 +++++++++
+ 2 files changed, 52 insertions(+)
+
+diff --git a/interface/khronos/ext/egl_wayland.c b/interface/khronos/ext/egl_wayland.c
+index 5730743..9ef89cd 100644
+--- a/interface/khronos/ext/egl_wayland.c
++++ b/interface/khronos/ext/egl_wayland.c
+@@ -133,8 +133,50 @@ dispmanx_create_buffer(struct wl_client *client, struct wl_resource *resource,
+                                      buffer->handle);
+ }
+ 
++static void
++dispmanx_wrap_buffer(struct wl_client *client, struct wl_resource *resource,
++                     uint32_t id, uint32_t handle, int32_t width, int32_t height,
++                     uint32_t stride, uint32_t buffer_height, uint32_t format)
++{
++   struct wl_dispmanx_server_buffer *buffer;
++   VC_IMAGE_TYPE_T vc_format = get_vc_format(format);
++   uint32_t dummy;
++
++   if(vc_format == VC_IMAGE_MIN) {
++      wl_resource_post_error(resource,
++                             WL_DISPMANX_ERROR_INVALID_FORMAT,
++                             "invalid format");
++      return;
++   }
++
++   buffer = calloc(1, sizeof *buffer);
++   if (buffer == NULL) {
++      wl_resource_post_no_memory(resource);
++      return;
++   }
++
++   buffer->handle = handle;
++   buffer->width = width;
++   buffer->height = height;
++   buffer->format = format;
++
++   buffer->resource = wl_resource_create(resource->client, &wl_buffer_interface,
++                                         1, id);
++   if (!buffer->resource) {
++      wl_resource_post_no_memory(resource);
++      vc_dispmanx_resource_delete(buffer->handle);
++      free(buffer);
++      return;
++   }
++
++   wl_resource_set_implementation(buffer->resource,
++				       (void (**)(void)) &dispmanx_buffer_interface,
++				       buffer, destroy_buffer);
++}
++
+ static const struct wl_dispmanx_interface dispmanx_interface = {
+    dispmanx_create_buffer,
++   dispmanx_wrap_buffer,
+ };
+ 
+ static void
+diff --git a/interface/wayland/dispmanx.xml b/interface/wayland/dispmanx.xml
+index c18626d..11ed1ef 100644
+--- a/interface/wayland/dispmanx.xml
++++ b/interface/wayland/dispmanx.xml
+@@ -118,6 +118,16 @@
+       <arg name="buffer" type="object" interface="wl_buffer"/>
+       <arg name="handle" type="uint"/>
+     </event>
++
++    <request name="wrap_buffer">
++      <arg name="id" type="new_id" interface="wl_buffer"/>
++      <arg name="handle" type="uint"/>
++      <arg name="width" type="int"/>
++      <arg name="height" type="int"/>
++      <arg name="stride" type="uint"/>
++      <arg name="buffer_height" type="uint"/>
++      <arg name="format" type="uint"/>
++    </request>
+   </interface>
+ 
+ </protocol>
+-- 
+2.9.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
new file mode 100644
index 0000000..6e73ca7
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
@@ -0,0 +1,73 @@
+DESCRIPTION = "This repository contains the source code for the ARM side \
+libraries used on Raspberry Pi. These typically are installed in /opt/vc/lib \
+and includes source for the ARM side code to interface to: EGL, mmal, GLESv2,\
+vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=0448d6488ef8cc380632b1569ee6d196"
+
+PR = "r5"
+
+PROVIDES = "virtual/libgles2 \
+            virtual/egl"
+
+RPROVIDES_${PN} += "libgles2 libgl"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+SRCBRANCH = "master"
+SRCFORK = "raspberrypi"
+SRCREV = "0147f98bdd4fdc822d25d8a70cf5adc5adb89096"
+
+SRC_URI = "\
+    git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \
+    file://0001-Allow-applications-to-set-next-resource-handle.patch \
+    file://0002-wayland-Add-support-for-the-Wayland-winsys.patch \
+    file://0003-wayland-Add-Wayland-example.patch \
+    file://0004-wayland-egl-Add-bcm_host-to-dependencies.patch \
+    file://0005-interface-remove-faulty-assert-to-make-weston-happy-.patch \
+    file://0006-zero-out-wl-buffers-in-egl_surface_free.patch \
+    file://0007-initialize-front-back-wayland-buffers.patch \
+    file://0008-Remove-RPC_FLUSH.patch \
+    file://0009-fix-cmake-dependency-race.patch \
+    file://0010-Fix-enum-conversion-warnings.patch \
+    file://0011-Fix-for-framerate-with-nested-composition.patch \
+    file://0012-build-shared-library-for-vchostif.patch \
+    file://0013-implement-buffer-wrapping-interface-for-dispmanx.patch \
+"
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-Wl,--no-as-needed' \
+                 -DVMCS_INSTALL_PREFIX=${exec_prefix} \
+"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
+
+PACKAGECONFIG[wayland] = "-DBUILD_WAYLAND=TRUE -DWAYLAND_SCANNER_EXECUTABLE:FILEPATH=${STAGING_BINDIR_NATIVE}/wayland-scanner,,wayland-native wayland"
+
+CFLAGS_append = " -fPIC"
+
+do_install_append () {
+	for f in `find ${D}${includedir}/interface/vcos/ -name "*.h"`; do
+		sed -i 's/include "vcos_platform.h"/include "pthreads\/vcos_platform.h"/g' ${f}
+		sed -i 's/include "vcos_futex_mutex.h"/include "pthreads\/vcos_futex_mutex.h"/g' ${f}
+		sed -i 's/include "vcos_platform_types.h"/include "pthreads\/vcos_platform_types.h"/g' ${f}
+	done
+}
+
+# Shared libs from userland package  build aren't versioned, so we need
+# to force the .so files into the runtime package (and keep them
+# out of -dev package).
+FILES_SOLIBSDEV = ""
+INSANE_SKIP_${PN} += "dev-so"
+
+FILES_${PN} += " \
+    ${libdir}/*.so \
+    ${libdir}/plugins"
+FILES_${PN}-dev += "${includedir} \
+                   ${prefix}/src"
+FILES_${PN}-doc += "${datadir}/install"
+FILES_${PN}-dbg += "${libdir}/plugins/.debug"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc
new file mode 100644
index 0000000..c314202
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: egl
+Description: egl for RaspberryPI
+Version: 0.0
+Libs: -L${libdir} -lEGL -lGLESv2
+Cflags: -I${includedir}/vc -I${includedir}/interface -I${includedir}/interface/vcos -I${includedir}/interface/vcos/pthreads
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh
new file mode 100644
index 0000000..c73e3a9
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          vchiq.sh
+# Required-Start:    $remote_fs rmnologin
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Create /dev/vchiq.
+# Description:       Get the major number from /proc/devices and use it
+#                    ti create /dev/vchiq
+### END INIT INFO
+
+rm -f /dev/vchiq
+
+#Get the major number
+major=$(awk "\$2==\"vchiq\" {print \$1}" /proc/devices)
+
+if [ -z "$major" ]; then
+	echo "Error: Cannot find vchiq in /proc/devices"
+	exit 2
+else
+	mknod /dev/vchiq c "$major" 0
+	chmod a+w /dev/vchiq
+fi
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb
new file mode 100644
index 0000000..0db71fd
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb
@@ -0,0 +1,6 @@
+CONFLICTS = "vc-graphics"
+
+VCDIR = "hardfp/opt/vc"
+require vc-graphics.inc
+
+PR = "${INCPR}.0"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb
new file mode 100644
index 0000000..a1bce56
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb
@@ -0,0 +1,6 @@
+CONFLICTS = "vc-graphics-hardfp"
+
+VCDIR = "opt/vc"
+require vc-graphics.inc
+
+PR = "${INCPR}.0"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc
new file mode 100644
index 0000000..a1c8d29
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc
@@ -0,0 +1,56 @@
+DESCRIPTION = "Graphics libraries for BCM2835."
+LICENSE = "Proprietary"
+
+LIC_FILES_CHKSUM = "file://LICENCE;md5=86e53f5f5909ee66900418028de11780"
+
+PROVIDES = "virtual/libgles2 virtual/egl"
+COMPATIBLE_MACHINE = "raspberrypi"
+
+include recipes-bsp/common/firmware.inc
+
+SRC_URI += " \
+    file://egl.pc \
+    file://vchiq.sh \
+"
+
+S = "${RPIFW_S}/${VCDIR}"
+
+INCPR = "r1"
+
+inherit pkgconfig update-rc.d
+
+do_install () {
+  install -d ${D}${bindir}
+  cp -R bin/* ${D}${bindir}
+
+  install -d ${D}${sbindir}
+  cp -R sbin/* ${D}${sbindir}
+
+  install -d ${D}${libdir}
+  # note: -H option to deref symlinked .so
+  cp -R -H lib/* ${D}${libdir}
+
+  install -d ${D}${includedir}
+  cp -R include/* ${D}${includedir}
+
+  install -d ${D}${libdir}/pkgconfig
+  install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/
+
+  install -d ${D}/${sysconfdir}/init.d
+  install -m 0755 ${WORKDIR}/vchiq.sh ${D}${sysconfdir}/init.d/
+}
+
+# These are proprietary binaries generated elsewhere so don't check ldflags
+INSANE_SKIP_${PN} = "ldflags"
+
+INITSCRIPT_NAME = "vchiq.sh"
+INITSCRIPT_PARAMS = "start 03 S ."
+
+FILES_${PN} = "${bindir}/* \
+               ${sbindir}/* \
+               ${libdir}/lib*.so \
+               ${sysconfdir}/init.d \
+               ${libdir}/plugins"
+FILES_${PN}-dev = "${libdir}/pkgconfig \
+                   ${includedir}"
+FILES_${PN}-dbg += "${libdir}/plugins/.debug"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend
new file mode 100644
index 0000000..c3a7421
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend
@@ -0,0 +1,4 @@
+EXTRA_OECONF_append_rpi = "\
+        --enable-rpi-compositor \
+        WESTON_NATIVE_BACKEND=rpi-backend.so \
+       "
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/weston/weston_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/weston/weston_%.bbappend
new file mode 100644
index 0000000..3ec311d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/weston/weston_%.bbappend
@@ -0,0 +1,7 @@
+EXTRA_OECONF += "--enable-rpi-compositor \
+             --disable-resize-optimization \
+             --disable-setuid-install \
+             --disable-xwayland-test \
+             --disable-simple-egl-clients \
+             WESTON_NATIVE_BACKEND=rpi-backend.so \
+"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf
new file mode 100644
index 0000000..6fd5298
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf
@@ -0,0 +1,6 @@
+# Initial xorg.conf for the RaspberryPi
+# Most things are setup automatically by magic pixies in the system.
+# 
+# It is suggested this file is not used any more and configuration 
+# snippets are placed in xorg.conf.d instead.
+#
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf
new file mode 100644
index 0000000..cc83ab2
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf
@@ -0,0 +1,40 @@
+#
+# Catch-all evdev loader for udev-based systems
+# We don't simply match on any device since that also adds accelerometers
+# and other devices that we don't really want to use. The list below
+# matches everything but joysticks.
+
+Section "InputClass"
+        Identifier "evdev pointer catchall"
+        MatchIsPointer "on"
+        MatchDevicePath "/dev/input/event*"
+        Driver "evdev"
+EndSection
+
+Section "InputClass"
+        Identifier "evdev keyboard catchall"
+        MatchIsKeyboard "on"
+        MatchDevicePath "/dev/input/event*"
+        Driver "evdev"
+EndSection
+
+Section "InputClass"
+        Identifier "evdev touchpad catchall"
+        MatchIsTouchpad "on"
+        MatchDevicePath "/dev/input/event*"
+        Driver "evdev"
+EndSection
+
+Section "InputClass"
+        Identifier "evdev tablet catchall"
+        MatchIsTablet "on"
+        MatchDevicePath "/dev/input/event*"
+        Driver "evdev"
+EndSection
+
+Section "InputClass"
+        Identifier "evdev touchscreen catchall"
+        MatchIsTouchscreen "on"
+        MatchDevicePath "/dev/input/event*"
+        Driver "evdev"
+EndSection
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf
new file mode 100644
index 0000000..0d2b36b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf
@@ -0,0 +1,5 @@
+Section "Device"
+    Identifier "Adafruit PiTFT"
+    Driver "fbdev"
+    Option "fbdev" "/dev/fb1"
+EndSection
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf
new file mode 100644
index 0000000..f8b578c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf
@@ -0,0 +1,6 @@
+Section "InputClass"
+        Identifier      "calibration"
+        MatchProduct    "stmpe-ts"
+        Option  "Calibration"   "3800 200 200 3800"
+        Option  "SwapAxes"      "1"
+EndSection
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000..062de2d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1,19 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_rpi = " file://xorg.conf.d/10-evdev.conf \
+                       file://xorg.conf.d/98-pitft.conf \
+                       file://xorg.conf.d/99-calibration.conf \
+                     "
+
+do_install_append_rpi () {
+	install -d ${D}/${sysconfdir}/X11/xorg.conf.d/
+	install -m 0644 ${WORKDIR}/xorg.conf.d/10-evdev.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
+
+	PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
+	if [ "${PITFT}" = "1" ]; then
+		install -m 0644 ${WORKDIR}/xorg.conf.d/98-pitft.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
+		install -m 0644 ${WORKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
+	fi
+}
+
+FILES_${PN}_rpi += "${sysconfdir}/X11/xorg.conf ${sysconfdir}/X11/xorg.conf.d/*"
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211 b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211
new file mode 100644
index 0000000..e2cf868
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211
@@ -0,0 +1,205 @@
+SOFTWARE LICENSE AGREEMENT
+
+Unless you and Broadcom Corporation (“Broadcom”) execute a separate written
+software license agreement governing use of the accompanying software, this
+software is licensed to you under the terms of this Software License Agreement
+(“Agreement”).
+
+ANY USE, REPRODUCTION OR DISTRIBUTION OF THE SOFTWARE CONSTITUTES YOUR
+ACCEPTANCE OF THIS AGREEMENT.
+
+1.	DEFINITIONS.
+
+1.1.	“Broadcom Product” means any of the proprietary integrated circuit
+product(s) sold by Broadcom with which the Software was designed to be used, or
+their successors.
+
+1.2.	“Licensee” means you or if you are accepting on behalf of an entity
+then the entity and its affiliates exercising rights under, and complying with
+all of the terms of this Agreement.
+
+1.3.	“Software” shall mean that software made available by Broadcom to
+Licensee in binary code form with this Agreement.
+
+2.	LICENSE GRANT; OWNERSHIP
+
+2.1.	License Grants.  Subject to the terms and conditions of this Agreement,
+Broadcom hereby grants to Licensee a non-exclusive, non-transferable,
+royalty-free license (i) to use and integrate the Software in conjunction with
+any other software; and (ii) to reproduce and distribute the Software complete,
+unmodified and as provided by Broadcom, and only for use with a Broadcom
+Product.
+
+2.2.	Restriction on Modification.  Licensee may not make any modifications
+to the Software.
+
+2.3.	Restriction on Distribution.  Licensee shall only distribute the
+Software under the terms of this Agreement and a copy of this Agreement
+accompanies such distribution.
+
+2.4.	Proprietary Notices.  Licensee shall not remove, efface or obscure any
+copyright or trademark notices from the Software.  Licensee shall include
+reproductions of the Broadcom copyright notice with each copy of the Software,
+except where such Software is embedded in a manner not readily accessible to
+the end user.  Licensee acknowledges that any symbols, trademarks, tradenames,
+and service marks adopted by Broadcom to identify the Software belong to
+Broadcom and that Licensee shall have no rights therein.
+
+2.5.	Ownership.  Broadcom shall retain all right, title and interest,
+including all intellectual property rights, in and to the Software.  Licensee
+hereby covenants that it will not assert any claim that the Software created by
+or for Broadcom infringe any intellectual property right owned or controlled by
+Licensee; provided however, the foregoing shall not apply in case the Agreement
+is terminated.
+
+2.6.	No Other Rights Granted; Restrictions.  Apart from the license rights
+expressly set forth in this Agreement, Broadcom does not grant and Licensee
+does not receive any ownership right, title or interest nor any security
+interest or other interest in any intellectual property rights relating to the
+Software, nor in any copy of any part of the foregoing.  No license is granted
+to Licensee in any human readable code of the Software (source code). Licensee
+shall not (i) use, license, sell or otherwise distribute the Software except as
+provided in this Agreement, (ii) attempt to modify in any way, reverse
+engineer, decompile or disassemble any portion of the Software; or (iii) use
+the Software or other material in violation of any applicable law or
+regulation, including but not limited to any regulatory agency, such as FCC,
+rules.
+
+3.	NO WARRANTY OR SUPPORT
+
+3.1.	No Warranty. THE SOFTWARE IS OFFERED “AS IS,” AND BROADCOM GRANTS AND
+LICENSEE RECEIVES NO WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, BY STATUTE,
+COMMUNICATION OR CONDUCT WITH LICENSEE, OR OTHERWISE.  BROADCOM SPECIFICALLY
+DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A SPECIFIC
+PURPOSE OR NONINFRINGEMENT CONCERNING THE SOFTWARE OR ANY UPGRADES TO OR
+DOCUMENTATION FOR THE SOFTWARE.  WITHOUT LIMITATION OF THE ABOVE, BROADCOM
+GRANTS NO WARRANTY THAT THE SOFTWARE IS ERROR-FREE OR WILL OPERATE WITHOUT
+INTERRUPTION, AND GRANTS NO WARRANTY REGARDING ITS USE OR THE RESULTS THEREFROM
+INCLUDING, WITHOUT LIMITATION, ITS CORRECTNESS, ACCURACY OR RELIABILITY.
+
+3.2.	No Support.  Nothing in this agreement shall obligate Broadcom to
+provide any support for the Software. Broadcom may, but shall be under no
+obligation to, correct any defects in the Software and/or provide updates to
+licensees of the Software.  Licensee shall make reasonable efforts to promptly
+report to Broadcom any defects it finds in the Software, as an aid to creating
+improved revisions of the Software.
+
+3.3.	Dangerous Applications.  The Software is not designed, intended, or
+certified for use in components of systems intended for the operation of
+weapons, weapons systems, nuclear installations, means of mass transportation,
+aviation, life-support computers or equipment (including resuscitation
+equipment and surgical implants), pollution control, hazardous substances
+management, or for any other dangerous application in which the failure of the
+Software could create a situation where personal injury or death may occur. 
+Licensee understands that use of the Software in such applications is fully at
+the risk of Licensee.
+
+4.	TERM AND TERMINATION
+
+4.1.	Termination.  This Agreement will automatically terminate if Licensee
+fails to comply with any of the terms and conditions hereof. In such event,
+Licensee must destroy all copies of the Software and all of its component
+parts.
+
+4.2.	Effect Of Termination.  Upon any termination of this Agreement, the
+rights and licenses granted to Licensee under this Agreement shall immediately
+terminate.
+
+4.3.	Survival.  The rights and obligations under this Agreement which by
+their nature should survive termination will remain in effect after expiration
+or termination of this Agreement.
+
+5.	CONFIDENTIALITY
+
+5.1.	Obligations.  Licensee acknowledges and agrees that any documentation
+relating to the Software, and any other information (if such other information
+is identified as confidential or should be recognized as confidential under the
+circumstances) provided to Licensee by Broadcom hereunder (collectively,
+“Confidential Information”) constitute the confidential and proprietary
+information of Broadcom, and that Licensee’s protection thereof is an essential
+condition to Licensee’s use and possession of the Software.  Licensee shall
+retain all Confidential Information in strict confidence and not disclose it to
+any third party or use it in any way except under a written agreement with
+terms and conditions at least as protective as the terms of this Section.
+Licensee will exercise at least the same amount of diligence in preserving the
+secrecy of the Confidential Information as it uses in preserving the secrecy of
+its own most valuable confidential information, but in no event less than
+reasonable diligence.  Information shall not be considered Confidential
+Information if and to the extent that it: (i) was in the public domain at the
+time it was disclosed or has entered the public domain through no fault of
+Licensee; (ii) was known to Licensee, without restriction, at the time of
+disclosure as proven by the files of Licensee in existence at the time of
+disclosure; or (iii) becomes known to Licensee, without restriction, from a
+source other than Broadcom without breach of this Agreement by Licensee and
+otherwise not in violation of Broadcom’s rights.
+
+5.2.	Return of Confidential Information.  Notwithstanding the foregoing, all
+documents and other tangible objects containing or representing Broadcom
+Confidential Information and all copies thereof which are in the possession of
+Licensee shall be and remain the property of Broadcom, and shall be promptly
+returned to Broadcom upon written request by Broadcom or upon termination of
+this Agreement.
+
+6.	LIMITATION OF LIABILITY TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO
+EVENT SHALL BROADCOM OR ANY OF BROADCOM’S LICENSORS HAVE ANY LIABILITY FOR ANY
+INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER FOR BREACH OF CONTRACT, TORT (INCLUDING
+NEGLIGENCE) OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, INCLUDING BUT NOT
+LIMITED TO LOSS OF PROFITS, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL BROADCOM’S LIABILITY WHETHER IN
+CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, EXCEED THE AMOUNT PAID BY
+LICENSEE FOR SOFTWARE UNDER THIS AGREEMENT.  THESE LIMITATIONS SHALL APPLY
+NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.
+
+7.	MISCELLANEOUS
+
+7.1.	Export Regulations. YOU UNDERSTAND AND AGREE THAT THE SOFTWARE IS
+SUBJECT TO UNITED STATES AND OTHER APPLICABLE EXPORT-RELATED LAWS AND
+REGULATIONS AND THAT YOU MAY NOT EXPORT, RE-EXPORT OR TRANSFER THE SOFTWARE OR
+ANY DIRECT PRODUCT OF THE SOFTWARE EXCEPT AS PERMITTED UNDER THOSE LAWS.
+WITHOUT LIMITING THE FOREGOING, EXPORT, RE-EXPORT OR TRANSFER OF THE SOFTWARE
+TO CUBA, IRAN, NORTH KOREA, SUDAN AND SYRIA IS PROHIBITED.
+
+7.2	Assignment. This Agreement shall be binding upon and inure to the
+benefit of the parties and their respective successors and assigns, provided,
+however that Licensee may not assign this Agreement or any rights or obligation
+hereunder, directly or indirectly, by operation of law or otherwise, without
+the prior written consent of Broadcom, and any such attempted assignment shall
+be void.  Notwithstanding the foregoing, Licensee may assign this Agreement to
+a successor to all or substantially all of its business or assets to which this
+Agreement relates that is not a competitor of Broadcom.
+
+7.3.	Governing Law; Venue.  This Agreement shall be governed by the laws of
+California without regard to any conflict-of-laws rules, and the United Nations
+Convention on Contracts for the International Sale of Goods is hereby excluded.
+The sole jurisdiction and venue for actions related to the subject matter
+hereof shall be the state and federal courts located in the County of Orange,
+California, and both parties hereby consent to such jurisdiction and venue.
+
+7.4.	Severability.  All terms and provisions of this Agreement shall, if
+possible, be construed in a manner which makes them valid, but in the event any
+term or provision of this Agreement is found by a court of competent
+jurisdiction to be illegal or unenforceable, the validity or enforceability of
+the remainder of this Agreement shall not be affected if the illegal or
+unenforceable provision does not materially affect the intent of this
+Agreement.  If the illegal or unenforceable provision materially affects the
+intent of the parties to this Agreement, this Agreement shall become
+terminated.
+
+7.5.	Equitable Relief.  Licensee hereby acknowledges that its breach of this
+Agreement would cause irreparable harm and significant injury to Broadcom that
+may be difficult to ascertain and that a remedy at law would be inadequate.
+Accordingly, Licensee agrees that Broadcom shall have the right to seek and
+obtain immediate injunctive relief to enforce obligations under the Agreement
+in addition to any other rights and remedies it may have.
+
+7.6.	Waiver.  The waiver of, or failure to enforce, any breach or default
+hereunder shall not constitute the waiver of any other or subsequent breach or
+default.
+
+7.7.	Entire Agreement.  This Agreement sets forth the entire Agreement
+between the parties and supersedes any and all prior proposals, agreements and
+representations between them, whether written or oral concerning the Software.
+This Agreement may be changed only by mutual agreement of the parties in
+writing.
+
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin
new file mode 100644
index 0000000..84ab5b0
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt
new file mode 100644
index 0000000..ea4f648
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt
@@ -0,0 +1,66 @@
+# NVRAM file for BCM943430WLPTH
+# 2.4 GHz, 20 MHz BW mode
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0727
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0727
+boardrev=0x1101
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+#PA parameters for 2.4GHz, measured at CHIP OUTPUT
+pa2ga0=-168,7161,-820
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=84
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x77711111
+propbw202gpo=0xdd
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+papdvalidtest=1
+pacalidx2g=42
+papdepsoffset=-22
+papdendidx=58
+
+# LTECX flags
+ltecxmux=0
+ltecxpadnum=0x0102
+ltecxfnsel=0x44
+ltecxgcigpio=0x01
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
+muxenab=0x1
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3 
+
+edonthd20l=-75
+edoffthd20ul=-80
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
new file mode 100644
index 0000000..20ef05f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
@@ -0,0 +1,33 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+LICENSE_append = " & Firmware-broadcom_brcm80211"
+
+LIC_FILES_CHKSUM_append = " file://${WORKDIR}/LICENSE.broadcom_brcm80211;md5=8cba1397cda6386db37210439a0da3eb"
+
+NO_GENERIC_LICENSE[Firmware-broadcom_brcm80211] = "LICENSE.broadcom_brcm80211"
+
+SRC_URI_append = " \
+    file://brcmfmac43430-sdio.bin \
+    file://brcmfmac43430-sdio.txt \
+    file://LICENSE.broadcom_brcm80211 \
+    "
+
+do_install_append() {
+    cp ${WORKDIR}/brcmfmac43430-sdio.* ${D}/lib/firmware/brcm/
+    cp ${WORKDIR}/LICENSE.broadcom_brcm80211 ${D}/lib/firmware/
+}
+
+PACKAGES =+ "${PN}-brcm43430 ${PN}-brcm43430-license"
+
+LICENSE_${PN}-brcm43430 = "Firmware-broadcom_brcm80211"
+FILES_${PN}-brcm43430-license = "/lib/firmware/LICENSE.broadcom_brcm80211"
+FILES_${PN}-brcm43430 = " \
+    /lib/firmware/brcm/brcmfmac43430-sdio.bin \
+    /lib/firmware/brcm/brcmfmac43430-sdio.txt \
+    "
+
+RDEPENDS_${PN}-brcm43430 += "${PN}-brcm43430-license"
+
+ALTERNATIVE_LINK_NAME[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac-sdio.bin"
+ALTERNATIVE_TARGET_linux-firmware-brcm43430[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac43430-sdio.bin"
+ALTERNATIVE_linux-firmware-brcm43430 = "brcmfmac-sdio.bin"
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-3.18/0001-dts-add-overlay-for-pitft22.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-3.18/0001-dts-add-overlay-for-pitft22.patch
new file mode 100644
index 0000000..fa73599
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-3.18/0001-dts-add-overlay-for-pitft22.patch
@@ -0,0 +1,110 @@
+From 2f44861e2a2d651a9aa62a75343a032fee33e93b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petter=20Mab=C3=A4cker?= <petter@technux.se>
+Date: Fri, 8 Jan 2016 09:02:44 +0100
+Subject: [PATCH] dts: add overlay for pitft22 in linux 3.18
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Add the pitft22 overlay from adafruit Adafruit-Pi-Kernel-o-Matic repo:
+https://github.com/adafruit/Adafruit-Pi-Kernel-o-Matic
+
+Signed-off-by: Petter Mabäcker <petter@technux.se>
+---
+ arch/arm/boot/dts/overlays/Makefile            |  1 +
+ arch/arm/boot/dts/overlays/pitft22-overlay.dts | 69 ++++++++++++++++++++++++++
+ 2 files changed, 70 insertions(+)
+ create mode 100755 arch/arm/boot/dts/overlays/pitft22-overlay.dts
+
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index c766616..1eaaf81 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -27,6 +27,7 @@ dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
++dtb-$(RPI_DT_OVERLAYS) += pitft22-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb
+diff --git a/arch/arm/boot/dts/overlays/pitft22-overlay.dts b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
+new file mode 100755
+index 0000000..894ba22
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
+@@ -0,0 +1,69 @@
++/*
++ * Device Tree overlay for pitft by Adafruit
++ *
++ */
++
++/dts-v1/;
++/plugin/;
++
++/ {
++        compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
++
++        fragment@0 {
++                target = <&spi0>;
++                __overlay__ {
++                        status = "okay";
++
++                        spidev@0{
++                                status = "disabled";
++                        };
++
++                        spidev@1{
++                                status = "disabled";
++                        };
++                };
++        };
++
++        fragment@1 {
++                target = <&gpio>;
++                __overlay__ {
++                        pitft_pins: pitft_pins {
++                                brcm,pins = <25>;
++                                brcm,function = <1>; /* out */
++                                brcm,pull = <0>; /* none */
++                        };
++                };
++        };
++
++        fragment@2 {
++                target = <&spi0>;
++                __overlay__ {
++                        /* needed to avoid dtc warning */
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++
++                        pitft: pitft@0{
++                                compatible = "ilitek,ili9340";
++                                reg = <0>;
++                                pinctrl-names = "default";
++                                pinctrl-0 = <&pitft_pins>;
++
++                                spi-max-frequency = <32000000>;
++                                rotate = <90>;
++                                fps = <25>;
++                                bgr;
++                                buswidth = <8>;
++                                dc-gpios = <&gpio 25 0>;
++                                debug = <0>;
++                        };
++
++                };
++        };
++
++        __overrides__ {
++                speed =   <&pitft>,"spi-max-frequency:0";
++                rotate =  <&pitft>,"rotate:0";
++                fps =     <&pitft>,"fps:0";
++                debug =   <&pitft>,"debug:0";
++        };
++};
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0001-dts-add-overlay-for-pitft22.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0001-dts-add-overlay-for-pitft22.patch
new file mode 100644
index 0000000..e6e0a84
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0001-dts-add-overlay-for-pitft22.patch
@@ -0,0 +1,110 @@
+From a28bd410022b32a64e208f04b45add6326990332 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petter=20Mab=C3=A4cker?= <petter@technux.se>
+Date: Fri, 8 Jan 2016 09:02:44 +0100
+Subject: [PATCH] dts: add overlay for pitft22
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Add the pitft22 overlay from adafruit Adafruit-Pi-Kernel-o-Matic repo:
+https://github.com/adafruit/Adafruit-Pi-Kernel-o-Matic
+
+Signed-off-by: Petter Mabäcker <petter@technux.se>
+---
+ arch/arm/boot/dts/overlays/Makefile            |  1 +
+ arch/arm/boot/dts/overlays/pitft22-overlay.dts | 69 ++++++++++++++++++++++++++
+ 2 files changed, 70 insertions(+)
+ create mode 100755 arch/arm/boot/dts/overlays/pitft22-overlay.dts
+
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index 1a60e9c..a2535a2 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -37,6 +37,7 @@ dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += piscreen2r-overlay.dtb
++dtb-$(RPI_DT_OVERLAYS) += pitft22-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += pitft28-capacitive-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb
+ dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb
+diff --git a/arch/arm/boot/dts/overlays/pitft22-overlay.dts b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
+new file mode 100755
+index 0000000..894ba22
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
+@@ -0,0 +1,69 @@
++/*
++ * Device Tree overlay for pitft by Adafruit
++ *
++ */
++
++/dts-v1/;
++/plugin/;
++
++/ {
++        compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
++
++        fragment@0 {
++                target = <&spi0>;
++                __overlay__ {
++                        status = "okay";
++
++                        spidev@0{
++                                status = "disabled";
++                        };
++
++                        spidev@1{
++                                status = "disabled";
++                        };
++                };
++        };
++
++        fragment@1 {
++                target = <&gpio>;
++                __overlay__ {
++                        pitft_pins: pitft_pins {
++                                brcm,pins = <25>;
++                                brcm,function = <1>; /* out */
++                                brcm,pull = <0>; /* none */
++                        };
++                };
++        };
++
++        fragment@2 {
++                target = <&spi0>;
++                __overlay__ {
++                        /* needed to avoid dtc warning */
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++
++                        pitft: pitft@0{
++                                compatible = "ilitek,ili9340";
++                                reg = <0>;
++                                pinctrl-names = "default";
++                                pinctrl-0 = <&pitft_pins>;
++
++                                spi-max-frequency = <32000000>;
++                                rotate = <90>;
++                                fps = <25>;
++                                bgr;
++                                buswidth = <8>;
++                                dc-gpios = <&gpio 25 0>;
++                                debug = <0>;
++                        };
++
++                };
++        };
++
++        __overrides__ {
++                speed =   <&pitft>,"spi-max-frequency:0";
++                rotate =  <&pitft>,"rotate:0";
++                fps =     <&pitft>,"fps:0";
++                debug =   <&pitft>,"debug:0";
++        };
++};
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0002-vmcs-Remove-unused-sm_cache_map_vector-definition.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0002-vmcs-Remove-unused-sm_cache_map_vector-definition.patch
new file mode 100644
index 0000000..8d4a900
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0002-vmcs-Remove-unused-sm_cache_map_vector-definition.patch
@@ -0,0 +1,31 @@
+The code using it also ifdef'ed with 0, anyyd gcc 6
+complains
+
+error: 'sm_cache_map_vector' defined but not used
+
+The code using it also ifdef'ed out
+
+Upstream-status: Denied [https://github.com/raspberrypi/linux/pull/1528]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ drivers/char/broadcom/vc_sm/vmcs_sm.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/char/broadcom/vc_sm/vmcs_sm.c
++++ b/drivers/char/broadcom/vc_sm/vmcs_sm.c
+@@ -197,12 +197,14 @@ struct SM_STATE_T {
+ static struct SM_STATE_T *sm_state;
+ static int sm_inited;
+ 
++#if 0
+ static const char *const sm_cache_map_vector[] = {
+ 	"(null)",
+ 	"host",
+ 	"videocore",
+ 	"host+videocore",
+ };
++#endif
+ 
+ /* ---- Private Function Prototypes -------------------------------------- */
+ 
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0003-fix-gcc6.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0003-fix-gcc6.patch
new file mode 100644
index 0000000..61ec2fb
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.1/0003-fix-gcc6.patch
@@ -0,0 +1,78 @@
+Fix compile with GCC6
+
+Upstream-status: Denied [https://github.com/raspberrypi/linux/pull/1528]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Index: source/include/linux/compiler-gcc6.h
+===================================================================
+--- /dev/null
++++ source/include/linux/compiler-gcc6.h
+@@ -0,0 +1,67 @@
++#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.
++ *
++ * (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 */
++
++#define KASAN_ABI_VERSION 4
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
new file mode 100644
index 0000000..6184402
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
@@ -0,0 +1,69 @@
+require linux-rpi.inc
+inherit linux-raspberrypi-base
+
+DESCRIPTION = "Linux Kernel for Raspberry Pi"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+SRC_URI += " \
+        file://defconfig \
+        "
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+PE = "1"
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+# NOTE: For now we pull in the default config from the RPi kernel GIT tree.
+KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig"
+KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"
+
+# CMDLINE for raspberrypi
+CMDLINE = "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
+
+# Add the kernel debugger over console kernel command line option if enabled
+CMDLINE_append = ' ${@base_conditional("ENABLE_KGDB", "1", "kgdboc=serial0,115200", "", d)}'
+
+UDEV_GE_141 ?= "1"
+
+KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "stmpe-ts", "", d)}"
+
+# Set programmatically some variables during recipe parsing
+# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
+python __anonymous () {
+    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
+    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))
+    d.setVar("KERNEL_DEVICETREE", kerneldt)
+}
+
+do_kernel_configme_prepend() {
+    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available."
+}
+
+do_install_prepend() {
+    install -d ${D}/lib/firmware
+}
+
+do_deploy_append() {
+    # Deploy cmdline.txt
+    install -d ${DEPLOYDIR}/bcm2835-bootfiles
+    PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
+    if [ ${PITFT} = "1" ]; then
+        PITFT_PARAMS="fbcon=map:10 fbcon=font:VGA8x8"
+    fi
+    echo "${CMDLINE}${PITFT_PARAMS}" > ${DEPLOYDIR}/bcm2835-bootfiles/cmdline.txt
+}
+
+do_bundle_initramfs_append() {
+    if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
+        if test "x${KERNEL_IMAGETYPE}" != "xuImage" ; then
+            if test -n "${KERNEL_DEVICETREE}"; then
+                # Add RPi bootloader trailer to kernel image to enable DeviceTree support
+                for type in ${KERNEL_IMAGETYPES} ; do
+                    ${STAGING_BINDIR_NATIVE}/mkknlimg --dtok ${KERNEL_OUTPUT_DIR}/$type.initramfs ${KERNEL_OUTPUT_DIR}/$type.initramfs
+                done
+            fi
+        fi
+    fi
+}
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi/defconfig b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi/defconfig
new file mode 100644
index 0000000..ecbf32c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi/defconfig
@@ -0,0 +1 @@
+# Dummy file to get through do_kernel_configme.
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_3.18.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_3.18.bb
new file mode 100644
index 0000000..1110b71
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_3.18.bb
@@ -0,0 +1,14 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+LINUX_VERSION ?= "3.18.16"
+
+SRCREV = "1bb18c8f721ef674a447f3622273f2e2de7a205c"
+SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-3.18.y \
+           file://0001-dts-add-overlay-for-pitft22.patch \
+          "
+require linux-raspberrypi.inc
+
+# Create missing out of tree 'overlays' directory prior to install step
+do_compile_prepend() {
+  mkdir -p ${B}/arch/arm/boot/dts/overlays
+}
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.1.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.1.bb
new file mode 100644
index 0000000..87c77b8
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.1.bb
@@ -0,0 +1,12 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+LINUX_VERSION ?= "4.1.21"
+
+SRCREV = "ff45bc0e8917c77461b2901e2743e6339bb70413"
+SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.1.y \
+           file://0001-dts-add-overlay-for-pitft22.patch \
+           file://0002-vmcs-Remove-unused-sm_cache_map_vector-definition.patch \
+           file://0003-fix-gcc6.patch \
+          "
+
+require linux-raspberrypi.inc
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb
new file mode 100644
index 0000000..3291ffd
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+LINUX_VERSION ?= "4.4.13"
+
+SRCREV = "680be5e27a9593cf26079c6e5744a04cc2809d13"
+SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.4.y \
+"
+require linux-raspberrypi.inc
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-rpi.inc b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-rpi.inc
new file mode 100644
index 0000000..4b65fc2
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-rpi.inc
@@ -0,0 +1,138 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+inherit kernel siteinfo
+require recipes-kernel/linux/linux-yocto.inc
+
+# Enable OABI compat for people stuck with obsolete userspace
+ARM_KEEP_OABI ?= "1"
+
+# Quirk for udev greater or equal 141
+UDEV_GE_141 ?= "1"
+
+# Set the verbosity of kernel messages during runtime
+# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour
+CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug", d)}'
+CMDLINE_append = " ${CMDLINE_DEBUG}"
+
+KERNEL_INITRAMFS ?= '${@base_conditional("INITRAMFS_IMAGE_BUNDLE", "1", "1", "", d)}'
+
+# Set a variable in .configure
+# $1 - Configure variable to be set
+# $2 - value [n/y/value]
+kernel_configure_variable() {
+    # Remove the config
+    CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;"
+    if test "$2" = "n"
+    then
+        echo "# CONFIG_$1 is not set" >> ${B}/.config
+    else
+        echo "CONFIG_$1=$2" >> ${B}/.config
+    fi
+}
+
+do_configure_prepend() {
+    # Clean .config
+    echo "" > ${B}/.config
+    CONF_SED_SCRIPT=""
+
+    # oabi / eabi support
+    kernel_configure_variable AEABI y
+    if [ "${ARM_KEEP_OABI}" = "1" ] ; then
+        kernel_configure_variable OABI_COMPAT y
+    else
+        kernel_configure_variable OABI_COMPAT n
+    fi
+
+    # Set cmdline
+    kernel_configure_variable CMDLINE "\"${CMDLINE}\""
+
+    # Localversion
+    kernel_configure_variable LOCALVERSION "\"\""
+    kernel_configure_variable LOCALVERSION_AUTO n
+
+    # Udev quirks
+    # Newer versions of udev mandate that sysfs doesn't have deprecated entries
+    if [ "${UDEV_GE_141}" = "1" ] ; then
+        kernel_configure_variable SYSFS_DEPRECATED n
+        kernel_configure_variable SYSFS_DEPRECATED_V2 n
+        kernel_configure_variable HOTPLUG y
+        kernel_configure_variable UEVENT_HELPER_PATH "\"\""
+        kernel_configure_variable UNIX y
+        kernel_configure_variable SYSFS y
+        kernel_configure_variable PROC_FS y
+        kernel_configure_variable TMPFS y
+        kernel_configure_variable INOTIFY_USER y
+        kernel_configure_variable SIGNALFD y
+        kernel_configure_variable TMPFS_POSIX_ACL y
+        kernel_configure_variable BLK_DEV_BSG y
+        kernel_configure_variable DEVTMPFS y
+        kernel_configure_variable DEVTMPFS_MOUNT y
+    fi
+
+    # Newer inits like systemd need cgroup support
+    if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then
+        kernel_configure_variable CGROUP_SCHED y
+        kernel_configure_variable CGROUPS y
+        kernel_configure_variable CGROUP_NS y
+        kernel_configure_variable CGROUP_FREEZER y
+        kernel_configure_variable CGROUP_DEVICE y
+        kernel_configure_variable CPUSETS y
+        kernel_configure_variable PROC_PID_CPUSET y
+        kernel_configure_variable CGROUP_CPUACCT y
+        kernel_configure_variable RESOURCE_COUNTERS y
+    fi
+
+    # root-over-nfs-over-usb-eth support. Limited, but should cover some cases
+    # Enable this by setting a proper CMDLINE_NFSROOT_USB.
+    if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then
+        oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}"
+        kernel_configure_variable INET y
+        kernel_configure_variable IP_PNP y
+        kernel_configure_variable USB_GADGET y
+        kernel_configure_variable USB_GADGET_SELECTED y
+        kernel_configure_variable USB_ETH y
+        kernel_configure_variable NFS_FS y
+        kernel_configure_variable ROOT_NFS y
+        kernel_configure_variable ROOT_NFS y
+        kernel_configure_variable CMDLINE "\"${CMDLINE_NFSROOT_USB}\""
+    fi
+    if [ ! -z "${KERNEL_INITRAMFS}" ]; then
+        kernel_configure_variable BLK_DEV_INITRD y
+        kernel_configure_variable INITRAMFS_SOURCE ""
+        kernel_configure_variable RD_GZIP y
+        kernel_configure_variable OVERLAY_FS y
+        kernel_configure_variable SQUASHFS y
+        kernel_configure_variable UBIFS_FS y
+    fi
+    # Activate CONFIG_LEGACY_PTYS
+    kernel_configure_variable LEGACY_PTYS y
+
+    # Keep this the last line
+    # Remove all modified configs and add the rest to .config
+    sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config'
+
+    yes '' | oe_runmake oldconfig
+}
+
+# Automatically depend on lzop-native if CONFIG_KERNEL_LZO is enabled
+python () {
+    try:
+        defconfig = bb.fetch2.localpath('file://defconfig', d)
+    except bb.fetch2.FetchError:
+        return
+
+    try:
+        configfile = open(defconfig)
+    except IOError:
+        return
+
+    if 'CONFIG_KERNEL_LZO=y\n' in configfile.readlines():
+        depends = d.getVar('DEPENDS', False)
+        d.setVar('DEPENDS', depends + ' lzop-native')
+
+    configfile.close()
+}
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
new file mode 100644
index 0000000..815a7c2
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
@@ -0,0 +1,48 @@
+From 2e111e52f96f0b942abda120c30a876629bd73fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Mon, 25 May 2015 14:53:35 +0200
+Subject: [PATCH] Don't try to acquire buffer when src pad isn't active
+
+This solves a race condition when setting the pipeline from PAUSE to
+NULL while the decoder loop is still running. Without this patch, the
+thread which interacts with the decode sink pad gets blocked here:
+
+  gst_element_change_state()
+  gst_element_change_state_func()
+  gst_element_pads_activate() --> Deactivating pads
+  activate_pads()
+  gst_pad_set_active()
+  gst_pad_activate_mode()
+  post_activate()
+  GST_PAD_STREAM_LOCK()
+
+while gst_omx_port_acquire_buffer() gets stalled forever in
+gst_omx_component_wait_message() waiting for a message that will never
+arrive:
+
+  gst_omx_video_dec_loop()
+  gst_omx_port_acquire_buffer()
+  gst_omx_component_wait_message()
+---
+ omx/gstomxvideodec.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index cd24944..57a61dd 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1247,6 +1247,11 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self)
+   GstClockTimeDiff deadline;
+   OMX_ERRORTYPE err;
+ 
++  if (!gst_pad_is_active(GST_VIDEO_DECODER_SRC_PAD (self))) {
++    GST_DEBUG_OBJECT (self, "Src pad not active, not acquiring buffer and flushing instead");
++      goto flushing;
++  }
++
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+   port = self->eglimage ? self->egl_out_port : self->dec_out_port;
+ #else
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-config-files-path.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-config-files-path.patch
new file mode 100644
index 0000000..a7da922
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-config-files-path.patch
@@ -0,0 +1,137 @@
+--- a/config/bellagio/gstomx.conf
++++ b/config/bellagio/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.mpeg4
+ rank=256
+ in-port-index=0
+@@ -9,7 +9,7 @@
+ 
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.avc
+ rank=256
+ in-port-index=0
+@@ -18,7 +18,7 @@
+ 
+ [omxmpeg4videoenc]
+ type-name=GstOMXMPEG4VideoEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_encoder.mpeg4
+ rank=0
+ in-port-index=0
+@@ -27,7 +27,7 @@
+ 
+ [omxaacenc]
+ type-name=GstOMXAACEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.audio_encoder.aac
+ rank=0
+ in-port-index=0
+--- a/config/rpi/gstomx.conf
++++ b/config/rpi/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg2videodec]
+ type-name=GstOMXMPEG2VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -9,7 +9,7 @@
+ 
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -18,7 +18,7 @@
+ 
+ [omxh263dec]
+ type-name=GstOMXH263Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -27,7 +27,7 @@
+ 
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -36,7 +36,7 @@
+ 
+ [omxtheoradec]
+ type-name=GstOMXTheoraDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -45,7 +45,7 @@
+ 
+ [omxvp8dec]
+ type-name=GstOMXVP8Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -54,7 +54,7 @@
+ 
+ [omxmjpegdec]
+ type-name=GstOMXMJPEGDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -63,7 +63,7 @@
+ 
+ [omxvc1dec]
+ type-name=GstOMXWMVDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=256
+ in-port-index=130
+@@ -73,7 +73,7 @@
+ 
+ [omxh264enc]
+ type-name=GstOMXH264Enc
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_encode
+ rank=257
+ in-port-index=200
+@@ -82,7 +82,7 @@
+ 
+ [omxanalogaudiosink]
+ type-name=GstOMXAnalogAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=256
+ in-port-index=100
+@@ -92,7 +92,7 @@
+ 
+ [omxhdmiaudiosink]
+ type-name=GstOMXHdmiAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=257
+ in-port-index=100
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0002-fix-decoder-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0002-fix-decoder-flushing.patch
new file mode 100644
index 0000000..d4c7c81
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0002-fix-decoder-flushing.patch
@@ -0,0 +1,16 @@
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..c382019 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -1508,8 +1508,8 @@ gst_omx_port_set_flushing (GstOMXPort * port, GstClockTime timeout,
+     last_error = OMX_ErrorNone;
+     gst_omx_component_handle_messages (comp);
+     while (signalled && last_error == OMX_ErrorNone && !port->flushed
+-        && port->buffers
+-        && port->buffers->len > g_queue_get_length (&port->pending_buffers)) {
++     /* && port->buffers
++        && port->buffers->len > g_queue_get_length (&port->pending_buffers) */) {
+       signalled = gst_omx_component_wait_message (comp, timeout);
+       if (signalled)
+         gst_omx_component_handle_messages (comp);
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0003-no-timeout-on-get-state.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0003-no-timeout-on-get-state.patch
new file mode 100644
index 0000000..0a0050d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0003-no-timeout-on-get-state.patch
@@ -0,0 +1,16 @@
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 0d4e7a1..a0d9c74 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1697,9 +1697,9 @@ gst_omx_video_dec_stop (GstVideoDecoder * decoder)
+   g_cond_broadcast (&self->drain_cond);
+   g_mutex_unlock (&self->drain_lock);
+ 
+-  gst_omx_component_get_state (self->dec, 5 * GST_SECOND);
++  gst_omx_component_get_state (self->dec, 0);
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+-  gst_omx_component_get_state (self->egl_render, 1 * GST_SECOND);
++  gst_omx_component_get_state (self->egl_render, 0);
+ #endif
+ 
+   gst_buffer_replace (&self->codec_data, NULL);
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch
new file mode 100644
index 0000000..98689f3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch
@@ -0,0 +1,69 @@
+From 80dddfd13aaf2fe7272765f8cf291215fe375e28 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 17 Nov 2015 16:51:27 +0000
+Subject: [PATCH] Properly handle drain requests while flushing
+
+Without this commit the decoder streaming thread stops without ever attending
+the drain request, leaving the decoder input thread waiting forever.
+---
+ omx/gstomx.c         |  7 +++++++
+ omx/gstomxvideodec.c | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..f0cd890 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -830,6 +830,13 @@ gst_omx_component_set_state (GstOMXComponent * comp, OMX_STATETYPE state)
+ done:
+ 
+   gst_omx_component_handle_messages (comp);
++
++  if (err != OMX_ErrorNone && comp->last_error == OMX_ErrorNone) {
++    GST_ERROR_OBJECT (comp->parent,
++        "Last operation returned an error. Setting last_error manually.");
++    comp->last_error = err;
++  }
++
+   g_mutex_unlock (&comp->lock);
+ 
+   if (err != OMX_ErrorNone) {
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index d531f75..a26c4a6 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1539,9 +1539,16 @@ component_error:
+ flushing:
+   {
+     GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++
++    g_mutex_lock (&self->drain_lock);
++    if (self->draining) {
++      self->draining = FALSE;
++      g_cond_broadcast (&self->drain_cond);
++    }
+     gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+     self->downstream_flow_ret = GST_FLOW_FLUSHING;
+     self->started = FALSE;
++    g_mutex_unlock (&self->drain_lock);
+     return;
+   }
+ 
+@@ -1599,8 +1606,14 @@ flow_error:
+       self->started = FALSE;
+     } else if (flow_ret == GST_FLOW_FLUSHING) {
+       GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++      g_mutex_lock (&self->drain_lock);
++      if (self->draining) {
++        self->draining = FALSE;
++        g_cond_broadcast (&self->drain_cond);
++      }
+       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+       self->started = FALSE;
++      g_mutex_unlock (&self->drain_lock);
+     }
+     GST_VIDEO_DECODER_STREAM_UNLOCK (self);
+     return;
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
new file mode 100644
index 0000000..b7a8753
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
@@ -0,0 +1,30 @@
+From 12103842d5f347cf245e71071d0c44297bcdb1f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Fri, 4 Dec 2015 18:39:59 +0100
+Subject: [PATCH] Don't abort gst_omx_video_dec_set_format() if there's a
+ timeout releasing the buffers taken by the egl_render out port
+
+---
+ omx/gstomxvideodec.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 2368f34..da35e0d 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1905,8 +1905,11 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
+               5 * GST_SECOND) != OMX_ErrorNone)
+         return FALSE;
+       if (gst_omx_port_wait_buffers_released (out_port,
+-              1 * GST_SECOND) != OMX_ErrorNone)
++              1 * GST_SECOND) != OMX_ErrorNone) {
++#if !(defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL))
+         return FALSE;
++#endif
++      }
+       if (gst_omx_port_deallocate_buffers (self->dec_in_port) != OMX_ErrorNone)
+         return FALSE;
+       if (gst_omx_video_dec_deallocate_output_buffers (self) != OMX_ErrorNone)
+-- 
+2.1.4
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch
new file mode 100644
index 0000000..ace60a6
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch
@@ -0,0 +1,48 @@
+From d2df0fb032c36b366a08a1355c4f4c816eb53447 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Aur=C3=A9lien=20Zanelli?= <aurelien.zanelli@darkosphere.fr>
+Date: Fri, 3 Jul 2015 00:26:48 +0200
+Subject: [PATCH] omxvideodec: unref allocator after getting it from allocation
+ query
+
+Otherwise a reference will be leaked for each allocator. It only happens
+when target platform is Raspberry Pi and when we have GL support.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=751867
+---
+ omx/gstomxvideodec.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index cd24944..b8c3756 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -2530,14 +2530,18 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
+         GstAllocationParams params;
+ 
+         gst_query_parse_nth_allocation_param (query, i, &allocator, &params);
+-        if (allocator
+-            && g_strcmp0 (allocator->mem_type,
+-                GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
+-          found = TRUE;
+-          gst_query_set_nth_allocation_param (query, 0, allocator, &params);
+-          while (gst_query_get_n_allocation_params (query) > 1)
+-            gst_query_remove_nth_allocation_param (query, 1);
+-          break;
++        if (allocator) {
++          if (g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
++            found = TRUE;
++            gst_query_set_nth_allocation_param (query, 0, allocator, &params);
++            while (gst_query_get_n_allocation_params (query) > 1)
++              gst_query_remove_nth_allocation_param (query, 1);
++          }
++
++          gst_object_unref (allocator);
++
++          if (found)
++            break;
+         }
+       }
+ 
+-- 
+2.5.5
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch
new file mode 100644
index 0000000..ed828c3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch
@@ -0,0 +1,115 @@
+From 1cb902edb51d8f5d95f910b79b9b4c208550a7b6 Mon Sep 17 00:00:00 2001
+From: Gwang Yoon Hwang <yoon@igalia.com>
+Date: Wed, 20 Jan 2016 03:10:38 +0900
+Subject: [PATCH] omxvideodec : Use gstglmemoryegl for the RPi
+
+Modified to use gstglmemoryegl to avoid texture creation/copy operations
+at the glupload.
+---
+ omx/gstomxvideodec.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index ec97731..c9d60ff 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -38,7 +38,7 @@
+ 
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+ #include <gst/gl/gl.h>
+-#include <gst/gl/egl/gsteglimagememory.h>
++#include <gst/gl/egl/gstglmemoryegl.h>
+ #endif
+ 
+ #if defined (USE_OMX_TARGET_RPI) && defined(__GNUC__)
+@@ -125,7 +125,7 @@ gst_omx_video_dec_class_init (GstOMXVideoDecClass * klass)
+   klass->cdata.type = GST_OMX_COMPONENT_TYPE_FILTER;
+   klass->cdata.default_src_template_caps =
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+-      GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
++      GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
+       "RGBA") "; "
+ #endif
+       "video/x-raw, "
+@@ -596,8 +596,8 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
+     gst_structure_free (config);
+ 
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+-    eglimage = self->eglimage && (allocator
+-        && g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0);
++    eglimage = self->eglimage
++               && (allocator && GST_IS_GL_MEMORY_EGL_ALLOCATOR (allocator));
+ #else
+     /* TODO: Implement something that works for other targets too */
+     eglimage = FALSE;
+@@ -640,12 +640,12 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
+     for (i = 0; i < min; i++) {
+       GstBuffer *buffer;
+       GstMemory *mem;
++      GstGLMemoryEGL *gl_mem;
+ 
+       if (gst_buffer_pool_acquire_buffer (pool, &buffer, &params) != GST_FLOW_OK
+           || gst_buffer_n_memory (buffer) != 1
+           || !(mem = gst_buffer_peek_memory (buffer, 0))
+-          || g_strcmp0 (mem->allocator->mem_type,
+-              GST_EGL_IMAGE_MEMORY_TYPE) != 0) {
++          || !GST_IS_GL_MEMORY_EGL_ALLOCATOR (mem->allocator)) {
+         GST_INFO_OBJECT (self, "Failed to allocated %d-th EGLImage", i);
+         g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
+         g_list_free (images);
+@@ -656,13 +656,13 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
+         err = OMX_ErrorUndefined;
+         goto done;
+       }
+-
++      gl_mem = (GstGLMemoryEGL *)mem;
+       buffers = g_list_append (buffers, buffer);
+-      gst_egl_image_memory_set_orientation (mem,
++      gst_gl_memory_egl_set_orientation (gl_mem,
+           GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_FLIP);
+-      images = g_list_append (images, gst_egl_image_memory_get_image (mem));
++      images = g_list_append (images, gst_gl_memory_egl_get_image (gl_mem));
+       if (egl_display == EGL_NO_DISPLAY)
+-        egl_display = gst_egl_image_memory_get_display (mem);
++        egl_display = gst_gl_memory_egl_get_display (gl_mem);
+     }
+ 
+     GST_DEBUG_OBJECT (self, "Allocated %d EGLImages successfully", min);
+@@ -954,14 +954,14 @@ gst_omx_video_dec_reconfigure_output_port (GstOMXVideoDec * self)
+         gst_caps_unref (state->caps);
+       state->caps = gst_video_info_to_caps (&state->info);
+       gst_caps_set_features (state->caps, 0,
+-          gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, NULL));
++          gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, NULL));
+ 
+       /* try to negotiate with caps feature */
+       if (!gst_video_decoder_negotiate (GST_VIDEO_DECODER (self))) {
+ 
+         GST_DEBUG_OBJECT (self,
+             "Failed to negotiate with feature %s",
+-            GST_CAPS_FEATURE_MEMORY_EGL_IMAGE);
++            GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+ 
+         if (state->caps)
+           gst_caps_replace (&state->caps, NULL);
+@@ -2554,7 +2554,7 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
+ 
+         gst_query_parse_nth_allocation_param (query, i, &allocator, &params);
+         if (allocator) {
+-          if (g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
++          if (GST_IS_GL_MEMORY_EGL_ALLOCATOR (allocator)) {
+             found = TRUE;
+             gst_query_set_nth_allocation_param (query, 0, allocator, &params);
+             while (gst_query_get_n_allocation_params (query) > 1)
+@@ -2572,7 +2572,7 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
+        * and if allocator is not of type memory EGLImage then fails */
+       if (feature
+           && gst_caps_features_contains (feature,
+-              GST_CAPS_FEATURE_MEMORY_EGL_IMAGE) && !found) {
++              GST_CAPS_FEATURE_MEMORY_GL_MEMORY) && !found) {
+         return FALSE;
+       }
+     }
+-- 
+2.5.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
new file mode 100644
index 0000000..a7da922
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
@@ -0,0 +1,137 @@
+--- a/config/bellagio/gstomx.conf
++++ b/config/bellagio/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.mpeg4
+ rank=256
+ in-port-index=0
+@@ -9,7 +9,7 @@
+ 
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.avc
+ rank=256
+ in-port-index=0
+@@ -18,7 +18,7 @@
+ 
+ [omxmpeg4videoenc]
+ type-name=GstOMXMPEG4VideoEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_encoder.mpeg4
+ rank=0
+ in-port-index=0
+@@ -27,7 +27,7 @@
+ 
+ [omxaacenc]
+ type-name=GstOMXAACEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.audio_encoder.aac
+ rank=0
+ in-port-index=0
+--- a/config/rpi/gstomx.conf
++++ b/config/rpi/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg2videodec]
+ type-name=GstOMXMPEG2VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -9,7 +9,7 @@
+ 
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -18,7 +18,7 @@
+ 
+ [omxh263dec]
+ type-name=GstOMXH263Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -27,7 +27,7 @@
+ 
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -36,7 +36,7 @@
+ 
+ [omxtheoradec]
+ type-name=GstOMXTheoraDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -45,7 +45,7 @@
+ 
+ [omxvp8dec]
+ type-name=GstOMXVP8Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -54,7 +54,7 @@
+ 
+ [omxmjpegdec]
+ type-name=GstOMXMJPEGDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -63,7 +63,7 @@
+ 
+ [omxvc1dec]
+ type-name=GstOMXWMVDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=256
+ in-port-index=130
+@@ -73,7 +73,7 @@
+ 
+ [omxh264enc]
+ type-name=GstOMXH264Enc
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_encode
+ rank=257
+ in-port-index=200
+@@ -82,7 +82,7 @@
+ 
+ [omxanalogaudiosink]
+ type-name=GstOMXAnalogAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=256
+ in-port-index=100
+@@ -92,7 +92,7 @@
+ 
+ [omxhdmiaudiosink]
+ type-name=GstOMXHdmiAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=257
+ in-port-index=100
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
new file mode 100644
index 0000000..aef21a5
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
@@ -0,0 +1,47 @@
+From 2e111e52f96f0b942abda120c30a876629bd73fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Mon, 25 May 2015 14:53:35 +0200
+Subject: [PATCH] Don't try to acquire buffer when src pad isn't active
+
+This solves a race condition when setting the pipeline from PAUSE to
+NULL while the decoder loop is still running. Without this patch, the
+thread which interacts with the decode sink pad gets blocked here:
+
+  gst_element_change_state()
+  gst_element_change_state_func()
+  gst_element_pads_activate() --> Deactivating pads
+  activate_pads()
+  gst_pad_set_active()
+  gst_pad_activate_mode()
+  post_activate()
+  GST_PAD_STREAM_LOCK()
+
+while gst_omx_port_acquire_buffer() gets stalled forever in
+gst_omx_component_wait_message() waiting for a message that will never
+arrive:
+
+  gst_omx_video_dec_loop()
+  gst_omx_port_acquire_buffer()
+  gst_omx_component_wait_message()
+---
+ omx/gstomxvideodec.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index cd24944..57a61dd 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1247,6 +1247,11 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self)
+   GstClockTimeDiff deadline;
+   OMX_ERRORTYPE err;
+ 
++  if (!gst_pad_is_active(GST_VIDEO_DECODER_SRC_PAD (self))) {
++    GST_DEBUG_OBJECT (self, "Src pad not active, not acquiring buffer and flushing instead");
++      goto flushing;
++  }
++
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+   port = self->eglimage ? self->egl_out_port : self->dec_out_port;
+ #else
+-- 
+1.8.3.2
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
new file mode 100644
index 0000000..a244b09
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
@@ -0,0 +1,15 @@
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..c382019 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -1508,8 +1508,8 @@ gst_omx_port_set_flushing (GstOMXPort * port, GstClockTime timeout,
+     last_error = OMX_ErrorNone;
+     gst_omx_component_handle_messages (comp);
+     while (signalled && last_error == OMX_ErrorNone && !port->flushed
+-        && port->buffers
+-        && port->buffers->len > g_queue_get_length (&port->pending_buffers)) {
++     /* && port->buffers
++        && port->buffers->len > g_queue_get_length (&port->pending_buffers) */) {
+       signalled = gst_omx_component_wait_message (comp, timeout);
+       if (signalled)
+         gst_omx_component_handle_messages (comp);
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
new file mode 100644
index 0000000..0a0050d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
@@ -0,0 +1,16 @@
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 0d4e7a1..a0d9c74 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1697,9 +1697,9 @@ gst_omx_video_dec_stop (GstVideoDecoder * decoder)
+   g_cond_broadcast (&self->drain_cond);
+   g_mutex_unlock (&self->drain_lock);
+ 
+-  gst_omx_component_get_state (self->dec, 5 * GST_SECOND);
++  gst_omx_component_get_state (self->dec, 0);
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+-  gst_omx_component_get_state (self->egl_render, 1 * GST_SECOND);
++  gst_omx_component_get_state (self->egl_render, 0);
+ #endif
+ 
+   gst_buffer_replace (&self->codec_data, NULL);
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
new file mode 100644
index 0000000..98689f3
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
@@ -0,0 +1,69 @@
+From 80dddfd13aaf2fe7272765f8cf291215fe375e28 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 17 Nov 2015 16:51:27 +0000
+Subject: [PATCH] Properly handle drain requests while flushing
+
+Without this commit the decoder streaming thread stops without ever attending
+the drain request, leaving the decoder input thread waiting forever.
+---
+ omx/gstomx.c         |  7 +++++++
+ omx/gstomxvideodec.c | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..f0cd890 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -830,6 +830,13 @@ gst_omx_component_set_state (GstOMXComponent * comp, OMX_STATETYPE state)
+ done:
+ 
+   gst_omx_component_handle_messages (comp);
++
++  if (err != OMX_ErrorNone && comp->last_error == OMX_ErrorNone) {
++    GST_ERROR_OBJECT (comp->parent,
++        "Last operation returned an error. Setting last_error manually.");
++    comp->last_error = err;
++  }
++
+   g_mutex_unlock (&comp->lock);
+ 
+   if (err != OMX_ErrorNone) {
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index d531f75..a26c4a6 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1539,9 +1539,16 @@ component_error:
+ flushing:
+   {
+     GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++
++    g_mutex_lock (&self->drain_lock);
++    if (self->draining) {
++      self->draining = FALSE;
++      g_cond_broadcast (&self->drain_cond);
++    }
+     gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+     self->downstream_flow_ret = GST_FLOW_FLUSHING;
+     self->started = FALSE;
++    g_mutex_unlock (&self->drain_lock);
+     return;
+   }
+ 
+@@ -1599,8 +1606,14 @@ flow_error:
+       self->started = FALSE;
+     } else if (flow_ret == GST_FLOW_FLUSHING) {
+       GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++      g_mutex_lock (&self->drain_lock);
++      if (self->draining) {
++        self->draining = FALSE;
++        g_cond_broadcast (&self->drain_cond);
++      }
+       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+       self->started = FALSE;
++      g_mutex_unlock (&self->drain_lock);
+     }
+     GST_VIDEO_DECODER_STREAM_UNLOCK (self);
+     return;
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
new file mode 100644
index 0000000..b7a8753
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
@@ -0,0 +1,30 @@
+From 12103842d5f347cf245e71071d0c44297bcdb1f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Fri, 4 Dec 2015 18:39:59 +0100
+Subject: [PATCH] Don't abort gst_omx_video_dec_set_format() if there's a
+ timeout releasing the buffers taken by the egl_render out port
+
+---
+ omx/gstomxvideodec.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 2368f34..da35e0d 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1905,8 +1905,11 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
+               5 * GST_SECOND) != OMX_ErrorNone)
+         return FALSE;
+       if (gst_omx_port_wait_buffers_released (out_port,
+-              1 * GST_SECOND) != OMX_ErrorNone)
++              1 * GST_SECOND) != OMX_ErrorNone) {
++#if !(defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL))
+         return FALSE;
++#endif
++      }
+       if (gst_omx_port_deallocate_buffers (self->dec_in_port) != OMX_ErrorNone)
+         return FALSE;
+       if (gst_omx_video_dec_deallocate_output_buffers (self) != OMX_ErrorNone)
+-- 
+2.1.4
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend
new file mode 100644
index 0000000..1e84abe
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend
@@ -0,0 +1,24 @@
+#
+# Need to make this conditional to gstreamer1
+#
+SRC_URI_append_rpi = " \
+             file://0001-config-files-path.patch \
+             file://0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
+             file://0002-fix-decoder-flushing.patch \
+             file://0003-no-timeout-on-get-state.patch \
+             file://0004-Properly-handle-drain-requests-while-flushing.patch \
+             file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
+             file://0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch \
+             file://0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx-1.2.0:"
+
+GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
+GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
+
+
+# How to make this RPI specific?
+EXTRA_OECONF_append_rpi  = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
+#examples only build with GL but not GLES, so disable it for RPI
+EXTRA_OECONF_append_rpi = " --disable-examples"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend
new file mode 100644
index 0000000..a13aad7
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend
@@ -0,0 +1,22 @@
+#
+# Need to make this conditional to gstreamer1
+#
+SRC_URI_append_rpi = " \
+             file://0001-config-files-path.patch \
+             file://0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
+             file://0003-fix-decoder-flushing.patch \
+             file://0003-no-timeout-on-get-state.patch \
+             file://0004-Properly-handle-drain-requests-while-flushing.patch \
+             file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx:"
+
+GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
+GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
+
+
+# How to make this RPI specific?
+EXTRA_OECONF_append_rpi  = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
+#examples only build with GL but not GLES, so disable it for RPI
+EXTRA_OECONF_append_rpi = " --disable-examples"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
new file mode 100644
index 0000000..ab0280e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
@@ -0,0 +1,2 @@
+EXTRA_OECONF_append_rpi = " CPPFLAGS='-I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads \
+                                   -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux'"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0001-Remove-Makefile.include-which-includes-hardcoded.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0001-Remove-Makefile.include-which-includes-hardcoded.patch
new file mode 100644
index 0000000..151c33c
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0001-Remove-Makefile.include-which-includes-hardcoded.patch
@@ -0,0 +1,77 @@
+From a2a28fb7c4e8354cc0f90454e9bd151c16a6bf8b Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@gherzan.ro>
+Date: Tue, 20 Aug 2013 16:10:51 +0300
+Subject: [PATCH] Remove Makefile.include which includes hardcoded
+
+Remove Makefile.include which includes hardcoded paths and rely on
+variables provided by build system.
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Updated patch to apply to c0dd9502ed2c43c487674939195c69680f3d98b0 revision
+
+diff --git a/Makefile b/Makefile
+index f348465..65f7637 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,4 +1,3 @@
+-include Makefile.include
+ 
+ CFLAGS+=-std=c++0x -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CMAKE_CONFIG -D__VIDEOCORE4__ -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG  -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_OPT_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DHAVE_LIBSWRESAMPLE_SWRESAMPLE_H -DOMX -DOMX_SKIP64BIT -ftree-vectorize -DUSE_EXTERNAL_OMX -DTARGET_RASPBERRY_PI -DUSE_EXTERNAL_LIBBCM_HOST
+ 
+diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
+index 083e214..3b31a82 100644
+--- a/Makefile.ffmpeg
++++ b/Makefile.ffmpeg
+@@ -1,4 +1,3 @@
+-include Makefile.include
+ 
+ CFLAGS=-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_HAVE_SBRK -D_LARGEFILE64_SOURCE -DHAVE_CMAKE_CONFIG -DHAVE_VMCS_CONFIG -D_REENTRANT -DUSE_VCHIQ_ARM -DVCHI_BULK_ALIGN=1 -DVCHI_BULK_GRANULARITY=1 -DEGL_SERVER_DISPMANX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__VIDEOCORE4__ -DGRAPHICS_X_VG=1 -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG  -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DOMX -DOMX_SKIP64BIT
+ 
+diff --git a/Makefile.include b/Makefile.include
+deleted file mode 100644
+index 58e9560..0000000
+--- a/Makefile.include
++++ /dev/null
+@@ -1,40 +0,0 @@
+-USE_BUILDROOT=0
+-FLOAT=hard
+-
+-ifeq ($(USE_BUILDROOT), 1)
+-BUILDROOT	:=/opt/xbmc-bcm/buildroot
+-SDKSTAGE	:=$(BUILDROOT)/output/staging
+-TARGETFS	:=$(BUILDROOT)/output/target
+-TOOLCHAIN	:=$(BUILDROOT)/output/host/usr/
+-HOST			:=arm-unknown-linux-gnueabi
+-SYSROOT		:=$(BUILDROOT)/output/host/usr/arm-unknown-linux-gnueabi/sysroot
+-else
+-BUILDROOT	:=/opt/bcm-rootfs
+-SDKSTAGE	:=/opt/bcm-rootfs
+-TARGETFS	:=/opt/bcm-rootfs
+-TOOLCHAIN	:=/home/dc4/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
+-HOST		:=arm-linux-gnueabihf
+-#SYSROOT		:=$(TOOLCHAIN)/arm-bcm2708hardfp-linux-gnueabi/sysroot
+-SYSROOT		:=/opt/bcm-rootfs
+-endif
+-
+-JOBS=7
+-
+-CFLAGS			:= -isystem$(PREFIX)/include
+-CXXFLAGS		:= $(CFLAGS)
+-CPPFLAGS		:= $(CFLAGS)
+-LDFLAGS			:= -L$(BUILDROOT)/lib
+-LD					:= $(TOOLCHAIN)/bin/$(HOST)-ld --sysroot=$(SYSROOT)
+-CC					:= $(TOOLCHAIN)/bin/$(HOST)-gcc --sysroot=$(SYSROOT)
+-CXX         := $(TOOLCHAIN)/bin/$(HOST)-g++ --sysroot=$(SYSROOT)
+-OBJDUMP			:= $(TOOLCHAIN)/bin/$(HOST)-objdump
+-RANLIB			:= $(TOOLCHAIN)/bin/$(HOST)-ranlib
+-STRIP				:= $(TOOLCHAIN)/bin/$(HOST)-strip
+-AR 					:= $(TOOLCHAIN)/bin/$(HOST)-ar
+-CXXCP 			:= $(CXX) -E
+-PATH 				:= $(PREFIX)/bin:$(BUILDROOT)/output/host/usr/bin:$(PATH)
+-
+-CFLAGS			+= -pipe -mfloat-abi=$(FLOAT) -mcpu=arm1176jzf-s -fomit-frame-pointer -mabi=aapcs-linux -mtune=arm1176jzf-s -mfpu=vfp -Wno-psabi -mno-apcs-stack-check -g -mstructure-size-boundary=32 -mno-sched-prolog
+-LDFLAGS			+= -L$(SDKSTAGE)/lib -L$(SDKSTAGE)/usr/lib -L$(SDKSTAGE)/opt/vc/lib/ -Lpcre/build
+-#INCLUDES		+= -isystem$(SDKSTAGE)/usr/include -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SYSROOT)/usr/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -isystem$(SDKSTAGE)/usr/include/freetype2
+-INCLUDES		+= -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SYSROOT)/usr/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -Ipcre/build -Iboost-trunk -Ifreetype2/include
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch
new file mode 100644
index 0000000..75f7254
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch
@@ -0,0 +1,53 @@
+From 1e92da659375eae1622984d4cc0ffd2a7b082fcf Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@gherzan.ro>
+Date: Sun, 24 Aug 2014 00:13:13 +0200
+Subject: [PATCH] Libraries and headers from ffmpeg are installed in /usr.
+
+Don't search for libraries and headers in /usr/local.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+---
+ Makefile        | 6 +++---
+ Makefile.ffmpeg | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index be97c2b..2c120fc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,9 +1,9 @@
+ 
+ CFLAGS+=-std=c++0x -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CMAKE_CONFIG -D__VIDEOCORE4__ -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG  -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_OPT_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DHAVE_LIBSWRESAMPLE_SWRESAMPLE_H -DOMX -DOMX_SKIP64BIT -ftree-vectorize -DUSE_EXTERNAL_OMX -DTARGET_RASPBERRY_PI -DUSE_EXTERNAL_LIBBCM_HOST
+ 
+-LDFLAGS+=-L./ -Lffmpeg_compiled/usr/local/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz
++LDFLAGS+=-L./ -Lffmpeg_compiled/usr/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz
+ 
+-INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/local/include/ -I /usr/include/dbus-1.0 -I /usr/lib/arm-linux-gnueabihf/dbus-1.0/include
++INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/include/ -I=/usr/include/dbus-1.0 -I /usr/lib/arm-linux-gnueabihf/dbus-1.0/include
+ 
+ DIST ?= omxplayer-dist
+ 
+@@ -87,5 +87,5 @@ dist: omxplayer.bin omxplayer.1
+ 	cp COPYING $(DIST)/usr/share/doc/omxplayer
+ 	cp README.md $(DIST)/usr/share/doc/omxplayer/README
+ 	cp omxplayer.1 $(DIST)/usr/share/man/man1
+-	cp -P ffmpeg_compiled/usr/local/lib/*.so* $(DIST)/usr/lib/omxplayer/
++	cp -P ffmpeg_compiled/usr/lib/*.so* $(DIST)/usr/lib/omxplayer/
+ 	cd $(DIST); tar -czf ../$(DIST).tgz *
+diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
+index 5ccf96f..a7ddd5f 100644
+--- a/Makefile.ffmpeg
++++ b/Makefile.ffmpeg
+@@ -254,5 +254,5 @@ checkout:
+ .PHONY : install
+ install:
+ 	cd ffmpeg; make -j9 DESTDIR="$(WORK)/ffmpeg_compiled" install
+-	$(HOST)-strip ffmpeg_compiled/usr/local/lib/*.so
++	$(HOST)-strip ffmpeg_compiled/usr/lib/*.so
+ 
+-- 
+1.9.3
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0003-Remove-strip-step-in-Makefile.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0003-Remove-strip-step-in-Makefile.patch
new file mode 100644
index 0000000..7f31330
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0003-Remove-strip-step-in-Makefile.patch
@@ -0,0 +1,39 @@
+From b738724c6ca45ee5fecebed01c7ac91c92446123 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@gherzan.ro>
+Date: Sun, 24 Aug 2014 00:18:05 +0200
+Subject: [PATCH] Remove strip step in Makefile
+
+Build system will strip binaries so remove strip step in Makefile.
+Avoid warnings/errors like:
+WARNING: File '/usr/lib/omxplayer/libavutil.so.51.56.100' from
+omxplayer was already stripped, this will prevent future debugging!
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+---
+ Makefile.ffmpeg | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
+index 9d66a85..00df197 100644
+--- a/Makefile.ffmpeg
++++ b/Makefile.ffmpeg
+@@ -243,7 +243,8 @@ configure:
+ 			--disable-decoder=xbin \
+ 			--disable-decoder=idf \
+ 			--enable-decoder=opus \
+-			--cross-prefix=$(HOST)-
++			--cross-prefix=$(HOST)- \
++			--disable-stripping
+ 
+ .PHONY : clean
+ clean:
+@@ -256,5 +257,3 @@ checkout:
+ .PHONY : install
+ install:
+ 	cd ffmpeg; make -j9 DESTDIR="$(WORK)/ffmpeg_compiled" install
+-	$(HOST)-strip ffmpeg_compiled/usr/lib/*.so
+-
+-- 
+1.9.3
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch
new file mode 100644
index 0000000..edb388e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch
@@ -0,0 +1,31 @@
+From 100982ee1fc1cb571c7453d14f9acd60e67d4765 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei.gherzan@windriver.com>
+Date: Sun, 25 Jan 2015 11:13:51 +0200
+Subject: [PATCH] Add FFMPEG_EXTRA_CFLAGS and FFMPEG_EXTRA_LDFLAGS
+
+In this way we can inject flags to LD and CC using
+--extra-cflags and --extra-ldflags.
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+---
+ Makefile.ffmpeg | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
+index abe4b26..c9d42d7 100644
+--- a/Makefile.ffmpeg
++++ b/Makefile.ffmpeg
+@@ -22,7 +22,8 @@ configure:
+ 	CFLAGS="$(CFLAGS) ${INCLUDES}" \
+ 	LDFLAGS="" \
+   ./configure \
+-			--extra-cflags="-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstructure-size-boundary=32 -mno-sched-prolog" \
++			--extra-cflags="-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstructure-size-boundary=32 -mno-sched-prolog $(FFMPEG_EXTRA_CFLAGS)" \
++			--extra-ldflags="$(FFMPEG_EXTRA_LDFLAGS)" \
+ 			--enable-cross-compile \
+ 			--enable-shared \
+ 			--disable-static \
+-- 
+2.1.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/fix-tar-command-with-DIST.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/fix-tar-command-with-DIST.patch
new file mode 100644
index 0000000..ab40e40
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/fix-tar-command-with-DIST.patch
@@ -0,0 +1,21 @@
+Revert the tar command change introduced in:
+https://github.com/popcornmix/omxplayer/commit/201c77973155861e60492e45d35467b19b69c1c4
+
+This fails if DIST is an absolute path. The old command was working just fine.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -71,4 +71,4 @@ dist: omxplayer.bin
+ 	cp COPYING $(DIST)/usr/share/doc/
+ 	cp README.md $(DIST)/usr/share/doc/README
+ 	cp -P ffmpeg_compiled/usr/lib/*.so* $(DIST)/usr/lib/omxplayer/
+-	cd $(DIST); tar -czf ../$(DIST).tgz *
++	tar -czf omxplayer-dist.tar.gz $(DIST)
+\ No newline at end of file
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/use-native-pkg-config.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/use-native-pkg-config.patch
new file mode 100644
index 0000000..ed81999
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/use-native-pkg-config.patch
@@ -0,0 +1,19 @@
+Force the pkg-config native tool. Strangely ffmpeg prepends cross_prefix
+to the default value which obviously is wrong.
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Index: git/Makefile.ffmpeg
+===================================================================
+--- git.orig/Makefile.ffmpeg
++++ git/Makefile.ffmpeg
+@@ -245,7 +245,8 @@ configure:
+ 			--disable-decoder=idf \
+ 			--enable-decoder=opus \
+ 			--cross-prefix=$(HOST)- \
+-			--disable-stripping
++			--disable-stripping \
++			--pkg-config=pkg-config
+ 
+ .PHONY : clean
+ clean:
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
new file mode 100644
index 0000000..d9460de
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
@@ -0,0 +1,71 @@
+SUMMARY = "A commandline OMX player for the Raspberry Pi"
+DESCRIPTION = "This player was developed as a testbed for the XBMC \
+Raspberry PI implementation and is quite handy to use standalone"
+HOMEPAGE = "https://github.com/popcornmix/omxplayer"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh"
+PR = "r4"
+
+SRCREV = "8466acf65f5f444dfa22631fb83c07ac759c02a5"
+SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \
+           file://0001-Remove-Makefile.include-which-includes-hardcoded.patch \
+           file://0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch \
+           file://0003-Remove-strip-step-in-Makefile.patch \
+           file://0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch \
+           file://fix-tar-command-with-DIST.patch \
+           file://use-native-pkg-config.patch \
+           "
+S = "${WORKDIR}/git"
+
+COMPATIBLE_MACHINE = "raspberrypi"
+
+inherit autotools-brokensep pkgconfig
+
+# Needed in ffmpeg configure
+export TEMPDIR = "${S}/tmp"
+
+# Needed in Makefile.ffmpeg
+export HOST = "${HOST_SYS}"
+export WORK = "${S}"
+export FLOAT = "${@bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "hard", "softfp", d)}"
+export FFMPEG_EXTRA_CFLAGS  = "--sysroot=${STAGING_DIR_TARGET}"
+export FFMPEG_EXTRA_LDFLAGS = "--sysroot=${STAGING_DIR_TARGET}"
+
+# Needed in top Makefile
+export LDFLAGS = "-L${S}/ffmpeg_compiled/usr/lib \
+                  -L${STAGING_DIR_HOST}/lib \
+                  -L${STAGING_DIR_HOST}/usr/lib \
+                 "
+export INCLUDES = "-isystem${STAGING_DIR_HOST}/usr/include/interface/vcos/pthreads \
+                   -isystem${STAGING_DIR_HOST}/usr/include/freetype2 \
+                   -isystem${STAGING_DIR_HOST}/usr/include/interface/vmcs_host/linux \
+                   -isystem${STAGING_DIR_HOST}/usr/include/dbus-1.0 \
+                   -isystem${STAGING_DIR_HOST}/usr/lib/dbus-1.0/include \
+                  "
+export DIST = "${D}"
+
+do_compile() {
+    # Needed for compiler test in ffmpeg's configure
+    mkdir -p tmp
+
+    oe_runmake ffmpeg
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake STRIP='echo skipping strip' dist
+    mkdir -p ${D}${datadir}/fonts/truetype/freefont/
+    install ${S}/fonts/* ${D}${datadir}/fonts/truetype/freefont/
+}
+
+FILES_${PN} = "${bindir}/omxplayer* \
+               ${libdir}/omxplayer/lib*${SOLIBS} \
+               ${datadir}/fonts"
+
+FILES_${PN}-dev += "${libdir}/omxplayer/*.so"
+
+RDEPENDS_${PN} += "bash procps"
diff --git a/import-layers/meta-raspberrypi/scripts/lib/image/canned-wks/sdimage-raspberrypi.wks b/import-layers/meta-raspberrypi/scripts/lib/image/canned-wks/sdimage-raspberrypi.wks
new file mode 100644
index 0000000..353daac
--- /dev/null
+++ b/import-layers/meta-raspberrypi/scripts/lib/image/canned-wks/sdimage-raspberrypi.wks
@@ -0,0 +1,6 @@
+# short-description: Create Raspberry Pi SD card image
+# long-description: Creates a partitioned SD card image for use with
+# Raspberry Pi. Boot files are located in the first vfat partition.
+
+part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 20
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096