From owner-freebsd-multimedia@FreeBSD.ORG Sun Aug 22 14:59:18 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BAC33106566C; Sun, 22 Aug 2010 14:59:18 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 76C9A8FC18; Sun, 22 Aug 2010 14:59:18 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id 6DC7A1E00263; Sun, 22 Aug 2010 16:59:17 +0200 (CEST) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.4/8.14.3) with ESMTP id o7MEvqfG009883; Sun, 22 Aug 2010 16:57:52 +0200 (CEST) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.4/8.14.3/Submit) id o7MEvqeZ009882; Sun, 22 Aug 2010 16:57:52 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Sun, 22 Aug 2010 16:57:52 +0200 To: Hans Petter Selasky Message-ID: <20100822145752.GA9847@triton8.kn-bremen.de> References: <20100724154459.GA5755@triton8.kn-bremen.de> <20100724160514.GA7452@triton8.kn-bremen.de> <20100821202717.GA44864@triton8.kn-bremen.de> <201008212328.13612.hselasky@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201008212328.13612.hselasky@freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: freebsd-multimedia@freebsd.org, Juergen Lock Subject: Re: usb tuners that don't immediately work with webcamd X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Aug 2010 14:59:18 -0000 On Sat, Aug 21, 2010 at 11:28:13PM +0200, Hans Petter Selasky wrote: > On Saturday 21 August 2010 22:27:17 Juergen Lock wrote: > > On Sat, Jul 24, 2010 at 06:05:14PM +0200, Juergen Lock wrote: >[...] > > > I forgot to say: > > > Someone(tm) may want to grep for '#if.*defined(CONFIG_' and try > > > > > > to enable the remaining drivers that aren't yet... (and then only > > > disable those that don't build with webcamd.) > > > > Ok so I finally looked at this myself: (patch against webcamd svn > > which already has some missing drivers added so it doesn't work as is > > for the version currently in ports; some of the -DCONFIG_foo I added > > may not be relevant and three drivers didn't build.) > > > > Patch also at: > > > > http://people.freebsd.org/~nox/tmp/webcamd-moretuners.patch > > > > See further up in the quoted parts of this message about how to > > build webcamd svn... > > > > Enjoy, > > Juergen > > Hi, Hi! > > Committed to r1621 w/ some modifications. Please svn up and verify that I did > it right. > Looking good... > The files that didn't compile I fixed. > Nice! > Thanks for the patch! You're welcome! :) Juergen From owner-freebsd-multimedia@FreeBSD.ORG Sun Aug 22 22:35:43 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7AD510656A3; Sun, 22 Aug 2010 22:35:43 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 6BD8C8FC1E; Sun, 22 Aug 2010 22:35:43 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7MMZg2E022381; Sun, 22 Aug 2010 18:35:42 -0400 (EDT) Received: from 184-210-33-84.pools.spcsdns.net (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7MMZXVL005887; Sun, 22 Aug 2010 18:35:34 -0400 (EDT) Message-ID: <4C71A635.6070205@freebsd.org> Date: Sun, 22 Aug 2010 18:35:33 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Juergen Lock References: <4C66C4BC.4040504@janh.de> <4C6704A6.3050407@FreeBSD.org> <201008191617.o7JGHq9c003392@triton8.kn-bremen.de> <4C6DC8BC.9080100@freebsd.org> <20100820180648.GA90683@triton8.kn-bremen.de> In-Reply-To: <20100820180648.GA90683@triton8.kn-bremen.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: me@janh.de, kde@freebsd.org, hselasky@freebsd.org, freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Aug 2010 22:35:43 -0000 On 8/20/10 2:06 PM, Juergen Lock wrote: > > b) (this is the bug) hald's current handling of multiple devices > in hfp_v4l_get_unit() is broken (the last number in webcamd's pidfile > name is _not_ the device index, it's always 0 or at least it is > here), and also it would have to be extended/adjusted for webcamd > svn which now supports dvb devices with multiple tuners, like > the dual dvb-t one I have here. Ugh. I only had one Quickcam with which to test. > > Because of the latter webcamd now allocates each device's first tuner > index in increments of 8 (I think that's the max number of tuners on > a single device the Linux code will handle), and so if I use webcamd > with my two devices for a total of three tuners I get e.g. > /dev/dvb/adapter0/*, /dev/dvb/adapter8/*, and /dev/dvb/adapter9/* > (and I have to symlink adapter8 to adapter1 and adapter9 to adapter2 > if I want vdr to find all of them, but of course that shouldn't > affect hal and kdelibs/kaffeine.) > > I have Cc'd hps, maybe he has an idea how to get the device index > out of a running webcamd for hal to use... (maybe webcamd should > also do a setproctitle()?) Actually, I'd prefer if there was a file or socket from which I could read to get this data. hps, is this doable? That is, could I have a file or socket that would allow me to map a USB bus/addr to a video (or dvb) device ID? > > Oh and also I wondered whether there might be races in case of > hotplugging a device, i.e. if probe-video4linux.c gets run right > at the moment after plugging a device in webcamd and the Linux code it > runs might not yet have finished initializing and device nodes might > not (all?) have been created yet? Yeah, there definitely is. What might be a solution to all of this is to add support to webcamd to run hal-device --add when a new device comes online. That would obviate the need for any hal code. If this is done, hald would need to drop its dependency on webcamd, and webcamd would need to start depending on hald (in rc.d only). If hal-device doesn't exist or fails, that would just be ignored by webcamd. Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Sun Aug 22 23:21:18 2010 Return-Path: Delivered-To: multimedia@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43E1910656B8 for ; Sun, 22 Aug 2010 23:21:18 +0000 (UTC) (envelope-from jaymax36@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id CFCC78FC1A for ; Sun, 22 Aug 2010 23:21:17 +0000 (UTC) Received: by wyj26 with SMTP id 26so7252163wyj.13 for ; Sun, 22 Aug 2010 16:21:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=yc2hRJtptg03p5QqoQ4FVPW7+3kLi818VC3myBd4OPI=; b=AO3xQcicRR/UbKYvcBdB8OJE1q+7C5mmz4OcGYTdx68NkbkgsQaijiUsmum6HzVLhS 7V7JeM3Ms2Ue+qzaRVVwDHn6VMDqBnyA3BEuKbj7e5pf7MDKgdT4N/G5zOsm7IZHbaKj l4U4GSLKnOS4i6T7KXELiVU0rQk2NGZeVMhxo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=SKda2pQOeZ4em0RJnH/NZtPKuvBQadoa7bkabl3YsD6Orh3D77eZXxOtVWRnUFLFgw Luo3gpTOOAv05JvsYBLTU9teJ39R8IQ4bt5Xhwg11ENoIuch8Q65PeMkhPnsqy6AEcjw 2k2pYK1hKp4FCQ8CxK1F1cyXIkjt66dA+xEgc= MIME-Version: 1.0 Received: by 10.227.155.82 with SMTP id r18mr3832073wbw.70.1282517565123; Sun, 22 Aug 2010 15:52:45 -0700 (PDT) Received: by 10.227.151.69 with HTTP; Sun, 22 Aug 2010 15:52:45 -0700 (PDT) Date: Sun, 22 Aug 2010 15:52:45 -0700 Message-ID: From: Joseph Maxwell To: multimedia@FreeBSD.org X-Mailman-Approved-At: Sun, 22 Aug 2010 23:31:00 +0000 Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Problem w/ gstreamer-plugins-libpng X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Aug 2010 23:21:18 -0000 Attempting to reinstall /usr/ports/graphics/gstreamer-plugins-libpng. from the ports. Did make deinstall etc make ==> configure: Requested 'gstreamer-0.10 >= 0.10.30' but version of GStreamer is 0.10.22 configure: error: no gstreamer-0.10 >= 0.10.30 (GStreamer) found ===> Script "configure" failed unexpectedly. Please report the problem to multimedia@FreeBSD.org [maintainer] and attach the "/usr/ports/graphics/gstreamer-plugins-libpng/work/gst-plugins-good-0.10.24/config.log" including the output of the failure of your make command. Also, it might be a good idea to provide an overview of all packages installed on your system (e.g. an `ls /var/db/pkg`). *** Error code 1 Stop in /usr/ports/graphics/gstreamer-plugins-libpng. My ports was just updated yesterday (daily cron process) make ran from /usr/ports/graphics/gstreamer-plugins-libpng From owner-freebsd-multimedia@FreeBSD.ORG Sun Aug 22 23:42:40 2010 Return-Path: Delivered-To: multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8996D1065673 for ; Sun, 22 Aug 2010 23:42:40 +0000 (UTC) (envelope-from jaymax36@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 7122E8FC17 for ; Sun, 22 Aug 2010 23:42:39 +0000 (UTC) Received: by wwf26 with SMTP id 26so186171wwf.31 for ; Sun, 22 Aug 2010 16:42:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=UwHPt1/3SnzjMYjdVPZsyqOQQTkSxHAHB4w0jngJUvs=; b=YAlb94ZBO3fhJ26ypJUpYEk5+nF4cDcoq7cXSA139hQjOY8XE1Sn0+NXVbKLjwgu4w HR73rU+MooBh5W4rHvRe/4meVQ1Bl5Rx8MprrlgiTjvbp1NS72CMAMGoBybcefqI5Z34 /lN+6UsrPF3NBZ0108pDBHcbclcE9BYZumxZ0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=JC8y0EkEH39/xvikNB3U8RSoa6RoAxhOHgwtz+YcI7RcwJho5Ag/3M7MSFfuQQET7R zVRwznMjrJIprFnHW1xIAzhDvgxMHcG/IMryLytIbVr0RJxZ2NNQE4uZqFZb4SUI8/3o Ix0J1hWHBwZ3DaV58e1hKuRzmi43fBND1A8U4= MIME-Version: 1.0 Received: by 10.227.137.193 with SMTP id x1mr3902251wbt.80.1282520558232; Sun, 22 Aug 2010 16:42:38 -0700 (PDT) Received: by 10.227.151.69 with HTTP; Sun, 22 Aug 2010 16:42:38 -0700 (PDT) In-Reply-To: References: Date: Sun, 22 Aug 2010 16:42:38 -0700 Message-ID: From: Joseph Maxwell To: multimedia@freebsd.org Content-Type: multipart/mixed; boundary=0016e65685504a6a79048e721614 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Fwd: Problem w/ gstreamer-plugins-libpng X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Aug 2010 23:42:40 -0000 --0016e65685504a6a79048e721614 Content-Type: text/plain; charset=ISO-8859-1 Failed to attach log and pkg files earlier - my apologies ---------- Forwarded message ---------- From: Joseph Maxwell Date: Sun, Aug 22, 2010 at 3:52 PM Subject: Problem w/ gstreamer-plugins-libpng To: multimedia@freebsd.org Attempting to reinstall /usr/ports/graphics/gstreamer-plugins-libpng. from the ports. Did make deinstall etc make ==> configure: Requested 'gstreamer-0.10 >= 0.10.30' but version of GStreamer is 0.10.22 configure: error: no gstreamer-0.10 >= 0.10.30 (GStreamer) found ===> Script "configure" failed unexpectedly. Please report the problem to multimedia@FreeBSD.org [maintainer] and attach the "/usr/ports/graphics/gstreamer-plugins-libpng/work/gst-plugins-good-0.10.24/config.log" including the output of the failure of your make command. Also, it might be a good idea to provide an overview of all packages installed on your system (e.g. an `ls /var/db/pkg`). *** Error code 1 Stop in /usr/ports/graphics/gstreamer-plugins-libpng. My ports was just updated yesterday (daily cron process) make ran from /usr/ports/graphics/gstreamer-plugins-libpng --0016e65685504a6a79048e721614 Content-Type: application/octet-stream; name="config.log" Content-Disposition: attachment; filename="config.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gd6jk1z90 VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz IGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVkIGJ5IEdTdHJlYW1lciBHb29kIFBsdWctaW5zIGNv bmZpZ3VyZSAwLjEwLjI0LCB3aGljaCB3YXMKZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1 LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCgogICQgLi9jb25maWd1cmUgLS1kaXNhYmxl LW9wdGlvbi1jaGVja2luZyAtLWRpc2FibGUtYWxzYSAtLWRpc2FibGUtY2RwYXJhbm9pYSAtLWRp c2FibGUtZ2lvIC0tZGlzYWJsZS1nbm9tZXZmcyAtLWRpc2FibGUtbGlidmlzdWFsIC0tZGlzYWJs ZS1vZ2cgLS1kaXNhYmxlLXBhbmdvIC0tZGlzYWJsZS10aGVvcmEgLS1kaXNhYmxlLXZvcmJpcyAt LWRpc2FibGUtYWxzYXNwZGlmIC0tZGlzYWJsZS1hbXJ3YmVuYyAtLWRpc2FibGUtYXBleHNpbmsg LS1kaXNhYmxlLWFzc3JlbmRlciAtLWRpc2FibGUtYnoyIC0tZGlzYWJsZS1jZGF1ZGlvIC0tZGlz YWJsZS1jZWx0IC0tZGlzYWJsZS1jb2cgLS1kaXNhYmxlLWRjMTM5NCAtLWRpc2FibGUtZGlyYWMg LS1kaXNhYmxlLWRpcmVjdGZiIC0tZGlzYWJsZS1kaXZ4IC0tZGlzYWJsZS1kdHMgLS1kaXNhYmxl LWZhYWMgLS1kaXNhYmxlLWZhYWQgLS1kaXNhYmxlLWdtZSAtLWRpc2FibGUtZ3NtIC0tZGlzYWJs ZS1qYWNrIC0tZGlzYWJsZS1qcDJrIC0tZGlzYWJsZS1rYXRlIC0tZGlzYWJsZS1sYWRzcGEgLS1k aXNhYmxlLWxpYm1tcyAtLWRpc2FibGUtbHYyIC0tZGlzYWJsZS1tZXRhZGF0YSAtLWRpc2FibGUt bWltaWMgLS1kaXNhYmxlLW1vZHBsdWcgLS1kaXNhYmxlLW1wZWcyZW5jIC0tZGlzYWJsZS1tcGxl eCAtLWRpc2FibGUtbXVzZXBhY2sgLS1kaXNhYmxlLW11c2ljYnJhaW56IC0tZGlzYWJsZS1teXRo dHYgLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtbmVvbiAtLWRpc2FibGUtb2ZhIC0tZGlzYWJsZS1y ZXNpbmR2ZCAtLWRpc2FibGUtcnN2ZyAtLWRpc2FibGUtc2Nocm9lZGluZ2VyIC0tZGlzYWJsZS1z ZGwgLS1kaXNhYmxlLXNuZGZpbGUgLS1kaXNhYmxlLXNvdW5kdG91Y2ggLS1kaXNhYmxlLXNwYyAt LWRpc2FibGUtc3dmZGVjIC0tZGlzYWJsZS10aGVvcmEgLS1kaXNhYmxlLXRpbWlkaXR5IC0tZGlz YWJsZS14dmlkIC0tZGlzYWJsZS16YmFyIC0tZGlzYWJsZS1hYWxpYiAtLWRpc2FibGUtYW5ub2Rl eCAtLWRpc2FibGUtY2Fpcm8gLS1kaXNhYmxlLWR2IC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWZs YWMgLS1kaXNhYmxlLWdjb25mIC0tZGlzYWJsZS1nZGtfcGl4YnVmIC0tZGlzYWJsZS1oYWwgLS1k aXNhYmxlLWpwZWcgLS1kaXNhYmxlLWxpYmNhY2EgLS1lbmFibGUtbGlicG5nIC0tZGlzYWJsZS1w dWxzZSAtLWRpc2FibGUtcmF3MTM5NCAtLWRpc2FibGUtc2hvdXQyIC0tZGlzYWJsZS1zb3VwIC0t ZGlzYWJsZS1zcGVleCAtLWRpc2FibGUtdGFnbGliIC0tZGlzYWJsZS1nc3RfdjRsMiAtLWRpc2Fi bGUtd2F2cGFjayAtLWRpc2FibGUtZ25vbWVfdmZzIC0tZW5hYmxlLWxpYnBuZyAtLWRpc2FibGUt dGVzdHMgLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJsZS0xMzk0IC0tZGlzYWJsZS1hY20gLS1k aXNhYmxlLWFtcm5iIC0tZGlzYWJsZS1hbHNhIC0tZGlzYWJsZS1kdmIgLS1kaXNhYmxlLWh0dHAg LS1lbmFibGUtY2Ryb20gLS1kaXNhYmxlLWdjb25mIC0tZGlzYWJsZS1nY29uZnRvb2wgLS1kaXNh YmxlLXNjaGVtYXMtaW5zdGFsbCAtLWVuYWJsZS1vc3MgLS1lbmFibGUtb3NzNCAtLWRpc2FibGUt b3N4X2F1ZGlvIC0tZGlzYWJsZS1vc3hfdmlkZW8gLS1kaXNhYmxlLWRpcmVjdGRyYXdzaW5rIC0t ZGlzYWJsZS1kaXJlY3Rzb3VuZHNpbmsgLS1kaXNhYmxlLXRhcmtpbiAtLWVuYWJsZS1zdGF0aWMg LS1kaXNhYmxlLXN1bmF1ZGlvIC0tZGlzYWJsZS14aW5lIC0tZW5hYmxlLXggLS1lbmFibGUteHNo bSAtLWVuYWJsZS14dmlkZW8gLS1wcmVmaXg9L3Vzci9sb2NhbCAtLW1hbmRpcj0vdXNyL2xvY2Fs L21hbiAtLWluZm9kaXI9L3Vzci9sb2NhbC9pbmZvLyAtLWJ1aWxkPWkzODYtcG9ydGJsZC1mcmVl YnNkNy4yCgojIyAtLS0tLS0tLS0gIyMKIyMgUGxhdGZvcm0uICMjCiMjIC0tLS0tLS0tLSAjIwoK aG9zdG5hbWUgPSBqYXltYXguY29tCnVuYW1lIC1tID0gaTM4Ngp1bmFtZSAtciA9IDcuMi1SRUxF QVNFCnVuYW1lIC1zID0gRnJlZUJTRAp1bmFtZSAtdiA9IEZyZWVCU0QgNy4yLVJFTEVBU0UgIzA6 IEZyaSBNYXkgIDEgMDg6NDk6MTMgVVRDIDIwMDkgICAgIHJvb3RAd2Fsa2VyLmNzZS5idWZmYWxv LmVkdTovdXNyL29iai91c3Ivc3JjL3N5cy9HRU5FUklDIAoKL3Vzci9iaW4vdW5hbWUgLXAgPSBp Mzg2Ci9iaW4vdW5hbWUgLVggICAgID0gdW5rbm93bgoKL2Jpbi9hcmNoICAgICAgICAgICAgICA9 IHVua25vd24KL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IHVua25vd24KL3Vzci9jb252ZXgvZ2V0 c3lzaW5mbyA9IHVua25vd24KL3Vzci9iaW4vaG9zdGluZm8gICAgICA9IHVua25vd24KL2Jpbi9t YWNoaW5lICAgICAgICAgICA9IHVua25vd24KL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IHVua25v d24KL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IHVua25vd24KClBBVEg6IC9zYmluClBBVEg6IC9i aW4KUEFUSDogL3Vzci9zYmluClBBVEg6IC91c3IvYmluClBBVEg6IC92YXIvcW1haWwvYmluClBB VEg6IC91c3IvZ2FtZXMKUEFUSDogL3Vzci9sb2NhbC9zYmluClBBVEg6IC91c3IvbG9jYWwvYmlu ClBBVEg6IC91c3IvWDExUjYvYmluClBBVEg6IC9yb290L2JpbgpQQVRIOiAuLwoKCiMjIC0tLS0t LS0tLS0tICMjCiMjIENvcmUgdGVzdHMuICMjCiMjIC0tLS0tLS0tLS0tICMjCgpjb25maWd1cmU6 MzY1NDogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbApjb25maWd1cmU6Mzcy MjogcmVzdWx0OiAvdXNyL2Jpbi9pbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwKY29uZmlndXJl OjM3MzM6IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZQpjb25maWd1 cmU6Mzc4MzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjM5MjQ6IGNoZWNraW5nIGZvciBhIHRocmVh ZC1zYWZlIG1rZGlyIC1wCmNvbmZpZ3VyZTozOTYzOiByZXN1bHQ6IC4vaW5zdGFsbC1zaCAtYyAt ZApjb25maWd1cmU6Mzk3NjogY2hlY2tpbmcgZm9yIGdhd2sKY29uZmlndXJlOjQwMDY6IHJlc3Vs dDogbm8KY29uZmlndXJlOjM5NzY6IGNoZWNraW5nIGZvciBtYXdrCmNvbmZpZ3VyZTo0MDA2OiBy ZXN1bHQ6IG5vCmNvbmZpZ3VyZTozOTc2OiBjaGVja2luZyBmb3IgbmF3awpjb25maWd1cmU6Mzk5 MjogZm91bmQgL3Vzci9iaW4vbmF3awpjb25maWd1cmU6NDAwMzogcmVzdWx0OiBuYXdrCmNvbmZp Z3VyZTo0MDE0OiBjaGVja2luZyB3aGV0aGVyIGdtYWtlIHNldHMgJChNQUtFKQpjb25maWd1cmU6 NDAzNjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjQxMjg6IGNoZWNraW5nIG5hbm8gdmVyc2lvbgpj b25maWd1cmU6NDEzNDogcmVzdWx0OiAwIChyZWxlYXNlKQpjb25maWd1cmU6NDE2MDogY2hlY2tp bmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtl ZmlsZXMKY29uZmlndXJlOjQxNjk6IHJlc3VsdDogbm8KY29uZmlndXJlOjQxODc6IGNoZWNraW5n IGJ1aWxkIHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo0MjAxOiByZXN1bHQ6IGkzODYtcG9ydGJsZC1m cmVlYnNkNy4yCmNvbmZpZ3VyZTo0MjIxOiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlCmNvbmZp Z3VyZTo0MjM0OiByZXN1bHQ6IGkzODYtcG9ydGJsZC1mcmVlYnNkNy4yCmNvbmZpZ3VyZTo0NjEz OiBjaGVja2luZyBmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5IGdtYWtlCmNvbmZpZ3VyZTo0 NjQxOiByZXN1bHQ6IEdOVQpjb25maWd1cmU6NDcxMTogY2hlY2tpbmcgZm9yIGdjYwpjb25maWd1 cmU6NDczODogcmVzdWx0OiBjYwpjb25maWd1cmU6NDk2NzogY2hlY2tpbmcgZm9yIEMgY29tcGls ZXIgdmVyc2lvbgpjb25maWd1cmU6NDk3NjogY2MgLS12ZXJzaW9uID4mNQpjYyAoR0NDKSA0LjIu MSAyMDA3MDcxOSAgW0ZyZWVCU0RdCkNvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3Ig Y29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCgpjb25m aWd1cmU6NDk4NzogJD8gPSAwCmNvbmZpZ3VyZTo0OTc2OiBjYyAtdiA+JjUKVXNpbmcgYnVpbHQt aW4gc3BlY3MuClRhcmdldDogaTM4Ni11bmRlcm15ZGVzay1mcmVlYnNkCkNvbmZpZ3VyZWQgd2l0 aDogRnJlZUJTRC9pMzg2IHN5c3RlbSBjb21waWxlcgpUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2 ZXJzaW9uIDQuMi4xIDIwMDcwNzE5ICBbRnJlZUJTRF0KY29uZmlndXJlOjQ5ODc6ICQ/ID0gMApj b25maWd1cmU6NDk3NjogY2MgLVYgPiY1CmNjOiAnLVYnIG9wdGlvbiBtdXN0IGhhdmUgYXJndW1l bnQKY29uZmlndXJlOjQ5ODc6ICQ/ID0gMQpjb25maWd1cmU6NDk3NjogY2MgLXF2ZXJzaW9uID4m NQpjYzogdW5yZWNvZ25pemVkIG9wdGlvbiAnLXF2ZXJzaW9uJwpjYzogTm8gaW5wdXQgZmlsZXMg c3BlY2lmaWVkCmNvbmZpZ3VyZTo0OTg3OiAkPyA9IDEKY29uZmlndXJlOjUwMDc6IGNoZWNraW5n IHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MKY29uZmlndXJlOjUwMjk6IGNjIC1PMiAtZm5v LXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1 ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2FsL2xpYiAgLXB0aHJlYWQgY29u ZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZTo1MDMzOiAkPyA9IDAKY29uZmlndXJlOjUwODI6IHJlc3Vs dDogeWVzCmNvbmZpZ3VyZTo1MDg1OiBjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91 dHB1dCBmaWxlIG5hbWUKY29uZmlndXJlOjUwODc6IHJlc3VsdDogYS5vdXQKY29uZmlndXJlOjUw OTM6IGNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMKY29uZmlndXJlOjUxMDA6IGNj IC1vIGNvbmZ0ZXN0IC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3Jt YXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xv Y2FsL2xpYiAgLXB0aHJlYWQgY29uZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZTo1MTA0OiAkPyA9IDAK Y29uZmlndXJlOjUxMjY6IHJlc3VsdDogCmNvbmZpZ3VyZTo1MTQ4OiBjaGVja2luZyB3aGV0aGVy IHdlIGFyZSBjcm9zcyBjb21waWxpbmcKY29uZmlndXJlOjUxNTY6IGNjIC1vIGNvbmZ0ZXN0IC1P MiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2Fs L2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2FsL2xpYiAgLXB0aHJl YWQgY29uZnRlc3QuYyAgPiY1CmNvbmZpZ3VyZTo1MTYwOiAkPyA9IDAKY29uZmlndXJlOjUxNjc6 IC4vY29uZnRlc3QKY29uZmlndXJlOjUxNzE6ICQ/ID0gMApjb25maWd1cmU6NTE4NjogcmVzdWx0 OiBubwpjb25maWd1cmU6NTE5MTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMK Y29uZmlndXJlOjUyMTM6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIg LVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBj b25mdGVzdC5jID4mNQpjb25maWd1cmU6NTIxNzogJD8gPSAwCmNvbmZpZ3VyZTo1MjM4OiByZXN1 bHQ6IG8KY29uZmlndXJlOjUyNDI6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBH TlUgQyBjb21waWxlcgpjb25maWd1cmU6NTI2MTogY2MgLWMgLU8yIC1mbm8tc3RyaWN0LWFsaWFz aW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTo1MjYxOiAkPyA9IDAKY29uZmln dXJlOjUyNzA6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo1Mjc5OiBjaGVja2luZyB3aGV0aGVyIGNj IGFjY2VwdHMgLWcKY29uZmlndXJlOjUyOTk6IGNjIC1jIC1nICAtSS91c3IvbG9jYWwvaW5jbHVk ZSAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjUyOTk6ICQ/ID0gMApjb25maWd1cmU6NTM0MDog cmVzdWx0OiB5ZXMKY29uZmlndXJlOjUzNTc6IGNoZWNraW5nIGZvciBjYyBvcHRpb24gdG8gYWNj ZXB0IElTTyBDODkKY29uZmlndXJlOjU0MjE6IGNjICAtYyAtTzIgLWZuby1zdHJpY3QtYWxpYXNp bmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9j YWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjU0MjE6ICQ/ID0gMApjb25maWd1 cmU6NTQzNDogcmVzdWx0OiBub25lIG5lZWRlZApjb25maWd1cmU6NTQ1NjogY2hlY2tpbmcgZGVw ZW5kZW5jeSBzdHlsZSBvZiBjYwpjb25maWd1cmU6NTU2NjogcmVzdWx0OiBnY2MzCmNvbmZpZ3Vy ZTo1NTgxOiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQK Y29uZmlndXJlOjU2NDU6IHJlc3VsdDogL3Vzci9sb2NhbC9iaW4vZ3NlZApjb25maWd1cmU6NTY2 MzogY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lCmNvbmZp Z3VyZTo1NzIxOiByZXN1bHQ6IC91c3IvYmluL2dyZXAKY29uZmlndXJlOjU3MjY6IGNoZWNraW5n IGZvciBlZ3JlcApjb25maWd1cmU6NTc4ODogcmVzdWx0OiAvdXNyL2Jpbi9ncmVwIC1FCmNvbmZp Z3VyZTo1NzkzOiBjaGVja2luZyBmb3IgZmdyZXAKY29uZmlndXJlOjU4NTU6IHJlc3VsdDogL3Vz ci9iaW4vZ3JlcCAtRgpjb25maWd1cmU6NTg5MDogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgY2MK Y29uZmlndXJlOjU5NTc6IHJlc3VsdDogL3Vzci9iaW4vbGQKY29uZmlndXJlOjU5NjQ6IGNoZWNr aW5nIGlmIHRoZSBsaW5rZXIgKC91c3IvYmluL2xkKSBpcyBHTlUgbGQKY29uZmlndXJlOjU5Nzk6 IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo1OTkxOiBjaGVja2luZyBmb3IgQlNELSBvciBNUy1jb21w YXRpYmxlIG5hbWUgbGlzdGVyIChubSkKY29uZmlndXJlOjYwNDA6IHJlc3VsdDogL3Vzci9iaW4v bm0gLUIKY29uZmlndXJlOjYxNTg6IGNoZWNraW5nIHRoZSBuYW1lIGxpc3RlciAoL3Vzci9iaW4v bm0gLUIpIGludGVyZmFjZQpjb25maWd1cmU6NjE2NTogY2MgLWMgLU8yIC1mbm8tc3RyaWN0LWFs aWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUkvdXNy L2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTo2MTY4OiAvdXNyL2Jpbi9u bSAtQiAiY29uZnRlc3QubyIKY29uZmlndXJlOjYxNzE6IG91dHB1dAowMDAwMDAwMCBCIHNvbWVf dmFyaWFibGUKY29uZmlndXJlOjYxNzg6IHJlc3VsdDogQlNEIG5tCmNvbmZpZ3VyZTo2MTgxOiBj aGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzCmNvbmZpZ3VyZTo2MTg1OiByZXN1bHQ6IHllcwpj b25maWd1cmU6NjE5MzogY2hlY2tpbmcgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGlu ZSBhcmd1bWVudHMKY29uZmlndXJlOjYzMTM6IHJlc3VsdDogMjYyMTQ0CmNvbmZpZ3VyZTo2MzMw OiBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1 Y3RzCmNvbmZpZ3VyZTo2MzQwOiByZXN1bHQ6IHllcwpjb25maWd1cmU6NjM0NDogY2hlY2tpbmcg d2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgIis9Igpjb25maWd1cmU6NjM1MDogcmVzdWx0 OiBubwpjb25maWd1cmU6NjM4NTogY2hlY2tpbmcgZm9yIC91c3IvYmluL2xkIG9wdGlvbiB0byBy ZWxvYWQgb2JqZWN0IGZpbGVzCmNvbmZpZ3VyZTo2MzkyOiByZXN1bHQ6IC1yCmNvbmZpZ3VyZTo2 NDYxOiBjaGVja2luZyBmb3Igb2JqZHVtcApjb25maWd1cmU6NjQ4ODogcmVzdWx0OiBvYmpkdW1w CmNvbmZpZ3VyZTo2NTE3OiBjaGVja2luZyBob3cgdG8gcmVjb2duaXplIGRlcGVuZGVudCBsaWJy YXJpZXMKY29uZmlndXJlOjY3MTM6IHJlc3VsdDogcGFzc19hbGwKY29uZmlndXJlOjY3NzM6IGNo ZWNraW5nIGZvciBhcgpjb25maWd1cmU6Njc4OTogZm91bmQgL3Vzci9iaW4vYXIKY29uZmlndXJl OjY4MDA6IHJlc3VsdDogYXIKY29uZmlndXJlOjY4Nzg6IGNoZWNraW5nIGZvciBzdHJpcApjb25m aWd1cmU6Njg5NDogZm91bmQgL3Vzci9iaW4vc3RyaXAKY29uZmlndXJlOjY5MDU6IHJlc3VsdDog c3RyaXAKY29uZmlndXJlOjY5Nzc6IGNoZWNraW5nIGZvciByYW5saWIKY29uZmlndXJlOjY5OTM6 IGZvdW5kIC91c3IvYmluL3JhbmxpYgpjb25maWd1cmU6NzAwNDogcmVzdWx0OiByYW5saWIKY29u ZmlndXJlOjcwOTQ6IGNoZWNraW5nIGNvbW1hbmQgdG8gcGFyc2UgL3Vzci9iaW4vbm0gLUIgb3V0 cHV0IGZyb20gY2Mgb2JqZWN0CmNvbmZpZ3VyZTo3MjEyOiBjYyAtYyAtTzIgLWZuby1zdHJpY3Qt YWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91 c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjcyMTU6ICQ/ID0gMApj b25maWd1cmU6NzIxOTogL3Vzci9iaW4vbm0gLUIgY29uZnRlc3QubyBcfCBzZWQgLW4gLWUgJ3Mv Xi4qWwkgXVwoW0FCQ0RHSVJTVFddW0FCQ0RHSVJTVFddKlwpWwkgXVsJIF0qXChbX0EtWmEtel1b X0EtWmEtejAtOV0qXCkkL1wxIFwyIFwyL3AnIFw+IGNvbmZ0ZXN0Lm5tCmNvbmZpZ3VyZTo3MjIy OiAkPyA9IDAKY29uZmlndXJlOjcyNzY6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtZm5vLXN0cmljdC1h bGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2FsL2xpYiAgLXB0aHJlYWQgY29uZnRlc3QuYyBj b25mdHN0bS5vID4mNQpjb25maWd1cmU6NzI3OTogJD8gPSAwCmNvbmZpZ3VyZTo3MzE3OiByZXN1 bHQ6IG9rCmNvbmZpZ3VyZTo4MTI2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nl c3Nvcgpjb25maWd1cmU6ODE1NzogY2MgLUUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVz dC5jCmNvbmZpZ3VyZTo4MTU3OiAkPyA9IDAKY29uZmlndXJlOjgxNzE6IGNjIC1FICAtSS91c3Iv bG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYwpjb25mdGVzdC5jOjExOjI4OiBlcnJvcjogYWNfbm9u ZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6ODE3MTogJD8g PSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAj ZGVmaW5lIFBBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMiCnwgI2RlZmluZSBQ QUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJ T04gIjAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVyIEdvb2QgUGx1 Zy1pbnMgMC4xMC4yNCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwOi8vYnVnemls bGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIiCnwgI2RlZmluZSBQ QUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVm aW5lIFZFUlNJT04gIjAuMTAuMjQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRl IDxhY19ub25leGlzdGVudC5oPgpjb25maWd1cmU6ODE5NjogcmVzdWx0OiBjYyAtRQpjb25maWd1 cmU6ODIxNjogY2MgLUUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jCmNvbmZpZ3Vy ZTo4MjE2OiAkPyA9IDAKY29uZmlndXJlOjgyMzA6IGNjIC1FICAtSS91c3IvbG9jYWwvaW5jbHVk ZSAgY29uZnRlc3QuYwpjb25mdGVzdC5jOjExOjI4OiBlcnJvcjogYWNfbm9uZXhpc3RlbnQuaDog Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6ODIzMDogJD8gPSAxCmNvbmZpZ3Vy ZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tB R0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5B TUUgImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjAuMTAuMjQi CnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMgMC4xMC4y NCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3Jn L2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAi Igp8ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFZFUlNJT04g IjAuMTAuMjQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxhY19ub25leGlz dGVudC5oPgpjb25maWd1cmU6ODI1OTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMK Y29uZmlndXJlOjgyNzk6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIg LVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBj b25mdGVzdC5jID4mNQpjb25maWd1cmU6ODI3OTogJD8gPSAwCmNvbmZpZ3VyZTo4MzUyOiBjYyAt byBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0 IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgIC1ML3Vzci9sb2Nh bC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6ODM1MjogJD8gPSAwCmNv bmZpZ3VyZTo4MzUyOiAuL2NvbmZ0ZXN0CmNvbmZpZ3VyZTo4MzUyOiAkPyA9IDAKY29uZmlndXJl OjgzNjM6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo4Mzc2OiBjaGVja2luZyBmb3Igc3lzL3R5cGVz LmgKY29uZmlndXJlOjgzNzY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAt TzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRl ICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6ODM3NjogJD8gPSAwCmNvbmZpZ3VyZTo4Mzc2OiBy ZXN1bHQ6IHllcwpjb25maWd1cmU6ODM3NjogY2hlY2tpbmcgZm9yIHN5cy9zdGF0LmgKY29uZmln dXJlOjgzNzY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1m b3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVz dC5jID4mNQpjb25maWd1cmU6ODM3NjogJD8gPSAwCmNvbmZpZ3VyZTo4Mzc2OiByZXN1bHQ6IHll cwpjb25maWd1cmU6ODM3NjogY2hlY2tpbmcgZm9yIHN0ZGxpYi5oCmNvbmZpZ3VyZTo4Mzc2OiBj YyAtYyAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vz ci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29u ZmlndXJlOjgzNzY6ICQ/ID0gMApjb25maWd1cmU6ODM3NjogcmVzdWx0OiB5ZXMKY29uZmlndXJl OjgzNzY6IGNoZWNraW5nIGZvciBzdHJpbmcuaApjb25maWd1cmU6ODM3NjogY2MgLWMgLU8yIC1m bm8tc3RyaWN0LWFsaWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5j bHVkZSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTo4Mzc2 OiAkPyA9IDAKY29uZmlndXJlOjgzNzY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo4Mzc2OiBjaGVj a2luZyBmb3IgbWVtb3J5LmgKY29uZmlndXJlOjgzNzY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1h bGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6ODM3NjogJD8gPSAwCmNv bmZpZ3VyZTo4Mzc2OiByZXN1bHQ6IHllcwpjb25maWd1cmU6ODM3NjogY2hlY2tpbmcgZm9yIHN0 cmluZ3MuaApjb25maWd1cmU6ODM3NjogY2MgLWMgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1w aXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTo4Mzc2OiAkPyA9IDAKY29uZmlndXJlOjgz NzY6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo4Mzc2OiBjaGVja2luZyBmb3IgaW50dHlwZXMuaApj b25maWd1cmU6ODM3NjogY2MgLWMgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1waXBlIC1PMiAt V25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNv bmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZTo4Mzc2OiAkPyA9IDAKY29uZmlndXJlOjgzNzY6IHJlc3Vs dDogeWVzCmNvbmZpZ3VyZTo4Mzc2OiBjaGVja2luZyBmb3Igc3RkaW50LmgKY29uZmlndXJlOjgz NzY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQg LUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4m NQpjb25maWd1cmU6ODM3NjogJD8gPSAwCmNvbmZpZ3VyZTo4Mzc2OiByZXN1bHQ6IHllcwpjb25m aWd1cmU6ODM3NjogY2hlY2tpbmcgZm9yIHVuaXN0ZC5oCmNvbmZpZ3VyZTo4Mzc2OiBjYyAtYyAt TzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2Nh bC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJl OjgzNzY6ICQ/ID0gMApjb25maWd1cmU6ODM3NjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjgzOTE6 IGNoZWNraW5nIGZvciBkbGZjbi5oCmNvbmZpZ3VyZTo4MzkxOiBjYyAtYyAtTzIgLWZuby1zdHJp Y3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAt SS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjgzOTE6ICQ/ID0g MApjb25maWd1cmU6ODM5MTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjg1NzM6IGNoZWNraW5nIGZv ciBvYmpkaXIKY29uZmlndXJlOjg1ODg6IHJlc3VsdDogLmxpYnMKY29uZmlndXJlOjg4ODQ6IGNo ZWNraW5nIGlmIGNjIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMKY29uZmlndXJl Ojg5MDI6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3Jt YXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtZm5vLXJ0dGkg LWZuby1leGNlcHRpb25zIGNvbmZ0ZXN0LmMgPiY1CmNjMTogd2FybmluZzogY29tbWFuZCBsaW5l IG9wdGlvbiAiLWZuby1ydHRpIiBpcyB2YWxpZCBmb3IgQysrL09iakMrKyBidXQgbm90IGZvciBD CmNvbmZpZ3VyZTo4OTA2OiAkPyA9IDAKY29uZmlndXJlOjg5MTk6IHJlc3VsdDogbm8KY29uZmln dXJlOjg5Mzk6IGNoZWNraW5nIGZvciBjYyBvcHRpb24gdG8gcHJvZHVjZSBQSUMKY29uZmlndXJl OjkyMTE6IHJlc3VsdDogLWZQSUMgLURQSUMKY29uZmlndXJlOjkyMjM6IGNoZWNraW5nIGlmIGNj IFBJQyBmbGFnIC1mUElDIC1EUElDIHdvcmtzCmNvbmZpZ3VyZTo5MjQxOiBjYyAtYyAtTzIgLWZu by1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNs dWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLWZQSUMgLURQSUMgLURQSUMgY29uZnRlc3QuYyA+ JjUKY29uZmlndXJlOjkyNDU6ICQ/ID0gMApjb25maWd1cmU6OTI1ODogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjkyODI6IGNoZWNraW5nIGlmIGNjIHN0YXRpYyBmbGFnIC1zdGF0aWMgd29ya3MKY29u ZmlndXJlOjkzMTA6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTo5MzI1OiBjaGVja2luZyBpZiBjYyBz dXBwb3J0cyAtYyAtbyBmaWxlLm8KY29uZmlndXJlOjkzNDY6IGNjIC1jIC1PMiAtZm5vLXN0cmlj dC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1J L3Vzci9sb2NhbC9pbmNsdWRlICAtbyBvdXQvY29uZnRlc3QyLm8gY29uZnRlc3QuYyA+JjUKY29u ZmlndXJlOjkzNTA6ICQ/ID0gMApjb25maWd1cmU6OTM3MjogcmVzdWx0OiB5ZXMKY29uZmlndXJl OjkzODA6IGNoZWNraW5nIGlmIGNjIHN1cHBvcnRzIC1jIC1vIGZpbGUubwpjb25maWd1cmU6OTQy NzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjk0NjA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIGNjIGxp bmtlciAoL3Vzci9iaW4vbGQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMKY29uZmlndXJlOjEw NDUxOiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTA0ODg6IGNoZWNraW5nIHdoZXRoZXIgLWxjIHNo b3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbgpjb25maWd1cmU6MTA0OTM6IGNjIC1jIC1PMiAt Zm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6MTA0 OTY6ICQ/ID0gMApjb25maWd1cmU6MTA1MTE6IGNjIC1zaGFyZWQgY29uZnRlc3QubyAgLXYgLVds LC1zb25hbWUgLVdsLGNvbmZ0ZXN0IC1vIGNvbmZ0ZXN0IDJcPlwmMSBcfCAvdXNyL2Jpbi9ncmVw ICAtbGMgIFw+L2Rldi9udWxsIDJcPlwmMQpjb25maWd1cmU6MTA1MTQ6ICQ/ID0gMApjb25maWd1 cmU6MTA1MjY6IHJlc3VsdDogbm8KY29uZmlndXJlOjEwNjkwOiBjaGVja2luZyBkeW5hbWljIGxp bmtlciBjaGFyYWN0ZXJpc3RpY3MKY29uZmlndXJlOjExMzUzOiByZXN1bHQ6IGZyZWVic2Q3LjIg bGQuc28KY29uZmlndXJlOjExNDU1OiBjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBw YXRocyBpbnRvIHByb2dyYW1zCmNvbmZpZ3VyZToxMTQ4MDogcmVzdWx0OiBpbW1lZGlhdGUKY29u ZmlndXJlOjEyMDAwOiBjaGVja2luZyB3aGV0aGVyIHN0cmlwcGluZyBsaWJyYXJpZXMgaXMgcG9z c2libGUKY29uZmlndXJlOjEyMDA1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTIwNDA6IGNoZWNr aW5nIGlmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcwpjb25maWd1cmU6MTIwNDI6 IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMjA0NTogY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBz aGFyZWQgbGlicmFyaWVzCmNvbmZpZ3VyZToxMjA2NjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjEy MDY5OiBjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMKY29uZmlndXJl OjEyMDczOiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTIxNzY6IGNoZWNraW5nIHdoZXRoZXIgTkxT IGlzIHJlcXVlc3RlZApjb25maWd1cmU6MTIxODU6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxMjIy NjogY2hlY2tpbmcgZm9yIG1zZ2ZtdApjb25maWd1cmU6IHRyeWluZyAvdXNyL2xvY2FsL2Jpbi9t c2dmbXQuLi4KMCB0cmFuc2xhdGVkIG1lc3NhZ2VzLgpjb25maWd1cmU6MTIyNTg6IHJlc3VsdDog L3Vzci9sb2NhbC9iaW4vbXNnZm10CmNvbmZpZ3VyZToxMjI2NzogY2hlY2tpbmcgZm9yIGdtc2dm bXQKY29uZmlndXJlOjEyMjk4OiByZXN1bHQ6IC91c3IvbG9jYWwvYmluL21zZ2ZtdApjb25maWd1 cmU6MTIzNDk6IGNoZWNraW5nIGZvciB4Z2V0dGV4dApjb25maWd1cmU6IHRyeWluZyAvdXNyL2xv Y2FsL2Jpbi94Z2V0dGV4dC4uLgovdXNyL2xvY2FsL2Jpbi94Z2V0dGV4dDogd2FybmluZzogZmls ZSBgL2Rldi9udWxsJyBleHRlbnNpb24gYCcgaXMgdW5rbm93bjsgd2lsbCB0cnkgQwpjb25maWd1 cmU6MTIzODE6IHJlc3VsdDogL3Vzci9sb2NhbC9iaW4veGdldHRleHQKY29uZmlndXJlOjEyNDI3 OiBjaGVja2luZyBmb3IgbXNnbWVyZ2UKY29uZmlndXJlOiB0cnlpbmcgL3Vzci9sb2NhbC9iaW4v bXNnbWVyZ2UuLi4KY29uZmlndXJlOjEyNDU4OiByZXN1bHQ6IC91c3IvbG9jYWwvYmluL21zZ21l cmdlCmNvbmZpZ3VyZToxMjUxNTogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDCmNvbmZpZ3Vy ZToxMjU3OTogcmVzdWx0OiAvdXNyL2Jpbi9sZApjb25maWd1cmU6MTI1ODY6IGNoZWNraW5nIGlm IHRoZSBsaW5rZXIgKC91c3IvYmluL2xkKSBpcyBHTlUgbGQKY29uZmlndXJlOjEyNTk5OiByZXN1 bHQ6IHllcwpjb25maWd1cmU6MTI2MDY6IGNoZWNraW5nIGZvciBzaGFyZWQgbGlicmFyeSBydW4g cGF0aCBvcmlnaW4KY29uZmlndXJlOjEyNjE5OiByZXN1bHQ6IGRvbmUKY29uZmlndXJlOjEzMTIw OiBjaGVja2luZyBmb3IgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZQpjb25maWd1cmU6MTMxMzg6 IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1m b3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNy L2xvY2FsL2xpYiAgLXB0aHJlYWQgY29uZnRlc3QuYyAgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVG b3VuZGF0aW9uID4mNQpjb25mdGVzdC5jOjIzOjQyOiBlcnJvcjogQ29yZUZvdW5kYXRpb24vQ0ZQ cmVmZXJlbmNlcy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CmNvbmZ0ZXN0LmM6IEluIGZ1 bmN0aW9uICdtYWluJzoKY29uZnRlc3QuYzoyNzogZXJyb3I6ICdOVUxMJyB1bmRlY2xhcmVkIChm aXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKY29uZnRlc3QuYzoyNzogZXJyb3I6IChFYWNoIHVu ZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKY29uZnRlc3QuYzoyNzog ZXJyb3I6IGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4uKQpjb25maWd1cmU6MTMxMzg6 ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICov CnwgI2RlZmluZSBQQUNLQUdFX05BTUUgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIgp8ICNkZWZp bmUgUEFDS0FHRV9UQVJOQU1FICJnc3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgUEFDS0FHRV9W RVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdTdHJlYW1lciBHb29k IFBsdWctaW5zIDAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiaHR0cDovL2J1 Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyIgp8ICNkZWZp bmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImdzdC1wbHVnaW5zLWdvb2QiCnwg I2RlZmluZSBWRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgU1REQ19IRUFERVJTIDEKfCAjZGVm aW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKfCAjZGVm aW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCnwgI2RlZmluZSBI QVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKfCAjZGVmaW5lIEhBVkVf SU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElOVF9IIDEKfCAjZGVmaW5lIEhBVkVfVU5J U1REX0ggMQp8ICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxp YnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v Q0ZQcmVmZXJlbmNlcy5oPgp8IGludAp8IG1haW4gKCkKfCB7CnwgQ0ZQcmVmZXJlbmNlc0NvcHlB cHBWYWx1ZShOVUxMLCBOVUxMKQp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQpjb25maWd1cmU6MTMx NDc6IHJlc3VsdDogbm8KY29uZmlndXJlOjEzMTU0OiBjaGVja2luZyBmb3IgQ0ZMb2NhbGVDb3B5 Q3VycmVudApjb25maWd1cmU6MTMxNzI6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtZm5vLXN0cmljdC1h bGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vz ci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2FsL2xpYiAgLXB0aHJlYWQgY29uZnRlc3QuYyAg LVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uID4mNQpjb25mdGVzdC5jOjIzOjM3OiBl cnJvcjogQ29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9y eQpjb25maWd1cmU6MTMxNzI6ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoK fCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgIkdTdHJlYW1lciBHb29k IFBsdWctaW5zIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJnc3QtcGx1Z2lucy1nb29kIgp8 ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJ TkcgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIDAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX0JV R1JFUE9SVCAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9 R1N0cmVhbWVyIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImdz dC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBWRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgU1RE Q19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9T WVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJ TkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HU19I IDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElOVF9IIDEK fCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKfCAjZGVm aW5lIExUX09CSkRJUiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVk ZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaD4KfCBpbnQKfCBtYWluICgpCnwgewp8IENGTG9j YWxlQ29weUN1cnJlbnQoKTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KY29uZmlndXJlOjEzMTgx OiByZXN1bHQ6IG5vCmNvbmZpZ3VyZToxMzIzMDogY2hlY2tpbmcgZm9yIEdOVSBnZXR0ZXh0IGlu IGxpYmMKY29uZmlndXJlOjEzMjUwOiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxp YXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3Iv bG9jYWwvaW5jbHVkZSAgIC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgID4m NQovdmFyL3RtcC8vY2NNSHh5RVQubygudGV4dCsweDIxKTogSW4gZnVuY3Rpb24gYG1haW4nOgo6 IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxpYmludGxfYmluZHRleHRkb21haW4nCi92YXIvdG1w Ly9jY01IeHlFVC5vKC50ZXh0KzB4MmQpOiBJbiBmdW5jdGlvbiBgbWFpbic6CjogdW5kZWZpbmVk IHJlZmVyZW5jZSB0byBgbGliaW50bF9nZXR0ZXh0JwovdmFyL3RtcC8vY2NNSHh5RVQubygudGV4 dCsweDMzKTogSW4gZnVuY3Rpb24gYG1haW4nOgo6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9u bF9kb21haW5fYmluZGluZ3MnCi92YXIvdG1wLy9jY01IeHlFVC5vKC50ZXh0KzB4M2EpOiBJbiBm dW5jdGlvbiBgbWFpbic6CjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250 cicKY29uZmlndXJlOjEzMjUwOiAkPyA9IDEKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJHU3RyZWFtZXIgR29v ZCBQbHVnLWlucyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiZ3N0LXBsdWdpbnMtZ29vZCIK fCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4yNCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyAwLjEwLjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9C VUdSRVBPUlQgImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0 PUdTdHJlYW1lciIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJn c3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgVkVSU0lPTiAiMC4xMC4yNCIKfCAjZGVmaW5lIFNU RENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVf U1lTX1NUQVRfSCAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9IIDEKfCAjZGVmaW5lIEhBVkVfU1RS SU5HX0ggMQp8ICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR1Nf SCAxCnwgI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERJTlRfSCAx CnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVmaW5lIEhBVkVfRExGQ05fSCAxCnwgI2Rl ZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1 ZGUgPGxpYmludGwuaD4KfCAKfCBleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CnwgZXh0ZXJu IGludCAqX25sX2RvbWFpbl9iaW5kaW5nczsKfCBpbnQKfCBtYWluICgpCnwgewp8IGJpbmR0ZXh0 ZG9tYWluICgiIiwgIiIpOwp8IHJldHVybiAqIGdldHRleHQgKCIiKSArIF9ubF9tc2dfY2F0X2Nu dHIgKyAqX25sX2RvbWFpbl9iaW5kaW5ncwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQpjb25maWd1 cmU6MTMyNTk6IHJlc3VsdDogbm8KY29uZmlndXJlOjEzMjkzOiBjaGVja2luZyBmb3IgaWNvbnYK Y29uZmlndXJlOjEzMzE1OiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcg LXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwv aW5jbHVkZSAgIC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgID4mNQovdmFy L3RtcC8vY2NLd3k3aWgubygudGV4dCsweDI2KTogSW4gZnVuY3Rpb24gYG1haW4nOgo6IHVuZGVm aW5lZCByZWZlcmVuY2UgdG8gYGxpYmljb252X29wZW4nCi92YXIvdG1wLy9jY0t3eTdpaC5vKC50 ZXh0KzB4NTApOiBJbiBmdW5jdGlvbiBgbWFpbic6CjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg bGliaWNvbnYnCi92YXIvdG1wLy9jY0t3eTdpaC5vKC50ZXh0KzB4NTgpOiBJbiBmdW5jdGlvbiBg bWFpbic6CjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGliaWNvbnZfY2xvc2UnCmNvbmZpZ3Vy ZToxMzMxNTogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZk ZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMi CnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQ QUNLQUdFX1ZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVh bWVyIEdvb2QgUGx1Zy1pbnMgMC4xMC4yNCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJo dHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIi CnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMt Z29vZCIKfCAjZGVmaW5lIFZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBTVERDX0hFQURFUlMg MQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0gg MQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAj ZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZp bmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUg SEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZFX0RMRkNOX0ggMQp8ICNkZWZpbmUgTFRfT0JK RElSICIubGlicy8iCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxzdGRsaWIu aD4KfCAjaW5jbHVkZSA8aWNvbnYuaD4KfCBpbnQKfCBtYWluICgpCnwgewp8IGljb252X3QgY2Qg PSBpY29udl9vcGVuKCIiLCIiKTsKfCAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVM TCk7CnwgICAgICAgIGljb252X2Nsb3NlKGNkKTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KY29u ZmlndXJlOjEzMzM3OiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBp cGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5j bHVkZSAgIC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgIC91c3IvbG9jYWwv bGliL2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwvbGliID4mNQpjb25maWd1 cmU6MTMzMzc6ICQ/ID0gMApjb25maWd1cmU6MTMzNDc6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZTox MzM1MDogY2hlY2tpbmcgZm9yIHdvcmtpbmcgaWNvbnYKY29uZmlndXJlOjEzNDI2OiBjYyAtbyBj b25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1J L3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgIC1ML3Vzci9sb2NhbC9s aWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgIC91c3IvbG9jYWwvbGliL2xpYmljb252LnNvIC1XbCwt cnBhdGggLVdsLC91c3IvbG9jYWwvbGliID4mNQpjb25mdGVzdC5jOiBJbiBmdW5jdGlvbiAnbWFp bic6CmNvbmZ0ZXN0LmM6NDI6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnbGliaWNv bnYnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQpjb25maWd1cmU6MTM0MjY6ICQ/ID0g MApjb25maWd1cmU6MTM0MjY6IC4vY29uZnRlc3QKY29uZmlndXJlOjEzNDI2OiAkPyA9IDAKY29u ZmlndXJlOjEzNDM4OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTM0NTM6IGNoZWNraW5nIGhvdyB0 byBsaW5rIHdpdGggbGliaWNvbnYKY29uZmlndXJlOjEzNDU1OiByZXN1bHQ6IC91c3IvbG9jYWwv bGliL2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwvbGliCmNvbmZpZ3VyZTox MzkwMTogY2hlY2tpbmcgZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmludGwKY29uZmlndXJlOjEzOTI5 OiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8t Zm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgICAtTC91 c3IvbG9jYWwvbGliICAtcHRocmVhZCBjb25mdGVzdC5jICAvdXNyL2xvY2FsL2xpYi9saWJpbnRs LnNvIC91c3IvbG9jYWwvbGliL2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwv bGliID4mNQpjb25maWd1cmU6MTM5Mjk6ICQ/ID0gMApjb25maWd1cmU6MTM5NzA6IHJlc3VsdDog eWVzCmNvbmZpZ3VyZToxNDAwNTogY2hlY2tpbmcgd2hldGhlciB0byB1c2UgTkxTCmNvbmZpZ3Vy ZToxNDAwNzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjE0MDEwOiBjaGVja2luZyB3aGVyZSB0aGUg Z2V0dGV4dCBmdW5jdGlvbiBjb21lcyBmcm9tCmNvbmZpZ3VyZToxNDAyMTogcmVzdWx0OiBleHRl cm5hbCBsaWJpbnRsCmNvbmZpZ3VyZToxNDAyOTogY2hlY2tpbmcgaG93IHRvIGxpbmsgd2l0aCBs aWJpbnRsCmNvbmZpZ3VyZToxNDAzMTogcmVzdWx0OiAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLnNv IC91c3IvbG9jYWwvbGliL2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwvbGli CmNvbmZpZ3VyZToxNDIwNDogY2hlY2tpbmcgZm9yIHBrZy1jb25maWcKY29uZmlndXJlOjE0MjIy OiBmb3VuZCAvdXNyL2xvY2FsL2Jpbi9wa2ctY29uZmlnCmNvbmZpZ3VyZToxNDIzNDogcmVzdWx0 OiAvdXNyL2xvY2FsL2Jpbi9wa2ctY29uZmlnCmNvbmZpZ3VyZToxNDI1OTogY2hlY2tpbmcgcGtn LWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uIDAuOS4wCmNvbmZpZ3VyZToxNDI2MjogcmVzdWx0 OiB5ZXMKY29uZmlndXJlOjE0Mjg4OiBjaGVja2luZyBmb3IgVkFMR1JJTkQKY29uZmlndXJlOjE0 Mjk2OiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAidmFsZ3JpbmQgPj0gJFZB TEdSSU5EX1JFUSIKZ25vbWUtY29uZmlnOiBub3QgZm91bmQKUGFja2FnZSB2YWxncmluZCB3YXMg bm90IGZvdW5kIGluIHRoZSBwa2ctY29uZmlnIHNlYXJjaCBwYXRoLgpQZXJoYXBzIHlvdSBzaG91 bGQgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBgdmFsZ3JpbmQucGMnCnRvIHRoZSBQS0df Q09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKTm8gcGFja2FnZSAndmFsZ3JpbmQnIGZv dW5kCmNvbmZpZ3VyZToxNDI5OTogJD8gPSAxCmNvbmZpZ3VyZToxNDMxNDogJFBLR19DT05GSUcg LS1leGlzdHMgLS1wcmludC1lcnJvcnMgInZhbGdyaW5kID49ICRWQUxHUklORF9SRVEiCmdub21l LWNvbmZpZzogbm90IGZvdW5kClBhY2thZ2UgdmFsZ3JpbmQgd2FzIG5vdCBmb3VuZCBpbiB0aGUg cGtnLWNvbmZpZyBzZWFyY2ggcGF0aC4KUGVyaGFwcyB5b3Ugc2hvdWxkIGFkZCB0aGUgZGlyZWN0 b3J5IGNvbnRhaW5pbmcgYHZhbGdyaW5kLnBjJwp0byB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmly b25tZW50IHZhcmlhYmxlCk5vIHBhY2thZ2UgJ3ZhbGdyaW5kJyBmb3VuZApjb25maWd1cmU6MTQz MTc6ICQ/ID0gMQpObyBwYWNrYWdlICd2YWxncmluZCcgZm91bmQKY29uZmlndXJlOjE0MzQ1OiBy ZXN1bHQ6IG5vCmNvbmZpZ3VyZToxNDM0OTogcmVzdWx0OiBubwpjb25maWd1cmU6MTQ1NjY6IFVz aW5nIEdTdHJlYW1lciBHb29kIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlIGFzIHBhY2thZ2UgbmFt ZQpjb25maWd1cmU6MTQ1OTA6IFVzaW5nIFVua25vd24gcGFja2FnZSBvcmlnaW4gYXMgcGFja2Fn ZSBvcmlnaW4KY29uZmlndXJlOjE0NjE5OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogYnVpbGRpbmcg b2YgcGx1Zy1pbnMgd2l0aCBleHRlcm5hbCBkZXBzICoqKgpjb25maWd1cmU6MTQ2NzQ6IGJ1aWxk aW5nIGV4dGVybmFsIHBsdWctaW5zCmNvbmZpZ3VyZToxNDcxNzogKioqIGNoZWNraW5nIGZlYXR1 cmU6IGJ1aWxkaW5nIG9mIGV4cGVyaW1lbnRhbCBwbHVnLWlucyAqKioKY29uZmlndXJlOjE0Nzg4 OiBub3QgYnVpbGRpbmcgZXhwZXJpbWVudGFsIHBsdWctaW5zCmNvbmZpZ3VyZToxNDkzMjogY2hl Y2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbgpjb25maWd1cmU6MTQ5NDc6 IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkv dXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpj b25mdGVzdC5jOjM0OiBlcnJvcjogZXhwZWN0ZWQgJz0nLCAnLCcsICc7JywgJ2FzbScgb3IgJ19f YXR0cmlidXRlX18nIGJlZm9yZSAnYScKY29uZmlndXJlOjE0OTQ3OiAkPyA9IDEKY29uZmlndXJl OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FH RV9OQU1FICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFN RSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4yNCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyAwLjEwLjI0 Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcv ZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lciIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIi CnwgI2RlZmluZSBQQUNLQUdFICJnc3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgVkVSU0lPTiAi MC4xMC4yNCIKfCAjZGVmaW5lIFNURENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZFX1NZU19UWVBF U19IIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9I IDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQp8ICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCnwg I2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCnwgI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQp8ICNk ZWZpbmUgSEFWRV9TVERJTlRfSCAxCnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVmaW5l IEhBVkVfRExGQ05fSCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIEhB VkVfSUNPTlYgMQp8ICNkZWZpbmUgRU5BQkxFX05MUyAxCnwgI2RlZmluZSBIQVZFX0dFVFRFWFQg MQp8ICNkZWZpbmUgSEFWRV9EQ0dFVFRFWFQgMQp8ICNkZWZpbmUgR0VUVEVYVF9QQUNLQUdFICJn c3QtcGx1Z2lucy1nb29kLTAuMTAiCnwgI2RlZmluZSBMT0NBTEVESVIgIi91c3IvbG9jYWwvc2hh cmUvbG9jYWxlIgp8ICNkZWZpbmUgR1NUX1BBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1 Zy1pbnMgc291cmNlIHJlbGVhc2UiCnwgI2RlZmluZSBHU1RfUEFDS0FHRV9PUklHSU4gIlVua25v d24gcGFja2FnZSBvcmlnaW4iCnwgI2RlZmluZSBIQVZFX0VYVEVSTkFMIC8qKi8KfCAjZGVmaW5l IEhBVkVfQ1BVX0kzODYgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaWZuZGVmIF9fQVBQ TEVfQ0NfXwp8IAkgICAgICAgbm90IGEgdW5pdmVyc2FsIGNhcGFibGUgY29tcGlsZXIKfCAJICAg ICAjZW5kaWYKfCAJICAgICB0eXBlZGVmIGludCBkdW1teTsKfCAKY29uZmlndXJlOjE0OTkyOiBj YyAtYyAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vz ci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29u ZmlndXJlOjE0OTkyOiAkPyA9IDAKY29uZmlndXJlOjE1MDEwOiBjYyAtYyAtTzIgLWZuby1zdHJp Y3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAt SS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZnRlc3QuYzogSW4gZnVuY3Rp b24gJ21haW4nOgpjb25mdGVzdC5jOjQwOiBlcnJvcjogJ25vdCcgdW5kZWNsYXJlZCAoZmlyc3Qg dXNlIGluIHRoaXMgZnVuY3Rpb24pCmNvbmZ0ZXN0LmM6NDA6IGVycm9yOiAoRWFjaCB1bmRlY2xh cmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlCmNvbmZ0ZXN0LmM6NDA6IGVycm9y OiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikKY29uZnRlc3QuYzo0MDogZXJyb3I6 IGV4cGVjdGVkICc7JyBiZWZvcmUgJ2JpZycKY29uZmlndXJlOjE1MDEwOiAkPyA9IDEKY29uZmln dXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFD S0FHRV9OQU1FICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFS TkFNRSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4y NCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyAwLjEw LjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5v cmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lciIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJM ICIiCnwgI2RlZmluZSBQQUNLQUdFICJnc3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgVkVSU0lP TiAiMC4xMC4yNCIKfCAjZGVmaW5lIFNURENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZFX1NZU19U WVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCnwgI2RlZmluZSBIQVZFX1NURExJ Ql9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQp8ICNkZWZpbmUgSEFWRV9NRU1PUllfSCAx CnwgI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCnwgI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQp8 ICNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVm aW5lIEhBVkVfRExGQ05fSCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5l IEhBVkVfSUNPTlYgMQp8ICNkZWZpbmUgRU5BQkxFX05MUyAxCnwgI2RlZmluZSBIQVZFX0dFVFRF WFQgMQp8ICNkZWZpbmUgSEFWRV9EQ0dFVFRFWFQgMQp8ICNkZWZpbmUgR0VUVEVYVF9QQUNLQUdF ICJnc3QtcGx1Z2lucy1nb29kLTAuMTAiCnwgI2RlZmluZSBMT0NBTEVESVIgIi91c3IvbG9jYWwv c2hhcmUvbG9jYWxlIgp8ICNkZWZpbmUgR1NUX1BBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2Qg UGx1Zy1pbnMgc291cmNlIHJlbGVhc2UiCnwgI2RlZmluZSBHU1RfUEFDS0FHRV9PUklHSU4gIlVu a25vd24gcGFja2FnZSBvcmlnaW4iCnwgI2RlZmluZSBIQVZFX0VYVEVSTkFMIC8qKi8KfCAjZGVm aW5lIEhBVkVfQ1BVX0kzODYgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CnwgCQkjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CnwgCnwgaW50CnwgbWFpbiAo KQp8IHsKfCAjaWYgQllURV9PUkRFUiAhPSBCSUdfRU5ESUFOCnwgCQkgbm90IGJpZyBlbmRpYW4K fCAJCSNlbmRpZgp8IAp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQpjb25maWd1cmU6MTUxMzg6IHJl c3VsdDogbm8KY29uZmlndXJlOjE1Mjc3OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcg aXMgYmlnZW5kaWFuCmNvbmZpZ3VyZToxNTQ4MzogcmVzdWx0OiBubwpjb25maWd1cmU6MTU1NTE6 IGNoZWNraW5nIGZvciBnY2MKY29uZmlndXJlOjE1NTc4OiByZXN1bHQ6IGNjCmNvbmZpZ3VyZTox NTgwNzogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbgpjb25maWd1cmU6MTU4MTY6IGNj IC0tdmVyc2lvbiA+JjUKY2MgKEdDQykgNC4yLjEgMjAwNzA3MTkgIFtGcmVlQlNEXQpDb3B5cmln aHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgaXMgZnJlZSBz b2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlz IE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKY29uZmlndXJlOjE1ODI3OiAkPyA9IDAKY29uZmlndXJl OjE1ODE2OiBjYyAtdiA+JjUKVXNpbmcgYnVpbHQtaW4gc3BlY3MuClRhcmdldDogaTM4Ni11bmRl cm15ZGVzay1mcmVlYnNkCkNvbmZpZ3VyZWQgd2l0aDogRnJlZUJTRC9pMzg2IHN5c3RlbSBjb21w aWxlcgpUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2ZXJzaW9uIDQuMi4xIDIwMDcwNzE5ICBbRnJl ZUJTRF0KY29uZmlndXJlOjE1ODI3OiAkPyA9IDAKY29uZmlndXJlOjE1ODE2OiBjYyAtViA+JjUK Y2M6ICctVicgb3B0aW9uIG11c3QgaGF2ZSBhcmd1bWVudApjb25maWd1cmU6MTU4Mjc6ICQ/ID0g MQpjb25maWd1cmU6MTU4MTY6IGNjIC1xdmVyc2lvbiA+JjUKY2M6IHVucmVjb2duaXplZCBvcHRp b24gJy1xdmVyc2lvbicKY2M6IE5vIGlucHV0IGZpbGVzIHNwZWNpZmllZApjb25maWd1cmU6MTU4 Mjc6ICQ/ID0gMQpjb25maWd1cmU6MTU4MzE6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5n IHRoZSBHTlUgQyBjb21waWxlcgpjb25maWd1cmU6MTU4NTk6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy ZToxNTg2ODogY2hlY2tpbmcgd2hldGhlciBjYyBhY2NlcHRzIC1nCmNvbmZpZ3VyZToxNTkyOTog cmVzdWx0OiB5ZXMKY29uZmlndXJlOjE1OTQ2OiBjaGVja2luZyBmb3IgY2Mgb3B0aW9uIHRvIGFj Y2VwdCBJU08gQzg5CmNvbmZpZ3VyZToxNjAyMzogcmVzdWx0OiBub25lIG5lZWRlZApjb25maWd1 cmU6MTYwNDU6IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgY2MKY29uZmlndXJlOjE2MTU1 OiByZXN1bHQ6IGdjYzMKY29uZmlndXJlOjE2MjgzOiBjaGVja2luZyBmb3IgQysrIGNvbXBpbGVy IHZlcnNpb24KY29uZmlndXJlOjE2MjkyOiBjKysgLS12ZXJzaW9uID4mNQpjKysgKEdDQykgNC4y LjEgMjAwNzA3MTkgIFtGcmVlQlNEXQpDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9y IGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3Ig TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKY29u ZmlndXJlOjE2MzAzOiAkPyA9IDAKY29uZmlndXJlOjE2MjkyOiBjKysgLXYgPiY1ClVzaW5nIGJ1 aWx0LWluIHNwZWNzLgpUYXJnZXQ6IGkzODYtdW5kZXJteWRlc2stZnJlZWJzZApDb25maWd1cmVk IHdpdGg6IEZyZWVCU0QvaTM4NiBzeXN0ZW0gY29tcGlsZXIKVGhyZWFkIG1vZGVsOiBwb3NpeApn Y2MgdmVyc2lvbiA0LjIuMSAyMDA3MDcxOSAgW0ZyZWVCU0RdCmNvbmZpZ3VyZToxNjMwMzogJD8g PSAwCmNvbmZpZ3VyZToxNjI5MjogYysrIC1WID4mNQpjKys6ICctVicgb3B0aW9uIG11c3QgaGF2 ZSBhcmd1bWVudApjb25maWd1cmU6MTYzMDM6ICQ/ID0gMQpjb25maWd1cmU6MTYyOTI6IGMrKyAt cXZlcnNpb24gPiY1CmMrKzogdW5yZWNvZ25pemVkIG9wdGlvbiAnLXF2ZXJzaW9uJwpjKys6IE5v IGlucHV0IGZpbGVzIHNwZWNpZmllZApjb25maWd1cmU6MTYzMDM6ICQ/ID0gMQpjb25maWd1cmU6 MTYzMDc6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQysrIGNvbXBpbGVy CmNvbmZpZ3VyZToxNjMyNjogYysrIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAt TzIgLVduby1mb3JtYXQgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jcHAgPiY1CmNv bmZpZ3VyZToxNjMyNjogJD8gPSAwCmNvbmZpZ3VyZToxNjMzNTogcmVzdWx0OiB5ZXMKY29uZmln dXJlOjE2MzQ0OiBjaGVja2luZyB3aGV0aGVyIGMrKyBhY2NlcHRzIC1nCmNvbmZpZ3VyZToxNjM2 NDogYysrIC1jIC1nICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuY3BwID4mNQpjb25m aWd1cmU6MTYzNjQ6ICQ/ID0gMApjb25maWd1cmU6MTY0MDU6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy ZToxNjQzMDogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiBjKysKY29uZmlndXJlOjE2NTQw OiByZXN1bHQ6IGdjYzMKY29uZmlndXJlOjE2NjY4OiBjaGVja2luZyBmb3IgQysrIGNvbXBpbGVy IHZlcnNpb24KY29uZmlndXJlOjE2Njc3OiBjKysgLS12ZXJzaW9uID4mNQpjKysgKEdDQykgNC4y LjEgMjAwNzA3MTkgIFtGcmVlQlNEXQpDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9y IGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3Ig TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKY29u ZmlndXJlOjE2Njg4OiAkPyA9IDAKY29uZmlndXJlOjE2Njc3OiBjKysgLXYgPiY1ClVzaW5nIGJ1 aWx0LWluIHNwZWNzLgpUYXJnZXQ6IGkzODYtdW5kZXJteWRlc2stZnJlZWJzZApDb25maWd1cmVk IHdpdGg6IEZyZWVCU0QvaTM4NiBzeXN0ZW0gY29tcGlsZXIKVGhyZWFkIG1vZGVsOiBwb3NpeApn Y2MgdmVyc2lvbiA0LjIuMSAyMDA3MDcxOSAgW0ZyZWVCU0RdCmNvbmZpZ3VyZToxNjY4ODogJD8g PSAwCmNvbmZpZ3VyZToxNjY3NzogYysrIC1WID4mNQpjKys6ICctVicgb3B0aW9uIG11c3QgaGF2 ZSBhcmd1bWVudApjb25maWd1cmU6MTY2ODg6ICQ/ID0gMQpjb25maWd1cmU6MTY2Nzc6IGMrKyAt cXZlcnNpb24gPiY1CmMrKzogdW5yZWNvZ25pemVkIG9wdGlvbiAnLXF2ZXJzaW9uJwpjKys6IE5v IGlucHV0IGZpbGVzIHNwZWNpZmllZApjb25maWd1cmU6MTY2ODg6ICQ/ID0gMQpjb25maWd1cmU6 MTY2OTI6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQysrIGNvbXBpbGVy CmNvbmZpZ3VyZToxNjcyMDogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjE2NzI5OiBjaGVja2luZyB3 aGV0aGVyIGMrKyBhY2NlcHRzIC1nCmNvbmZpZ3VyZToxNjc5MDogcmVzdWx0OiB5ZXMKY29uZmln dXJlOjE2ODE1OiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mIGMrKwpjb25maWd1cmU6MTY5 MjU6IHJlc3VsdDogZ2NjMwpjb25maWd1cmU6MTY5NDg6IGNoZWNraW5nIGhvdyB0byBydW4gdGhl IEMrKyBwcmVwcm9jZXNzb3IKY29uZmlndXJlOjE2OTc1OiBjKysgLUUgIC1JL3Vzci9sb2NhbC9p bmNsdWRlICBjb25mdGVzdC5jcHAKY29uZmlndXJlOjE2OTc1OiAkPyA9IDAKY29uZmlndXJlOjE2 OTg5OiBjKysgLUUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jcHAKY29uZnRlc3Qu Y3BwOjM0OjI4OiBlcnJvcjogYWNfbm9uZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVj dG9yeQpjb25maWd1cmU6MTY5ODk6ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdh czoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgIkdTdHJlYW1lciBH b29kIFBsdWctaW5zIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJnc3QtcGx1Z2lucy1nb29k Igp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9T VFJJTkcgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIDAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdF X0JVR1JFUE9SVCAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1 Y3Q9R1N0cmVhbWVyIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0Ug ImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBWRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUg U1REQ19IRUFERVJTIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUgSEFW RV9TWVNfU1RBVF9IIDEKfCAjZGVmaW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9T VFJJTkdfSCAxCnwgI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5H U19IIDEKfCAjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElOVF9I IDEKfCAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQp8ICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKfCAj ZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgSEFWRV9JQ09OViAxCnwgI2RlZmlu ZSBFTkFCTEVfTkxTIDEKfCAjZGVmaW5lIEhBVkVfR0VUVEVYVCAxCnwgI2RlZmluZSBIQVZFX0RD R0VUVEVYVCAxCnwgI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgImdzdC1wbHVnaW5zLWdvb2QtMC4x MCIKfCAjZGVmaW5lIExPQ0FMRURJUiAiL3Vzci9sb2NhbC9zaGFyZS9sb2NhbGUiCnwgI2RlZmlu ZSBHU1RfUEFDS0FHRV9OQU1FICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFz ZSIKfCAjZGVmaW5lIEdTVF9QQUNLQUdFX09SSUdJTiAiVW5rbm93biBwYWNrYWdlIG9yaWdpbiIK fCAjZGVmaW5lIEhBVkVfRVhURVJOQUwgLyoqLwp8ICNkZWZpbmUgSEFWRV9DUFVfSTM4NiAxCnwg I2RlZmluZSBIT1NUX0NQVSAiaTM4NiIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1 ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CmNvbmZpZ3VyZToxNzAxNDogcmVzdWx0OiBjKysgLUUKY29u ZmlndXJlOjE3MDM0OiBjKysgLUUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jcHAK Y29uZmlndXJlOjE3MDM0OiAkPyA9IDAKY29uZmlndXJlOjE3MDQ4OiBjKysgLUUgIC1JL3Vzci9s b2NhbC9pbmNsdWRlICBjb25mdGVzdC5jcHAKY29uZnRlc3QuY3BwOjM0OjI4OiBlcnJvcjogYWNf bm9uZXhpc3RlbnQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6MTcwNDg6 ICQ/ID0gMQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICov CnwgI2RlZmluZSBQQUNLQUdFX05BTUUgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIgp8ICNkZWZp bmUgUEFDS0FHRV9UQVJOQU1FICJnc3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgUEFDS0FHRV9W RVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdTdHJlYW1lciBHb29k IFBsdWctaW5zIDAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiaHR0cDovL2J1 Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyIgp8ICNkZWZp bmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImdzdC1wbHVnaW5zLWdvb2QiCnwg I2RlZmluZSBWRVJTSU9OICIwLjEwLjI0Igp8ICNkZWZpbmUgU1REQ19IRUFERVJTIDEKfCAjZGVm aW5lIEhBVkVfU1lTX1RZUEVTX0ggMQp8ICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKfCAjZGVm aW5lIEhBVkVfU1RETElCX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxCnwgI2RlZmluZSBI QVZFX01FTU9SWV9IIDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKfCAjZGVmaW5lIEhBVkVf SU5UVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NURElOVF9IIDEKfCAjZGVmaW5lIEhBVkVfVU5J U1REX0ggMQp8ICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxp YnMvIgp8ICNkZWZpbmUgSEFWRV9JQ09OViAxCnwgI2RlZmluZSBFTkFCTEVfTkxTIDEKfCAjZGVm aW5lIEhBVkVfR0VUVEVYVCAxCnwgI2RlZmluZSBIQVZFX0RDR0VUVEVYVCAxCnwgI2RlZmluZSBH RVRURVhUX1BBQ0tBR0UgImdzdC1wbHVnaW5zLWdvb2QtMC4xMCIKfCAjZGVmaW5lIExPQ0FMRURJ UiAiL3Vzci9sb2NhbC9zaGFyZS9sb2NhbGUiCnwgI2RlZmluZSBHU1RfUEFDS0FHRV9OQU1FICJH U3RyZWFtZXIgR29vZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZSIKfCAjZGVmaW5lIEdTVF9QQUNL QUdFX09SSUdJTiAiVW5rbm93biBwYWNrYWdlIG9yaWdpbiIKfCAjZGVmaW5lIEhBVkVfRVhURVJO QUwgLyoqLwp8ICNkZWZpbmUgSEFWRV9DUFVfSTM4NiAxCnwgI2RlZmluZSBIT1NUX0NQVSAiaTM4 NiIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+ CmNvbmZpZ3VyZToxNzIxNjogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgYysrCmNvbmZpZ3VyZTox NzI4MzogcmVzdWx0OiAvdXNyL2Jpbi9sZApjb25maWd1cmU6MTcyOTA6IGNoZWNraW5nIGlmIHRo ZSBsaW5rZXIgKC91c3IvYmluL2xkKSBpcyBHTlUgbGQKY29uZmlndXJlOjE3MzA1OiByZXN1bHQ6 IHllcwpjb25maWd1cmU6MTczNjA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIGMrKyBsaW5rZXIgKC91 c3IvYmluL2xkKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzCmNvbmZpZ3VyZToxODI3MzogcmVz dWx0OiB5ZXMKY29uZmlndXJlOjE4MzAxOiBjKysgLWMgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5n IC1waXBlIC1PMiAtV25vLWZvcm1hdCAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmNw cCA+JjUKY29uZmlndXJlOjE4MzA0OiAkPyA9IDAKY29uZmlndXJlOjE4NDg2OiBjaGVja2luZyBm b3IgYysrIG9wdGlvbiB0byBwcm9kdWNlIFBJQwpjb25maWd1cmU6MTg4MDM6IHJlc3VsdDogLWZQ SUMgLURQSUMKY29uZmlndXJlOjE4ODEyOiBjaGVja2luZyBpZiBjKysgUElDIGZsYWcgLWZQSUMg LURQSUMgd29ya3MKY29uZmlndXJlOjE4ODMwOiBjKysgLWMgLU8yIC1mbm8tc3RyaWN0LWFsaWFz aW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1mUElDIC1E UElDIC1EUElDIGNvbmZ0ZXN0LmNwcCA+JjUKY29uZmlndXJlOjE4ODM0OiAkPyA9IDAKY29uZmln dXJlOjE4ODQ3OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTg4Njg6IGNoZWNraW5nIGlmIGMrKyBz dGF0aWMgZmxhZyAtc3RhdGljIHdvcmtzCmNvbmZpZ3VyZToxODg5NjogcmVzdWx0OiB5ZXMKY29u ZmlndXJlOjE4OTA4OiBjaGVja2luZyBpZiBjKysgc3VwcG9ydHMgLWMgLW8gZmlsZS5vCmNvbmZp Z3VyZToxODkyOTogYysrIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVdu by1mb3JtYXQgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtbyBvdXQvY29uZnRlc3QyLm8gY29uZnRl c3QuY3BwID4mNQpjb25maWd1cmU6MTg5MzM6ICQ/ID0gMApjb25maWd1cmU6MTg5NTU6IHJlc3Vs dDogeWVzCmNvbmZpZ3VyZToxODk2MDogY2hlY2tpbmcgaWYgYysrIHN1cHBvcnRzIC1jIC1vIGZp bGUubwpjb25maWd1cmU6MTkwMDc6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToxOTAzNzogY2hlY2tp bmcgd2hldGhlciB0aGUgYysrIGxpbmtlciAoL3Vzci9iaW4vbGQpIHN1cHBvcnRzIHNoYXJlZCBs aWJyYXJpZXMKY29uZmlndXJlOjE5MDY2OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MTkyMDM6IGNo ZWNraW5nIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcwpjb25maWd1cmU6MTk4MTQ6IHJl c3VsdDogZnJlZWJzZDcuMiBsZC5zbwpjb25maWd1cmU6MTk4NjU6IGNoZWNraW5nIGhvdyB0byBo YXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gcHJvZ3JhbXMKY29uZmlndXJlOjE5ODkwOiByZXN1 bHQ6IGltbWVkaWF0ZQpjb25maWd1cmU6MTk5MzE6IGNoZWNraW5nIGZvciBjKysKY29uZmlndXJl OjE5OTQ3OiBmb3VuZCAvdXNyL2Jpbi9jKysKY29uZmlndXJlOjE5OTU5OiByZXN1bHQ6IHllcwpj b25maWd1cmU6MTk5NzM6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMrKyBwcmVwcm9jZXNzb3IK Y29uZmlndXJlOjIwMDM5OiByZXN1bHQ6IGMrKyAtRQpjb25maWd1cmU6MjAwNTk6IGMrKyAtRSAg LUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmNwcApjb25maWd1cmU6MjAwNTk6ICQ/ID0g MApjb25maWd1cmU6MjAwNzM6IGMrKyAtRSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0 LmNwcApjb25mdGVzdC5jcHA6MzQ6Mjg6IGVycm9yOiBhY19ub25leGlzdGVudC5oOiBObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5CmNvbmZpZ3VyZToyMDA3MzogJD8gPSAxCmNvbmZpZ3VyZTogZmFp bGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFN RSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdz dC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjAuMTAuMjQiCnwgI2Rl ZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMgMC4xMC4yNCIKfCAj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVy X2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNk ZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFZFUlNJT04gIjAuMTAu MjQiCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAx CnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwg I2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZp bmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5l IEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZF X0RMRkNOX0ggMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBIQVZFX0lD T05WIDEKfCAjZGVmaW5lIEVOQUJMRV9OTFMgMQp8ICNkZWZpbmUgSEFWRV9HRVRURVhUIDEKfCAj ZGVmaW5lIEhBVkVfRENHRVRURVhUIDEKfCAjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSAiZ3N0LXBs dWdpbnMtZ29vZC0wLjEwIgp8ICNkZWZpbmUgTE9DQUxFRElSICIvdXNyL2xvY2FsL3NoYXJlL2xv Y2FsZSIKfCAjZGVmaW5lIEdTVF9QQUNLQUdFX05BTUUgIkdTdHJlYW1lciBHb29kIFBsdWctaW5z IHNvdXJjZSByZWxlYXNlIgp8ICNkZWZpbmUgR1NUX1BBQ0tBR0VfT1JJR0lOICJVbmtub3duIHBh Y2thZ2Ugb3JpZ2luIgp8ICNkZWZpbmUgSEFWRV9FWFRFUk5BTCAvKiovCnwgI2RlZmluZSBIQVZF X0NQVV9JMzg2IDEKfCAjZGVmaW5lIEhPU1RfQ1BVICJpMzg2Igp8IC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KfCAjaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KY29uZmlndXJlOjIwMTUyOiBjaGVj a2luZyBmb3Igb2JqY2MKY29uZmlndXJlOjIwMTgyOiByZXN1bHQ6IG5vCmNvbmZpZ3VyZToyMDE1 MjogY2hlY2tpbmcgZm9yIG9iamMKY29uZmlndXJlOjIwMTgyOiByZXN1bHQ6IG5vCmNvbmZpZ3Vy ZToyMDE1MjogY2hlY2tpbmcgZm9yIGdjYwpjb25maWd1cmU6MjAxNjg6IGZvdW5kIC91c3IvYmlu L2djYwpjb25maWd1cmU6MjAxNzk6IHJlc3VsdDogZ2NjCmNvbmZpZ3VyZToyMDIxMDogY2hlY2tp bmcgZGVwZW5kZW5jeSBzdHlsZSBvZiBnY2MKY29uZmlndXJlOjIwMzE4OiByZXN1bHQ6IGdjYzMK Y29uZmlndXJlOjIwMzMzOiBjaGVja2luZyBpZiBPYmplY3RpdmUgQyBjb21waWxlciB3b3Jrcwpj b25mdGVzdC5tOiBJbiBmdW5jdGlvbiAnLVtNb28gbW9vXSc6CmNvbmZ0ZXN0Lm06MTI6IHdhcm5p bmc6IGluY29tcGF0aWJsZSBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBidWlsdC1pbiBmdW5jdGlv biAnZXhpdCcKY29uZmlndXJlOjIwMzY4OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MjA1MDU6IGNo ZWNraW5nIHdoZXRoZXIgY2MgdW5kZXJzdGFuZHMgLWMgYW5kIC1vIHRvZ2V0aGVyCmNvbmZpZ3Vy ZToyMDUzMzogY2MgLWMgY29uZnRlc3QuYyAtbyBjb25mdGVzdDIubyA+JjUKY29uZmlndXJlOjIw NTM3OiAkPyA9IDAKY29uZmlndXJlOjIwNTQzOiBjYyAtYyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0 Mi5vID4mNQpjb25maWd1cmU6MjA1NDc6ICQ/ID0gMApjb25maWd1cmU6MjA2MDI6IHJlc3VsdDog eWVzCmNvbmZpZ3VyZToyMDYzNzogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiBjYwpjb25m aWd1cmU6MjA3NDU6IHJlc3VsdDogZ2NjMwpjb25maWd1cmU6MjA3NjM6IGNoZWNraW5nIGZvciB3 b3JraW5nIGRvIHdoaWxlKDApIG1hY3Jvcwpjb25maWd1cmU6MjA3ODQ6IGNjIC1jIC1PMiAtZm5v LXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1 ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6MjA3ODQ6 ICQ/ID0gMApjb25maWd1cmU6MjA3OTI6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToyMDgwMzogY2hl Y2tpbmcgZm9yIHZhbGdyaW5kCmNvbmZpZ3VyZToyMDgzNDogcmVzdWx0OiBubwpjb25maWd1cmU6 MjA4NjY6IHJlc3VsdDogVXNpbmcgY29uZmlnIHNvdXJjZSB4bWw6bWVyZ2VkOi91c3IvbG9jYWwv ZXRjL2djb25mL2djb25mLnhtbC5kZWZhdWx0cyBmb3Igc2NoZW1hIGluc3RhbGxhdGlvbgpjb25m aWd1cmU6MjA4ODE6IHJlc3VsdDogVXNpbmcgJChzeXNjb25mZGlyKS9nY29uZi9zY2hlbWFzIGFz IGluc3RhbGwgZGlyZWN0b3J5IGZvciBzY2hlbWEgZmlsZXMKY29uZmlndXJlOjIxMDA5OiBjaGVj a2luZyB3aGV0aGVyIHRvIGJ1aWxkIGd0ay1kb2MgZG9jdW1lbnRhdGlvbgpjb25maWd1cmU6MjEw MTE6IHJlc3VsdDogbm8KY29uZmlndXJlOjIxMDE4OiBjaGVja2luZyBmb3IgZ3RrZG9jLWNoZWNr CmNvbmZpZ3VyZToyMTA1MTogcmVzdWx0OiBubwpjb25maWd1cmU6MjEwODI6IExvb2tpbmcgZm9y IFB5dGhvbiB2ZXJzaW9uID49IDIuMQpjb25maWd1cmU6MjExMDA6IGNoZWNraW5nIGZvciBweXRo b24KY29uZmlndXJlOjIxMTE4OiBmb3VuZCAvdXNyL2xvY2FsL2Jpbi9weXRob24KY29uZmlndXJl OjIxMTMwOiByZXN1bHQ6IC91c3IvbG9jYWwvYmluL3B5dGhvbgpjb25maWd1cmU6MjExNDI6IGNo ZWNraW5nICIvdXNyL2xvY2FsL2Jpbi9weXRob24iOgpjb25maWd1cmU6MjExNDQ6IHJlc3VsdDog b2theQpjb25maWd1cmU6MjExNjA6IGNoZWNraW5nIGxvY2FsIFB5dGhvbiBjb25maWd1cmF0aW9u CmNvbmZpZ3VyZToyMTE5NzogcmVzdWx0OiBsb29rcyBnb29kCmNvbmZpZ3VyZToyMTIwNTogY2hl Y2tpbmcgd2hldGhlciB0byBidWlsZCBwbHVnaW4gZG9jdW1lbnRhdGlvbgpjb25maWd1cmU6MjEy MTI6IHJlc3VsdDogbm8gKGd0ay1kb2MgZGlzYWJsZWQgb3Igbm90IGF2YWlsYWJsZSkKY29uZmln dXJlOjIxMzE1OiBjaGVja2luZyBmb3IgY29zIGluIC1sbQpjb25maWd1cmU6MjEzNDA6IGNjIC1v IGNvbmZ0ZXN0IC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQg LUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2Fs L2xpYiAgLXB0aHJlYWQgY29uZnRlc3QuYyAtbG0gICA+JjUKY29uZnRlc3QuYzo0Mjogd2Fybmlu ZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uICdjb3MnCmNvbmZpZ3Vy ZToyMTM0MDogJD8gPSAwCmNvbmZpZ3VyZToyMTM0OTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIx MzYyOiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcwpjb25maWd1cmU6MjE0NjY6IHJl c3VsdDogeWVzCmNvbmZpZ3VyZToyMTQ3NjogY2hlY2tpbmcgZm9yIHN0ZGludCB0eXBlcwpjb25m aWd1cmU6MjE0OTk6IGNjIC1jICAgY29uZnRlc3QuYyA+JjUKY29uZmlndXJlOjIxNDk5OiAkPyA9 IDAKY29uZmlndXJlOjIxNTQzOiByZXN1bHQ6IHN0ZGludC5oIChzaG9ydGNpcmN1aXQpCmNvbmZp Z3VyZToyMTkzNTogcmVzdWx0OiBtYWtlIHVzZSBvZiBzdGRpbnQuaCBpbiBfc3RkaW50LmggKGFz c3VtaW5nIEM5OSBjb21wYXRpYmxlIHN5c3RlbSkKY29uZmlndXJlOjIxOTQ1OiBjaGVja2luZyBu ZXRpbmV0L2luLmggdXNhYmlsaXR5CmNvbmZpZ3VyZToyMTk0NTogY2MgLWMgLU8yIC1mbm8tc3Ry aWN0LWFsaWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVkZSAg LUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZpZ3VyZToyMTk0NTogJD8g PSAwCmNvbmZpZ3VyZToyMTk0NTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIxOTQ1OiBjaGVja2lu ZyBuZXRpbmV0L2luLmggcHJlc2VuY2UKY29uZmlndXJlOjIxOTQ1OiBjYyAtRSAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMKY29uZmlndXJlOjIxOTQ1OiAkPyA9IDAKY29uZmlndXJl OjIxOTQ1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MjE5NDU6IGNoZWNraW5nIGZvciBuZXRpbmV0 L2luLmgKY29uZmlndXJlOjIxOTQ1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MjE5NTc6IGNoZWNr aW5nIHdpbnNvY2syLmggdXNhYmlsaXR5CmNvbmZpZ3VyZToyMTk1NzogY2MgLWMgLU8yIC1mbm8t c3RyaWN0LWFsaWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9jYWwvaW5jbHVk ZSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIGNvbmZ0ZXN0LmMgPiY1CmNvbmZ0ZXN0LmM6NzA6MjI6 IGVycm9yOiB3aW5zb2NrMi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CmNvbmZpZ3VyZToy MTk1NzogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMiCnwg I2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQQUNL QUdFX1ZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVy IEdvb2QgUGx1Zy1pbnMgMC4xMC4yNCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJodHRw Oi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIiCnwg I2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29v ZCIKfCAjZGVmaW5lIFZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8 ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8 ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVm aW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUg SEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFW RV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZFX0RMRkNOX0ggMQp8ICNkZWZpbmUgTFRfT0JKRElS ICIubGlicy8iCnwgI2RlZmluZSBIQVZFX0lDT05WIDEKfCAjZGVmaW5lIEVOQUJMRV9OTFMgMQp8 ICNkZWZpbmUgSEFWRV9HRVRURVhUIDEKfCAjZGVmaW5lIEhBVkVfRENHRVRURVhUIDEKfCAjZGVm aW5lIEdFVFRFWFRfUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZC0wLjEwIgp8ICNkZWZpbmUgTE9D QUxFRElSICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIKfCAjZGVmaW5lIEdTVF9QQUNLQUdFX05B TUUgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlIgp8ICNkZWZpbmUgR1NU X1BBQ0tBR0VfT1JJR0lOICJVbmtub3duIHBhY2thZ2Ugb3JpZ2luIgp8ICNkZWZpbmUgSEFWRV9F WFRFUk5BTCAvKiovCnwgI2RlZmluZSBIQVZFX0NQVV9JMzg2IDEKfCAjZGVmaW5lIEhPU1RfQ1BV ICJpMzg2Igp8ICNkZWZpbmUgSEFWRV9ET1dISUxFX01BQ1JPUyAxCnwgI2RlZmluZSBTVERDX0hF QURFUlMgMQp8ICNkZWZpbmUgSEFWRV9ORVRJTkVUX0lOX0ggMQp8IC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAp8ICMg aW5jbHVkZSA8c3lzL3R5cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAp8 ICMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KfCAjZW5kaWYKfCAjaWZkZWYgU1REQ19IRUFERVJTCnwg IyBpbmNsdWRlIDxzdGRsaWIuaD4KfCAjIGluY2x1ZGUgPHN0ZGRlZi5oPgp8ICNlbHNlCnwgIyBp ZmRlZiBIQVZFX1NURExJQl9ICnwgIyAgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBlbmRpZgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR19ICnwgIyBpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMg JiYgZGVmaW5lZCBIQVZFX01FTU9SWV9ICnwgIyAgaW5jbHVkZSA8bWVtb3J5Lmg+CnwgIyBlbmRp Zgp8ICMgaW5jbHVkZSA8c3RyaW5nLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RSSU5HU19I CnwgIyBpbmNsdWRlIDxzdHJpbmdzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfSU5UVFlQRVNf SAp8ICMgaW5jbHVkZSA8aW50dHlwZXMuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVERJTlRf SAp8ICMgaW5jbHVkZSA8aW50dHlwZXMuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9VTklTVERf SAp8ICMgaW5jbHVkZSA8dW5pc3RkLmg+CnwgI2VuZGlmCnwgI2luY2x1ZGUgPHdpbnNvY2syLmg+ CmNvbmZpZ3VyZToyMTk1NzogcmVzdWx0OiBubwpjb25maWd1cmU6MjE5NTc6IGNoZWNraW5nIHdp bnNvY2syLmggcHJlc2VuY2UKY29uZmlndXJlOjIxOTU3OiBjYyAtRSAgLUkvdXNyL2xvY2FsL2lu Y2x1ZGUgIGNvbmZ0ZXN0LmMKY29uZnRlc3QuYzozNzoyMjogZXJyb3I6IHdpbnNvY2syLmg6IE5v IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKY29uZmlndXJlOjIxOTU3OiAkPyA9IDEKY29uZmlndXJl OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FH RV9OQU1FICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFN RSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMC4xMC4yNCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyAwLjEwLjI0 Igp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcv ZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lciIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIi CnwgI2RlZmluZSBQQUNLQUdFICJnc3QtcGx1Z2lucy1nb29kIgp8ICNkZWZpbmUgVkVSU0lPTiAi MC4xMC4yNCIKfCAjZGVmaW5lIFNURENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZFX1NZU19UWVBF U19IIDEKfCAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCnwgI2RlZmluZSBIQVZFX1NURExJQl9I IDEKfCAjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQp8ICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCnwg I2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCnwgI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQp8ICNk ZWZpbmUgSEFWRV9TVERJTlRfSCAxCnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVmaW5l IEhBVkVfRExGQ05fSCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIEhB VkVfSUNPTlYgMQp8ICNkZWZpbmUgRU5BQkxFX05MUyAxCnwgI2RlZmluZSBIQVZFX0dFVFRFWFQg MQp8ICNkZWZpbmUgSEFWRV9EQ0dFVFRFWFQgMQp8ICNkZWZpbmUgR0VUVEVYVF9QQUNLQUdFICJn c3QtcGx1Z2lucy1nb29kLTAuMTAiCnwgI2RlZmluZSBMT0NBTEVESVIgIi91c3IvbG9jYWwvc2hh cmUvbG9jYWxlIgp8ICNkZWZpbmUgR1NUX1BBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1 Zy1pbnMgc291cmNlIHJlbGVhc2UiCnwgI2RlZmluZSBHU1RfUEFDS0FHRV9PUklHSU4gIlVua25v d24gcGFja2FnZSBvcmlnaW4iCnwgI2RlZmluZSBIQVZFX0VYVEVSTkFMIC8qKi8KfCAjZGVmaW5l IEhBVkVfQ1BVX0kzODYgMQp8ICNkZWZpbmUgSE9TVF9DUFUgImkzODYiCnwgI2RlZmluZSBIQVZF X0RPV0hJTEVfTUFDUk9TIDEKfCAjZGVmaW5lIFNURENfSEVBREVSUyAxCnwgI2RlZmluZSBIQVZF X05FVElORVRfSU5fSCAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDx3aW5z b2NrMi5oPgpjb25maWd1cmU6MjE5NTc6IHJlc3VsdDogbm8KY29uZmlndXJlOjIxOTU3OiBjaGVj a2luZyBmb3Igd2luc29jazIuaApjb25maWd1cmU6MjE5NTc6IHJlc3VsdDogbm8KY29uZmlndXJl OjIxOTc4OiBjaGVja2luZyBzeXMvdGltZS5oIHVzYWJpbGl0eQpjb25maWd1cmU6MjE5Nzg6IGNj IC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNy L2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpjb25m aWd1cmU6MjE5Nzg6ICQ/ID0gMApjb25maWd1cmU6MjE5Nzg6IHJlc3VsdDogeWVzCmNvbmZpZ3Vy ZToyMTk3ODogY2hlY2tpbmcgc3lzL3RpbWUuaCBwcmVzZW5jZQpjb25maWd1cmU6MjE5Nzg6IGNj IC1FICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYwpjb25maWd1cmU6MjE5Nzg6ICQ/ ID0gMApjb25maWd1cmU6MjE5Nzg6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToyMTk3ODogY2hlY2tp bmcgZm9yIHN5cy90aW1lLmgKY29uZmlndXJlOjIxOTc4OiByZXN1bHQ6IHllcwpjb25maWd1cmU6 MjE5OTI6IGNoZWNraW5nIGZvciBGSU9OUkVBRCBpbiBzeXMvaW9jdGwuaApjb25maWd1cmU6MjIw MTY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQg LUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4m NQpjb25maWd1cmU6MjIwMTY6ICQ/ID0gMApjb25maWd1cmU6MjIwMjY6IHJlc3VsdDogeWVzCmNv bmZpZ3VyZToyMjA4NjogY2hlY2tpbmcgaWYgY29tcGlsZXIgc3VwcG9ydHMgZ2NjLXN0eWxlIGlu bGluZSBhc3NlbWJseQpjb25maWd1cmU6MjIxMDY6IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlh c2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9s b2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpjb25maWd1cmU6MjIxMDY6ICQ/ID0gMApjb25m aWd1cmU6MjIxMjA6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToyMjE0MzogY2hlY2tpbmcgZm9yIHJp bnQKY29uZmlndXJlOjIyMTQzOiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNp bmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9j YWwvaW5jbHVkZSAgIC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgIC1sbSA+ JjUKY29uZnRlc3QuYzo2Mzogd2FybmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWlu IGZ1bmN0aW9uICdyaW50Jwpjb25maWd1cmU6MjIxNDM6ICQ/ID0gMApjb25maWd1cmU6MjIxNDM6 IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToyMjE0MzogY2hlY2tpbmcgZm9yIHNpbmgKY29uZmlndXJl OjIyMTQzOiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8y IC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAg IC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgIC1sbSA+JjUKY29uZnRlc3Qu Yzo2NDogd2FybmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uICdz aW5oJwpjb25maWd1cmU6MjIxNDM6ICQ/ID0gMApjb25maWd1cmU6MjIxNDM6IHJlc3VsdDogeWVz CmNvbmZpZ3VyZToyMjE0MzogY2hlY2tpbmcgZm9yIGNvc2gKY29uZmlndXJlOjIyMTQzOiBjYyAt byBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0 IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgIC1ML3Vzci9sb2Nh bC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgIC1sbSA+JjUKY29uZnRlc3QuYzo2NTogd2Fybmlu ZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uICdjb3NoJwpjb25maWd1 cmU6MjIxNDM6ICQ/ID0gMApjb25maWd1cmU6MjIxNDM6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToy MjE0MzogY2hlY2tpbmcgZm9yIGFzaW5oCmNvbmZpZ3VyZToyMjE0MzogY2MgLW8gY29uZnRlc3Qg LU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1hdCAtSS91c3IvbG9j YWwvaW5jbHVkZSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICAtTC91c3IvbG9jYWwvbGliICAtcHRo cmVhZCBjb25mdGVzdC5jICAtbG0gPiY1CmNvbmZ0ZXN0LmM6NjY6IHdhcm5pbmc6IGNvbmZsaWN0 aW5nIHR5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbiAnYXNpbmgnCmNvbmZpZ3VyZToyMjE0Mzog JD8gPSAwCmNvbmZpZ3VyZToyMjE0MzogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIyMTQzOiBjaGVj a2luZyBmb3IgZnBjbGFzcwpjb25maWd1cmU6MjIxNDM6IGNjIC1vIGNvbmZ0ZXN0IC1PMiAtZm5v LXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkvdXNyL2xvY2FsL2luY2x1 ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAgLUwvdXNyL2xvY2FsL2xpYiAgLXB0aHJlYWQgY29u ZnRlc3QuYyAgLWxtID4mNQovdmFyL3RtcC8vY2M2WUswQVoubygudGV4dCsweDEyKTogSW4gZnVu Y3Rpb24gYG1haW4nOgo6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZwY2xhc3MnCmNvbmZpZ3Vy ZToyMjE0MzogJD8gPSAxCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZk ZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMi CnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQ QUNLQUdFX1ZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVh bWVyIEdvb2QgUGx1Zy1pbnMgMC4xMC4yNCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJo dHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIi CnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMt Z29vZCIKfCAjZGVmaW5lIFZFUlNJT04gIjAuMTAuMjQiCnwgI2RlZmluZSBTVERDX0hFQURFUlMg MQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0gg MQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAj ZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZp bmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUg SEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBIQVZFX0RMRkNOX0ggMQp8ICNkZWZpbmUgTFRfT0JK RElSICIubGlicy8iCnwgI2RlZmluZSBIQVZFX0lDT05WIDEKfCAjZGVmaW5lIEVOQUJMRV9OTFMg MQp8ICNkZWZpbmUgSEFWRV9HRVRURVhUIDEKfCAjZGVmaW5lIEhBVkVfRENHRVRURVhUIDEKfCAj ZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZC0wLjEwIgp8ICNkZWZpbmUg TE9DQUxFRElSICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIKfCAjZGVmaW5lIEdTVF9QQUNLQUdF X05BTUUgIkdTdHJlYW1lciBHb29kIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlIgp8ICNkZWZpbmUg R1NUX1BBQ0tBR0VfT1JJR0lOICJVbmtub3duIHBhY2thZ2Ugb3JpZ2luIgp8ICNkZWZpbmUgSEFW RV9FWFRFUk5BTCAvKiovCnwgI2RlZmluZSBIQVZFX0NQVV9JMzg2IDEKfCAjZGVmaW5lIEhPU1Rf Q1BVICJpMzg2Igp8ICNkZWZpbmUgSEFWRV9ET1dISUxFX01BQ1JPUyAxCnwgI2RlZmluZSBTVERD X0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9ORVRJTkVUX0lOX0ggMQp8ICNkZWZpbmUgSEFWRV9T WVNfVElNRV9IIDEKfCAjZGVmaW5lIEhBVkVfRklPTlJFQURfSU5fU1lTX0lPQ1RMIDEKfCAjZGVm aW5lIEhBVkVfR0NDX0FTTSAxCnwgI2RlZmluZSBIQVZFX1JJTlQgMQp8ICNkZWZpbmUgSEFWRV9T SU5IIDEKfCAjZGVmaW5lIEhBVkVfQ09TSCAxCnwgI2RlZmluZSBIQVZFX0FTSU5IIDEKfCAvKiBl bmQgY29uZmRlZnMuaC4gICovCnwgLyogRGVmaW5lIGZwY2xhc3MgdG8gYW4gaW5ub2N1b3VzIHZh cmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBkZWNsYXJlcyBmcGNsYXNzLgp8ICAgIEZvciBleGFt cGxlLCBIUC1VWCAxMWkgPGxpbWl0cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwp8ICNk ZWZpbmUgZnBjbGFzcyBpbm5vY3VvdXNfZnBjbGFzcwp8IAp8IC8qIFN5c3RlbSBoZWFkZXIgdG8g ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKfCAgICAg d2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBmcGNsYXNzICgpOyBiZWxvdy4KfCAgICAgUHJl ZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5j ZQp8ICAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMu ICAqLwp8IAp8ICNpZmRlZiBfX1NURENfXwp8ICMgaW5jbHVkZSA8bGltaXRzLmg+CnwgI2Vsc2UK fCAjIGluY2x1ZGUgPGFzc2VydC5oPgp8ICNlbmRpZgp8IAp8ICN1bmRlZiBmcGNsYXNzCnwgCnwg LyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu CnwgICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9m IGEgR0NDCnwgICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk IHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZkZWYgX19jcGx1c3BsdXMKfCBleHRlcm4gIkMiCnwgI2Vu ZGlmCnwgY2hhciBmcGNsYXNzICgpOwp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhp cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZhaWwg d2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAgc29t ZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4g ICovCnwgI2lmIGRlZmluZWQgX19zdHViX2ZwY2xhc3MgfHwgZGVmaW5lZCBfX3N0dWJfX19mcGNs YXNzCnwgY2hva2UgbWUKfCAjZW5kaWYKfCAKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBm cGNsYXNzICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQpjb25maWd1cmU6MjIxNDM6IHJlc3Vs dDogbm8KY29uZmlndXJlOjIyMTU1OiBjaGVja2luZyBmb3IgaXNpbmYKY29uZmlndXJlOjIyMTcx OiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8t Zm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgIC1ML3Vz ci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0ZXN0LmMgID4mNQpjb25maWd1cmU6MjIxNzE6ICQ/ ID0gMApjb25maWd1cmU6MjIxNzk6IHJlc3VsdDogeWVzCmNvbmZpZ3VyZToyMjE5NDogY2hlY2tp bmcgZm9yIHN0ZGxpYi5oCmNvbmZpZ3VyZToyMjE5NDogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIy MTk0OiBjaGVja2luZyBmb3IgdW5pc3RkLmgKY29uZmlndXJlOjIyMTk0OiByZXN1bHQ6IHllcwpj b25maWd1cmU6MjIxOTQ6IGNoZWNraW5nIGZvciBzeXMvcGFyYW0uaApjb25maWd1cmU6MjIxOTQ6 IGNjIC1jIC1PMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtTzIgLVduby1mb3JtYXQgLUkv dXNyL2xvY2FsL2luY2x1ZGUgIC1JL3Vzci9sb2NhbC9pbmNsdWRlICBjb25mdGVzdC5jID4mNQpj b25maWd1cmU6MjIxOTQ6ICQ/ID0gMApjb25maWd1cmU6MjIxOTQ6IHJlc3VsdDogeWVzCmNvbmZp Z3VyZToyMjIxNTogY2hlY2tpbmcgZm9yIGdldHBhZ2VzaXplCmNvbmZpZ3VyZToyMjIxNTogY2Mg LW8gY29uZnRlc3QgLU8yIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1waXBlIC1PMiAtV25vLWZvcm1h dCAtSS91c3IvbG9jYWwvaW5jbHVkZSAgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICAtTC91c3IvbG9j YWwvbGliICAtcHRocmVhZCBjb25mdGVzdC5jICA+JjUKY29uZmlndXJlOjIyMjE1OiAkPyA9IDAK Y29uZmlndXJlOjIyMjE1OiByZXN1bHQ6IHllcwpjb25maWd1cmU6MjIyMjQ6IGNoZWNraW5nIGZv ciB3b3JraW5nIG1tYXAKY29uZmlndXJlOjIyMzcxOiBjYyAtbyBjb25mdGVzdCAtTzIgLWZuby1z dHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRl ICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgIC1ML3Vzci9sb2NhbC9saWIgIC1wdGhyZWFkIGNvbmZ0 ZXN0LmMgID4mNQpjb25maWd1cmU6MjIzNzE6ICQ/ID0gMApjb25maWd1cmU6MjIzNzE6IC4vY29u ZnRlc3QKY29uZmlndXJlOjIyMzcxOiAkPyA9IDAKY29uZmlndXJlOjIyMzgxOiByZXN1bHQ6IHll cwpjb25maWd1cmU6MjI0MDA6IGNoZWNraW5nIGZvciBzdHJ1Y3QgaXBfbXJlcW4KY29uZmlndXJl OjIyNDAwOiBjYyAtYyAtTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9y bWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3Qu YyA+JjUKY29uZmlndXJlOjIyNDAwOiAkPyA9IDAKY29uZmlndXJlOjIyNDAwOiBjYyAtYyAtTzIg LWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9p bmNsdWRlICAtSS91c3IvbG9jYWwvaW5jbHVkZSAgY29uZnRlc3QuYyA+JjUKY29uZnRlc3QuYzog SW4gZnVuY3Rpb24gJ21haW4nOgpjb25mdGVzdC5jOjU1OiBlcnJvcjogZXhwZWN0ZWQgZXhwcmVz c2lvbiBiZWZvcmUgJyknIHRva2VuCmNvbmZpZ3VyZToyMjQwMDogJD8gPSAxCmNvbmZpZ3VyZTog ZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0Vf TkFNRSAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUg ImdzdC1wbHVnaW5zLWdvb2QiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjAuMTAuMjQiCnwg I2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVyIEdvb2QgUGx1Zy1pbnMgMC4xMC4yNCIK fCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2Vu dGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXIiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8 ICNkZWZpbmUgUEFDS0FHRSAiZ3N0LXBsdWdpbnMtZ29vZCIKfCAjZGVmaW5lIFZFUlNJT04gIjAu MTAuMjQiCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNf SCAxCnwgI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQp8ICNkZWZpbmUgSEFWRV9TVERMSUJfSCAx CnwgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKfCAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQp8ICNk ZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQp8ICNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKfCAjZGVm aW5lIEhBVkVfU1RESU5UX0ggMQp8ICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCnwgI2RlZmluZSBI QVZFX0RMRkNOX0ggMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBIQVZF X0lDT05WIDEKfCAjZGVmaW5lIEVOQUJMRV9OTFMgMQp8ICNkZWZpbmUgSEFWRV9HRVRURVhUIDEK fCAjZGVmaW5lIEhBVkVfRENHRVRURVhUIDEKfCAjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSAiZ3N0 LXBsdWdpbnMtZ29vZC0wLjEwIgp8ICNkZWZpbmUgTE9DQUxFRElSICIvdXNyL2xvY2FsL3NoYXJl L2xvY2FsZSIKfCAjZGVmaW5lIEdTVF9QQUNLQUdFX05BTUUgIkdTdHJlYW1lciBHb29kIFBsdWct aW5zIHNvdXJjZSByZWxlYXNlIgp8ICNkZWZpbmUgR1NUX1BBQ0tBR0VfT1JJR0lOICJVbmtub3du IHBhY2thZ2Ugb3JpZ2luIgp8ICNkZWZpbmUgSEFWRV9FWFRFUk5BTCAvKiovCnwgI2RlZmluZSBI QVZFX0NQVV9JMzg2IDEKfCAjZGVmaW5lIEhPU1RfQ1BVICJpMzg2Igp8ICNkZWZpbmUgSEFWRV9E T1dISUxFX01BQ1JPUyAxCnwgI2RlZmluZSBTVERDX0hFQURFUlMgMQp8ICNkZWZpbmUgSEFWRV9O RVRJTkVUX0lOX0ggMQp8ICNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKfCAjZGVmaW5lIEhBVkVf RklPTlJFQURfSU5fU1lTX0lPQ1RMIDEKfCAjZGVmaW5lIEhBVkVfR0NDX0FTTSAxCnwgI2RlZmlu ZSBIQVZFX1JJTlQgMQp8ICNkZWZpbmUgSEFWRV9TSU5IIDEKfCAjZGVmaW5lIEhBVkVfQ09TSCAx CnwgI2RlZmluZSBIQVZFX0FTSU5IIDEKfCAjZGVmaW5lIEhBVkVfSVNJTkYgMQp8ICNkZWZpbmUg SEFWRV9TVERMSUJfSCAxCnwgI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKfCAjZGVmaW5lIEhBVkVf U1lTX1BBUkFNX0ggMQp8ICNkZWZpbmUgSEFWRV9HRVRQQUdFU0laRSAxCnwgI2RlZmluZSBIQVZF X01NQVAgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8bmV0aW5ldC9pbi5o Pgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgaWYgKHNpemVvZiAoKHN0cnVjdCBpcF9tcmVxbikp KQp8IAkgICAgcmV0dXJuIDA7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9CmNvbmZpZ3VyZToyMjQw MDogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIyNDI3OiBjaGVja2luZyBmb3IgR0xJQgpjb25maWd1 cmU6MjI0MzU6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkd2hpY2giCmNv bmZpZ3VyZToyMjQzODogJD8gPSAwCmNvbmZpZ3VyZToyMjQ1MzogJFBLR19DT05GSUcgLS1leGlz dHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIKY29uZmlndXJlOjIyNDU2OiAkPyA9IDAKY29uZmln dXJlOjIyNTEyOiByZXN1bHQ6IHllcwpjb25maWd1cmU6MjI1ODI6IGNoZWNraW5nIGZvciBPUkMK Y29uZmlndXJlOjIyNTkwOiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAib3Jj LTAuNCA+PSAkT1JDX1JFUSIKY29uZmlndXJlOjIyNTkzOiAkPyA9IDAKY29uZmlndXJlOjIyNjA4 OiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAib3JjLTAuNCA+PSAkT1JDX1JF USIKY29uZmlndXJlOjIyNjExOiAkPyA9IDAKY29uZmlndXJlOjIyNjYzOiByZXN1bHQ6IHllcwpj b25maWd1cmU6MjI3MDA6IGNoZWNraW5nIGZvciBHU1QKY29uZmlndXJlOjIyNzA4OiAkUEtHX0NP TkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJG1vZHVsZSA+PSAkbWludmVyIgpjb25maWd1 cmU6MjI3MTE6ICQ/ID0gMApjb25maWd1cmU6MjI3MjY6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0t cHJpbnQtZXJyb3JzICIkbW9kdWxlID49ICRtaW52ZXIiCmNvbmZpZ3VyZToyMjcyOTogJD8gPSAw CmNvbmZpZ3VyZToyMjc4OTogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIyODAzOiB1c2luZyBHU3Ry ZWFtZXIgdG9vbHMgaW4gL3Vzci9sb2NhbC9iaW4KY29uZmlndXJlOjIyODEzOiB1c2luZyBHU3Ry ZWFtZXIgcGx1Zy1pbnMgaW4gL3Vzci9sb2NhbC9saWIvZ3N0cmVhbWVyLTAuMTAKY29uZmlndXJl OjIyODI1OiBjaGVja2luZyBmb3IgR1NUX0JBU0UKY29uZmlndXJlOjIyODMzOiAkUEtHX0NPTkZJ RyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJG1vZHVsZSA+PSAkbWludmVyIgpjb25maWd1cmU6 MjI4MzY6ICQ/ID0gMApjb25maWd1cmU6MjI4NTE6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJp bnQtZXJyb3JzICIkbW9kdWxlID49ICRtaW52ZXIiCmNvbmZpZ3VyZToyMjg1NDogJD8gPSAwCmNv bmZpZ3VyZToyMjkxNDogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIyOTMxOiBjaGVja2luZyBmb3Ig R1NUX0dEUApjb25maWd1cmU6MjI5Mzk6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJy b3JzICIkbW9kdWxlID49ICRtaW52ZXIiCmNvbmZpZ3VyZToyMjk0MjogJD8gPSAwCmNvbmZpZ3Vy ZToyMjk1NzogJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiRtb2R1bGUgPj0g JG1pbnZlciIKY29uZmlndXJlOjIyOTYwOiAkPyA9IDAKY29uZmlndXJlOjIzMDIwOiByZXN1bHQ6 IHllcwpjb25maWd1cmU6MjMwMzc6IGNoZWNraW5nIGZvciBHU1RfQ09OVFJPTExFUgpjb25maWd1 cmU6MjMwNDU6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkbW9kdWxlID49 ICRtaW52ZXIiCmNvbmZpZ3VyZToyMzA0ODogJD8gPSAwCmNvbmZpZ3VyZToyMzA2MzogJFBLR19D T05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiRtb2R1bGUgPj0gJG1pbnZlciIKY29uZmln dXJlOjIzMDY2OiAkPyA9IDAKY29uZmlndXJlOjIzMTI2OiByZXN1bHQ6IHllcwpjb25maWd1cmU6 MjMxNDM6IGNoZWNraW5nIGZvciBHU1RfQ0hFQ0sKY29uZmlndXJlOjIzMTUxOiAkUEtHX0NPTkZJ RyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJG1vZHVsZSA+PSAkbWludmVyIgpjb25maWd1cmU6 MjMxNTQ6ICQ/ID0gMApjb25maWd1cmU6MjMxNjk6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJp bnQtZXJyb3JzICIkbW9kdWxlID49ICRtaW52ZXIiCmNvbmZpZ3VyZToyMzE3MjogJD8gPSAwCmNv bmZpZ3VyZToyMzIzMjogcmVzdWx0OiB5ZXMKY29uZmlndXJlOjIzMjQ5OiBjaGVja2luZyBmb3Ig R1NUX1BMVUdJTlNfQkFTRQpjb25maWd1cmU6MjMyNTc6ICRQS0dfQ09ORklHIC0tZXhpc3RzIC0t cHJpbnQtZXJyb3JzICIkbW9kdWxlID49ICRtaW52ZXIiClJlcXVlc3RlZCAnZ3N0cmVhbWVyLXBs dWdpbnMtYmFzZS0wLjEwID49IDAuMTAuMzAnIGJ1dCB2ZXJzaW9uIG9mIEdTdHJlYW1lciBCYXNl IFBsdWdpbnMgTGlicmFyaWVzIGlzIDAuMTAuMjIKY29uZmlndXJlOjIzMjYwOiAkPyA9IDEKY29u ZmlndXJlOjIzMjc1OiAkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJG1vZHVs ZSA+PSAkbWludmVyIgpSZXF1ZXN0ZWQgJ2dzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+PSAw LjEwLjMwJyBidXQgdmVyc2lvbiBvZiBHU3RyZWFtZXIgQmFzZSBQbHVnaW5zIExpYnJhcmllcyBp cyAwLjEwLjIyCmNvbmZpZ3VyZToyMzI3ODogJD8gPSAxClJlcXVlc3RlZCAnZ3N0cmVhbWVyLXBs dWdpbnMtYmFzZS0wLjEwID49IDAuMTAuMzAnIGJ1dCB2ZXJzaW9uIG9mIEdTdHJlYW1lciBCYXNl IFBsdWdpbnMgTGlicmFyaWVzIGlzIDAuMTAuMjIKY29uZmlndXJlOjIzMzA2OiByZXN1bHQ6IG5v CmNvbmZpZ3VyZToyMzMxMDogcmVzdWx0OiBubwpjb25maWd1cmU6MjMzMTI6IFJlcXVlc3RlZCAn Z3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwID49IDAuMTAuMzAnIGJ1dCB2ZXJzaW9uIG9mIEdT dHJlYW1lciBCYXNlIFBsdWdpbnMgTGlicmFyaWVzIGlzIDAuMTAuMjIKY29uZmlndXJlOjIzMzE1 OiBlcnJvcjogbm8gZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwID49IDAuMTAuMzAgKEdTdHJl YW1lciBCYXNlIFBsdWctaW5zIExpYnJhcnkpIGZvdW5kCgojIyAtLS0tLS0tLS0tLS0tLS0tICMj CiMjIENhY2hlIHZhcmlhYmxlcy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwoKX2N2X2dfc3Vw cG9ydF9kb3doaWxlX21hY3Jvcz15ZXMKX2N2X2dzdF9maW9ucmVhZF9pbl9zeXNfaW9jdGw9eWVz CmFjX2N2X2J1aWxkPWkzODYtcG9ydGJsZC1mcmVlYnNkNy4yCmFjX2N2X2NfYmlnZW5kaWFuPW5v CmFjX2N2X2NfY29tcGlsZXJfZ251PXllcwphY19jdl9jeHhfY29tcGlsZXJfZ251PXllcwphY19j dl9lbnZfQU5OT0RFWF9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9BTk5PREVYX0NGTEFHU192YWx1 ZT0nJwphY19jdl9lbnZfQU5OT0RFWF9MSUJTX3NldD0nJwphY19jdl9lbnZfQU5OT0RFWF9MSUJT X3ZhbHVlPScnCmFjX2N2X2Vudl9DQUlST19DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9DQUlST19D RkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X0NBSVJPX0xJQlNfc2V0PScnCmFjX2N2X2Vudl9DQUlS T19MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9DQ0FTRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9DQ0FT RkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X0NDQVNfc2V0PScnCmFjX2N2X2Vudl9DQ0FTX3ZhbHVl PScnCmFjX2N2X2Vudl9DQ0Nfc2V0PScnCmFjX2N2X2Vudl9DQ0NfdmFsdWU9JycKYWNfY3ZfZW52 X0NDX3NldD1zZXQKYWNfY3ZfZW52X0NDX3ZhbHVlPWNjCmFjX2N2X2Vudl9DRkxBR1Nfc2V0PXNl dAphY19jdl9lbnZfQ0ZMQUdTX3ZhbHVlPSctTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUg LU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlJwphY19jdl9lbnZfQ1BQRkxBR1Nf c2V0PXNldAphY19jdl9lbnZfQ1BQRkxBR1NfdmFsdWU9JyAtSS91c3IvbG9jYWwvaW5jbHVkZSAn CmFjX2N2X2Vudl9DUFBfc2V0PScnCmFjX2N2X2Vudl9DUFBfdmFsdWU9JycKYWNfY3ZfZW52X0NY WENQUF9zZXQ9JycKYWNfY3ZfZW52X0NYWENQUF92YWx1ZT0nJwphY19jdl9lbnZfQ1hYRkxBR1Nf c2V0PXNldAphY19jdl9lbnZfQ1hYRkxBR1NfdmFsdWU9Jy1PMiAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtcGlwZSAtTzIgLVduby1mb3JtYXQnCmFjX2N2X2Vudl9DWFhfc2V0PXNldAphY19jdl9lbnZf Q1hYX3ZhbHVlPWMrKwphY19jdl9lbnZfRVNEX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X0VTRF9D RkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X0VTRF9MSUJTX3NldD0nJwphY19jdl9lbnZfRVNEX0xJ QlNfdmFsdWU9JycKYWNfY3ZfZW52X0ZMQUNfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfRkxBQ19D RkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X0ZMQUNfTElCU19zZXQ9JycKYWNfY3ZfZW52X0ZMQUNf TElCU192YWx1ZT0nJwphY19jdl9lbnZfR0NPTkZfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfR0NP TkZfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HQ09ORl9MSUJTX3NldD0nJwphY19jdl9lbnZf R0NPTkZfTElCU192YWx1ZT0nJwphY19jdl9lbnZfR0RLX1BJWEJVRjNfQ0ZMQUdTX3NldD0nJwph Y19jdl9lbnZfR0RLX1BJWEJVRjNfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HREtfUElYQlVG M19MSUJTX3NldD0nJwphY19jdl9lbnZfR0RLX1BJWEJVRjNfTElCU192YWx1ZT0nJwphY19jdl9l bnZfR0RLX1BJWEJVRl9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9HREtfUElYQlVGX0NGTEFHU192 YWx1ZT0nJwphY19jdl9lbnZfR0RLX1BJWEJVRl9MSUJTX3NldD0nJwphY19jdl9lbnZfR0RLX1BJ WEJVRl9MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9HTElCX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52 X0dMSUJfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HTElCX0xJQlNfc2V0PScnCmFjX2N2X2Vu dl9HTElCX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52X0dTVF9CQVNFX0NGTEFHU19zZXQ9JycKYWNf Y3ZfZW52X0dTVF9CQVNFX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfR1NUX0JBU0VfTElCU19z ZXQ9JycKYWNfY3ZfZW52X0dTVF9CQVNFX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52X0dTVF9DRkxB R1Nfc2V0PScnCmFjX2N2X2Vudl9HU1RfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HU1RfQ0hF Q0tfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfR1NUX0NIRUNLX0NGTEFHU192YWx1ZT0nJwphY19j dl9lbnZfR1NUX0NIRUNLX0xJQlNfc2V0PScnCmFjX2N2X2Vudl9HU1RfQ0hFQ0tfTElCU192YWx1 ZT0nJwphY19jdl9lbnZfR1NUX0NPTlRST0xMRVJfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfR1NU X0NPTlRST0xMRVJfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HU1RfQ09OVFJPTExFUl9MSUJT X3NldD0nJwphY19jdl9lbnZfR1NUX0NPTlRST0xMRVJfTElCU192YWx1ZT0nJwphY19jdl9lbnZf R1NUX0dEUF9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9HU1RfR0RQX0NGTEFHU192YWx1ZT0nJwph Y19jdl9lbnZfR1NUX0dEUF9MSUJTX3NldD0nJwphY19jdl9lbnZfR1NUX0dEUF9MSUJTX3ZhbHVl PScnCmFjX2N2X2Vudl9HU1RfTElCU19zZXQ9JycKYWNfY3ZfZW52X0dTVF9MSUJTX3ZhbHVlPScn CmFjX2N2X2Vudl9HU1RfUExVR0lOU19CQVNFX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X0dTVF9Q TFVHSU5TX0JBU0VfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9HU1RfUExVR0lOU19CQVNFX0xJ QlNfc2V0PScnCmFjX2N2X2Vudl9HU1RfUExVR0lOU19CQVNFX0xJQlNfdmFsdWU9JycKYWNfY3Zf ZW52X0dUS19DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9HVEtfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2 X2Vudl9HVEtfTElCU19zZXQ9JycKYWNfY3ZfZW52X0dUS19MSUJTX3ZhbHVlPScnCmFjX2N2X2Vu dl9HVURFVl9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9HVURFVl9DRkxBR1NfdmFsdWU9JycKYWNf Y3ZfZW52X0dVREVWX0xJQlNfc2V0PScnCmFjX2N2X2Vudl9HVURFVl9MSUJTX3ZhbHVlPScnCmFj X2N2X2Vudl9IQUxfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfSEFMX0NGTEFHU192YWx1ZT0nJwph Y19jdl9lbnZfSEFMX0xJQlNfc2V0PScnCmFjX2N2X2Vudl9IQUxfTElCU192YWx1ZT0nJwphY19j dl9lbnZfTERGTEFHU19zZXQ9c2V0CmFjX2N2X2Vudl9MREZMQUdTX3ZhbHVlPScgLUwvdXNyL2xv Y2FsL2xpYiAgLXB0aHJlYWQnCmFjX2N2X2Vudl9MSUJDQUNBX0NGTEFHU19zZXQ9JycKYWNfY3Zf ZW52X0xJQkNBQ0FfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9MSUJDQUNBX0xJQlNfc2V0PScn CmFjX2N2X2Vudl9MSUJDQUNBX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52X0xJQkRWX0NGTEFHU19z ZXQ9JycKYWNfY3ZfZW52X0xJQkRWX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfTElCRFZfTElC U19zZXQ9JycKYWNfY3ZfZW52X0xJQkRWX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52X0xJQklFQzYx ODgzX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X0xJQklFQzYxODgzX0NGTEFHU192YWx1ZT0nJwph Y19jdl9lbnZfTElCSUVDNjE4ODNfTElCU19zZXQ9JycKYWNfY3ZfZW52X0xJQklFQzYxODgzX0xJ QlNfdmFsdWU9JycKYWNfY3ZfZW52X0xJQlBOR19DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9MSUJQ TkdfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9MSUJQTkdfTElCU19zZXQ9JycKYWNfY3ZfZW52 X0xJQlBOR19MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9MSUJTX3NldD0nJwphY19jdl9lbnZfTElC U192YWx1ZT0nJwphY19jdl9lbnZfTElCVjRMMl9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vudl9MSUJW NEwyX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfTElCVjRMMl9MSUJTX3NldD0nJwphY19jdl9l bnZfTElCVjRMMl9MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9PUkNfQ0ZMQUdTX3NldD0nJwphY19j dl9lbnZfT1JDX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfT1JDX0xJQlNfc2V0PScnCmFjX2N2 X2Vudl9PUkNfTElCU192YWx1ZT0nJwphY19jdl9lbnZfUEtHX0NPTkZJR19zZXQ9JycKYWNfY3Zf ZW52X1BLR19DT05GSUdfdmFsdWU9JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8xMV9DRkxBR1Nfc2V0 PScnCmFjX2N2X2Vudl9QVUxTRV8wXzlfMTFfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9QVUxT RV8wXzlfMTFfTElCU19zZXQ9JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8xMV9MSUJTX3ZhbHVlPScn CmFjX2N2X2Vudl9QVUxTRV8wXzlfMTJfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfUFVMU0VfMF85 XzEyX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfUFVMU0VfMF85XzEyX0xJQlNfc2V0PScnCmFj X2N2X2Vudl9QVUxTRV8wXzlfMTJfTElCU192YWx1ZT0nJwphY19jdl9lbnZfUFVMU0VfMF85XzEz X0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8xM19DRkxBR1NfdmFsdWU9JycKYWNf Y3ZfZW52X1BVTFNFXzBfOV8xM19MSUJTX3NldD0nJwphY19jdl9lbnZfUFVMU0VfMF85XzEzX0xJ QlNfdmFsdWU9JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8xNV9DRkxBR1Nfc2V0PScnCmFjX2N2X2Vu dl9QVUxTRV8wXzlfMTVfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9QVUxTRV8wXzlfMTVfTElC U19zZXQ9JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8xNV9MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9Q VUxTRV8wXzlfMTZfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfUFVMU0VfMF85XzE2X0NGTEFHU192 YWx1ZT0nJwphY19jdl9lbnZfUFVMU0VfMF85XzE2X0xJQlNfc2V0PScnCmFjX2N2X2Vudl9QVUxT RV8wXzlfMTZfTElCU192YWx1ZT0nJwphY19jdl9lbnZfUFVMU0VfMF85XzIwX0NGTEFHU19zZXQ9 JycKYWNfY3ZfZW52X1BVTFNFXzBfOV8yMF9DRkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1BVTFNF XzBfOV8yMF9MSUJTX3NldD0nJwphY19jdl9lbnZfUFVMU0VfMF85XzIwX0xJQlNfdmFsdWU9JycK YWNfY3ZfZW52X1BVTFNFX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X1BVTFNFX0NGTEFHU192YWx1 ZT0nJwphY19jdl9lbnZfUFVMU0VfTElCU19zZXQ9JycKYWNfY3ZfZW52X1BVTFNFX0xJQlNfdmFs dWU9JycKYWNfY3ZfZW52X1JBVzEzOTRfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfUkFXMTM5NF9D RkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1JBVzEzOTRfTElCU19zZXQ9JycKYWNfY3ZfZW52X1JB VzEzOTRfTElCU192YWx1ZT0nJwphY19jdl9lbnZfU0hPVVQyX0NGTEFHU19zZXQ9JycKYWNfY3Zf ZW52X1NIT1VUMl9DRkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1NIT1VUMl9MSUJTX3NldD0nJwph Y19jdl9lbnZfU0hPVVQyX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52X1NPVVBfQ0ZMQUdTX3NldD0n JwphY19jdl9lbnZfU09VUF9DRkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1NPVVBfTElCU19zZXQ9 JycKYWNfY3ZfZW52X1NPVVBfTElCU192YWx1ZT0nJwphY19jdl9lbnZfU1BFRVhfQ0ZMQUdTX3Nl dD0nJwphY19jdl9lbnZfU1BFRVhfQ0ZMQUdTX3ZhbHVlPScnCmFjX2N2X2Vudl9TUEVFWF9MSUJT X3NldD0nJwphY19jdl9lbnZfU1BFRVhfTElCU192YWx1ZT0nJwphY19jdl9lbnZfVEFHTElCX0NG TEFHU19zZXQ9JycKYWNfY3ZfZW52X1RBR0xJQl9DRkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1RB R0xJQl9MSUJTX3NldD0nJwphY19jdl9lbnZfVEFHTElCX0xJQlNfdmFsdWU9JycKYWNfY3ZfZW52 X1ZBTEdSSU5EX0NGTEFHU19zZXQ9JycKYWNfY3ZfZW52X1ZBTEdSSU5EX0NGTEFHU192YWx1ZT0n JwphY19jdl9lbnZfVkFMR1JJTkRfTElCU19zZXQ9JycKYWNfY3ZfZW52X1ZBTEdSSU5EX0xJQlNf dmFsdWU9JycKYWNfY3ZfZW52X1dBVlBBQ0tfQ0ZMQUdTX3NldD0nJwphY19jdl9lbnZfV0FWUEFD S19DRkxBR1NfdmFsdWU9JycKYWNfY3ZfZW52X1dBVlBBQ0tfTElCU19zZXQ9JycKYWNfY3ZfZW52 X1dBVlBBQ0tfTElCU192YWx1ZT0nJwphY19jdl9lbnZfWERBTUFHRV9DRkxBR1Nfc2V0PScnCmFj X2N2X2Vudl9YREFNQUdFX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfWERBTUFHRV9MSUJTX3Nl dD0nJwphY19jdl9lbnZfWERBTUFHRV9MSUJTX3ZhbHVlPScnCmFjX2N2X2Vudl9YRklYRVNfQ0ZM QUdTX3NldD0nJwphY19jdl9lbnZfWEZJWEVTX0NGTEFHU192YWx1ZT0nJwphY19jdl9lbnZfWEZJ WEVTX0xJQlNfc2V0PScnCmFjX2N2X2Vudl9YRklYRVNfTElCU192YWx1ZT0nJwphY19jdl9lbnZf WE1LTUZfc2V0PScnCmFjX2N2X2Vudl9YTUtNRl92YWx1ZT0nJwphY19jdl9lbnZfYnVpbGRfYWxp YXNfc2V0PXNldAphY19jdl9lbnZfYnVpbGRfYWxpYXNfdmFsdWU9aTM4Ni1wb3J0YmxkLWZyZWVi c2Q3LjIKYWNfY3ZfZW52X2hvc3RfYWxpYXNfc2V0PScnCmFjX2N2X2Vudl9ob3N0X2FsaWFzX3Zh bHVlPScnCmFjX2N2X2Vudl90YXJnZXRfYWxpYXNfc2V0PScnCmFjX2N2X2Vudl90YXJnZXRfYWxp YXNfdmFsdWU9JycKYWNfY3ZfZnVuY19hc2luaD15ZXMKYWNfY3ZfZnVuY19jb3NoPXllcwphY19j dl9mdW5jX2ZwY2xhc3M9bm8KYWNfY3ZfZnVuY19nZXRwYWdlc2l6ZT15ZXMKYWNfY3ZfZnVuY19t bWFwX2ZpeGVkX21hcHBlZD15ZXMKYWNfY3ZfZnVuY19yaW50PXllcwphY19jdl9mdW5jX3Npbmg9 eWVzCmFjX2N2X2hhdmVfaXNpbmY9eWVzCmFjX2N2X2hlYWRlcl9kbGZjbl9oPXllcwphY19jdl9o ZWFkZXJfaW50dHlwZXNfaD15ZXMKYWNfY3ZfaGVhZGVyX21lbW9yeV9oPXllcwphY19jdl9oZWFk ZXJfbmV0aW5ldF9pbl9oPXllcwphY19jdl9oZWFkZXJfc3RkYz15ZXMKYWNfY3ZfaGVhZGVyX3N0 ZGludD1zdGRpbnQuaAphY19jdl9oZWFkZXJfc3RkaW50X2g9eWVzCmFjX2N2X2hlYWRlcl9zdGRp bnRfdD1zdGRpbnQuaAphY19jdl9oZWFkZXJfc3RkbGliX2g9eWVzCmFjX2N2X2hlYWRlcl9zdHJp bmdfaD15ZXMKYWNfY3ZfaGVhZGVyX3N0cmluZ3NfaD15ZXMKYWNfY3ZfaGVhZGVyX3N5c19wYXJh bV9oPXllcwphY19jdl9oZWFkZXJfc3lzX3N0YXRfaD15ZXMKYWNfY3ZfaGVhZGVyX3N5c190aW1l X2g9eWVzCmFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaD15ZXMKYWNfY3ZfaGVhZGVyX3VuaXN0ZF9o PXllcwphY19jdl9oZWFkZXJfd2luc29jazJfaD1ubwphY19jdl9ob3N0PWkzODYtcG9ydGJsZC1m cmVlYnNkNy4yCmFjX2N2X2xpYl9tX2Nvcz15ZXMKYWNfY3Zfb2JqZXh0PW8KYWNfY3ZfcGF0aF9E T0xUX0JBU0g9JycKYWNfY3ZfcGF0aF9FR1JFUD0nL3Vzci9iaW4vZ3JlcCAtRScKYWNfY3ZfcGF0 aF9GR1JFUD0nL3Vzci9iaW4vZ3JlcCAtRicKYWNfY3ZfcGF0aF9HTVNHRk1UPS91c3IvbG9jYWwv YmluL21zZ2ZtdAphY19jdl9wYXRoX0dSRVA9L3Vzci9iaW4vZ3JlcAphY19jdl9wYXRoX01TR0ZN VD0vdXNyL2xvY2FsL2Jpbi9tc2dmbXQKYWNfY3ZfcGF0aF9NU0dNRVJHRT0vdXNyL2xvY2FsL2Jp bi9tc2dtZXJnZQphY19jdl9wYXRoX1BZVEhPTj0vdXNyL2xvY2FsL2Jpbi9weXRob24KYWNfY3Zf cGF0aF9TRUQ9L3Vzci9sb2NhbC9iaW4vZ3NlZAphY19jdl9wYXRoX1ZBTEdSSU5EX1BBVEg9bm8K YWNfY3ZfcGF0aF9YR0VUVEVYVD0vdXNyL2xvY2FsL2Jpbi94Z2V0dGV4dAphY19jdl9wYXRoX2Fj X3B0X1BLR19DT05GSUc9L3Vzci9sb2NhbC9iaW4vcGtnLWNvbmZpZwphY19jdl9wcm9nX0FXSz1u YXdrCmFjX2N2X3Byb2dfQ1BQPSdjYyAtRScKYWNfY3ZfcHJvZ19DWFhDUFA9J2MrKyAtRScKYWNf Y3ZfcHJvZ19IQVZFX0NYWD15ZXMKYWNfY3ZfcHJvZ19hY19jdF9BUj1hcgphY19jdl9wcm9nX2Fj X2N0X0NDPWNjCmFjX2N2X3Byb2dfYWNfY3RfT0JKQz1nY2MKYWNfY3ZfcHJvZ19hY19jdF9PQkpE VU1QPW9iamR1bXAKYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9cmFubGliCmFjX2N2X3Byb2dfYWNf Y3RfU1RSSVA9c3RyaXAKYWNfY3ZfcHJvZ19jY19jODk9JycKYWNfY3ZfcHJvZ19jY19jY19jX289 eWVzCmFjX2N2X3Byb2dfY2NfZz15ZXMKYWNfY3ZfcHJvZ19jeHhfZz15ZXMKYWNfY3ZfcHJvZ19t YWtlX2dtYWtlX3NldD15ZXMKYWNfY3Zfc3RkaW50X21lc3NhZ2U9J3VzaW5nIGdudSBjb21waWxl ciBjYyAoR0NDKSA0LjIuMSAyMDA3MDcxOSAgW0ZyZWVCU0RdJwphY19jdl9zdGRpbnRfcmVzdWx0 PScoYXNzdW1pbmcgQzk5IGNvbXBhdGlibGUgc3lzdGVtKScKYWNfY3ZfdHlwZV9zdHJ1Y3RfaXBf bXJlcW49eWVzCmFjbF9jdl9oYXJkY29kZV9kaXJlY3Q9bm8KYWNsX2N2X2hhcmRjb2RlX2xpYmRp cl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKYWNsX2N2X2hhcmRjb2RlX2xp YmRpcl9zZXBhcmF0b3I9JycKYWNsX2N2X2hhcmRjb2RlX21pbnVzX0w9bm8KYWNsX2N2X2xpYmV4 dD1hCmFjbF9jdl9saWJuYW1lX3NwZWM9J2xpYiRuYW1lJwphY2xfY3ZfbGlicmFyeV9uYW1lc19z cGVjPSckbGlibmFtZSRzaHJleHQnCmFjbF9jdl9wYXRoX0xEPS91c3IvYmluL2xkCmFjbF9jdl9w cm9nX2dudV9sZD15ZXMKYWNsX2N2X3JwYXRoPWRvbmUKYWNsX2N2X3NobGliZXh0PXNvCmFjbF9j dl93bD0tV2wsCmFtX2N2X0NDQVNfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9Z2NjMwphbV9j dl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1nY2MzCmFtX2N2X0NYWF9kZXBlbmRlbmNp ZXNfY29tcGlsZXJfdHlwZT1nY2MzCmFtX2N2X09CSkNfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5 cGU9Z2NjMwphbV9jdl9mdW5jX2ljb252PXllcwphbV9jdl9mdW5jX2ljb252X3dvcmtzPXllcwph bV9jdl9saWJfaWNvbnY9eWVzCmd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD1ubwpndF9j dl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9bm8KZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0 MV9saWJjPW5vCmd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliaW50bD15ZXMKbHRfY3ZfZGVwbGli c19jaGVja19tZXRob2Q9cGFzc19hbGwKbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRNQUdJQ19DTUQn Cmx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPScnCmx0X2N2X2xkX3JlbG9hZF9mbGFnPS1yCmx0 X2N2X25tX2ludGVyZmFjZT0nQlNEIG5tJwpsdF9jdl9vYmpkaXI9LmxpYnMKbHRfY3ZfcGF0aF9M RD0vdXNyL2Jpbi9sZApsdF9jdl9wYXRoX0xEQ1hYPS91c3IvYmluL2xkCmx0X2N2X3BhdGhfTk09 Jy91c3IvYmluL25tIC1CJwpsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz15ZXMKbHRfY3ZfcHJvZ19j b21waWxlcl9jX29fQ1hYPXllcwpsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcz15ZXMKbHRf Y3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3NfQ1hYPXllcwpsdF9jdl9wcm9nX2NvbXBpbGVyX3J0 dGlfZXhjZXB0aW9ucz1ubwpsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz15ZXMKbHRf Y3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3NfQ1hYPXllcwpsdF9jdl9wcm9nX2dudV9sZD15 ZXMKbHRfY3ZfcHJvZ19nbnVfbGRjeHg9eWVzCmx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9 J3NlZCAtbiAtZSAnXCcncy9eLipbCSBdXChbQUJDREdJUlNUV11bQUJDREdJUlNUV10qXClbCSBd WwkgXSpcKFtfQS1aYS16XVtfQS1aYS16MC05XSpcKSQvXDEgXDIgXDIvcCdcJycnCmx0X2N2X3N5 c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdzZWQgLW4gLWUgJ1wnJ3MvXjogXChb XiBdKlwpICQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCdcJycgLWUgJ1wnJ3MvXltBQkNER0lS U1RXXSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7IlwyIiwgKHZvaWQgKikgXCZcMn0sL3AnXCcn JwpsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdz ZWQgLW4gLWUgJ1wnJ3MvXjogXChbXiBdKlwpICQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCdc JycgLWUgJ1wnJ3MvXltBQkNER0lSU1RXXSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7Ilwy IiwgKHZvaWQgKikgXCZcMn0sL3AnXCcnIC1lICdcJydzL15bQUJDREdJUlNUV10qIFwoW14gXSpc KSBcKFteIF0qXCkkLyAgeyJsaWJcMiIsICh2b2lkICopIFwmXDJ9LC9wJ1wnJycKbHRfY3Zfc3lz X2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J3NlZCAtbiAtZSAnXCcncy9eVCAuKiBcKC4qXCkkL2V4 dGVybiBpbnQgXDEoKTsvcCdcJycgLWUgJ1wnJ3MvXltBQkNER0lSU1RXXSogLiogXCguKlwpJC9l eHRlcm4gY2hhciBcMTsvcCdcJycnCmx0X2N2X3N5c19tYXhfY21kX2xlbj0yNjIxNDQKcGtnX2N2 X0dMSUJfQ0ZMQUdTPSctRF9SRUVOVFJBTlQgLUkvdXNyL2xvY2FsL2luY2x1ZGUvZ2xpYi0yLjAg LUkvdXNyL2xvY2FsL2xpYi9nbGliLTIuMC9pbmNsdWRlICAnCnBrZ19jdl9HTElCX0xJQlM9Jy1w dGhyZWFkIC1ML3Vzci9sb2NhbC9saWIgLWxnb2JqZWN0LTIuMCAtbGd0aHJlYWQtMi4wIC1sZ21v ZHVsZS0yLjAgLWxnbGliLTIuMCAgJwpwa2dfY3ZfR1NUX0JBU0VfQ0ZMQUdTPSctRF9SRUVOVFJB TlQgLUkvdXNyL2xvY2FsL2luY2x1ZGUvZ3N0cmVhbWVyLTAuMTAgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvZ2xpYi0yLjAgLUkvdXNyL2xvY2FsL2xpYi9nbGliLTIuMC9pbmNsdWRlIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL2xpYnhtbDIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICcKcGtnX2N2X0dTVF9CQVNF X0xJQlM9Jy1wdGhyZWFkIC1ML3Vzci9sb2NhbC9saWIgLWxnc3RiYXNlLTAuMTAgLWxnc3RyZWFt ZXItMC4xMCAtbGdvYmplY3QtMi4wIC1sZ21vZHVsZS0yLjAgLWxndGhyZWFkLTIuMCAtbHhtbDIg LWxnbGliLTIuMCAgJwpwa2dfY3ZfR1NUX0NGTEFHUz0nLURfUkVFTlRSQU5UIC1JL3Vzci9sb2Nh bC9pbmNsdWRlL2dzdHJlYW1lci0wLjEwIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2dsaWItMi4wIC1J L3Vzci9sb2NhbC9saWIvZ2xpYi0yLjAvaW5jbHVkZSAtSS91c3IvbG9jYWwvaW5jbHVkZS9saWJ4 bWwyIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAnCnBrZ19jdl9HU1RfQ0hFQ0tfQ0ZMQUdTPSctRF9S RUVOVFJBTlQgLUkvdXNyL2xvY2FsL2luY2x1ZGUvZ3N0cmVhbWVyLTAuMTAgLUkvdXNyL2xvY2Fs L2luY2x1ZGUvZ2xpYi0yLjAgLUkvdXNyL2xvY2FsL2xpYi9nbGliLTIuMC9pbmNsdWRlIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL2xpYnhtbDIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICcKcGtnX2N2X0dT VF9DSEVDS19MSUJTPSctcHRocmVhZCAtTC91c3IvbG9jYWwvbGliIC1sZ3N0Y2hlY2stMC4xMCAt bG0gLWxnc3RyZWFtZXItMC4xMCAtbGdvYmplY3QtMi4wIC1sZ21vZHVsZS0yLjAgLWxndGhyZWFk LTIuMCAtbHhtbDIgLWxnbGliLTIuMCAgJwpwa2dfY3ZfR1NUX0NPTlRST0xMRVJfQ0ZMQUdTPSct RF9SRUVOVFJBTlQgLUkvdXNyL2xvY2FsL2luY2x1ZGUvZ3N0cmVhbWVyLTAuMTAgLUkvdXNyL2xv Y2FsL2luY2x1ZGUvZ2xpYi0yLjAgLUkvdXNyL2xvY2FsL2xpYi9nbGliLTIuMC9pbmNsdWRlIC1J L3Vzci9sb2NhbC9pbmNsdWRlL2xpYnhtbDIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICcKcGtnX2N2 X0dTVF9DT05UUk9MTEVSX0xJQlM9Jy1wdGhyZWFkIC1ML3Vzci9sb2NhbC9saWIgLWxnc3Rjb250 cm9sbGVyLTAuMTAgLWxnc3RyZWFtZXItMC4xMCAtbGdvYmplY3QtMi4wIC1sZ21vZHVsZS0yLjAg LWxndGhyZWFkLTIuMCAtbHhtbDIgLWxnbGliLTIuMCAgJwpwa2dfY3ZfR1NUX0dEUF9DRkxBR1M9 Jy1EX1JFRU5UUkFOVCAtSS91c3IvbG9jYWwvaW5jbHVkZS9nc3RyZWFtZXItMC4xMCAtSS91c3Iv bG9jYWwvaW5jbHVkZS9nbGliLTIuMCAtSS91c3IvbG9jYWwvbGliL2dsaWItMi4wL2luY2x1ZGUg LUkvdXNyL2xvY2FsL2luY2x1ZGUvbGlieG1sMiAtSS91c3IvbG9jYWwvaW5jbHVkZSAgJwpwa2df Y3ZfR1NUX0dEUF9MSUJTPSctcHRocmVhZCAtTC91c3IvbG9jYWwvbGliIC1sZ3N0ZGF0YXByb3Rv Y29sLTAuMTAgLWxnc3RyZWFtZXItMC4xMCAtbGdvYmplY3QtMi4wIC1sZ21vZHVsZS0yLjAgLWxn dGhyZWFkLTIuMCAtbHhtbDIgLWxnbGliLTIuMCAgJwpwa2dfY3ZfR1NUX0xJQlM9Jy1wdGhyZWFk IC1ML3Vzci9sb2NhbC9saWIgLWxnc3RyZWFtZXItMC4xMCAtbGdvYmplY3QtMi4wIC1sZ21vZHVs ZS0yLjAgLWxndGhyZWFkLTIuMCAtbHhtbDIgLWxnbGliLTIuMCAgJwpwa2dfY3ZfT1JDX0NGTEFH Uz0nLUkvdXNyL2xvY2FsL2luY2x1ZGUvb3JjLTAuNCAgJwpwa2dfY3ZfT1JDX0xJQlM9Jy1ML3Vz ci9sb2NhbC9saWIgLWxvcmMtMC40ICAnCgojIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBPdXRw dXQgdmFyaWFibGVzLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwoKQUFMSUJfQ0ZMQUdTPScn CkFBTElCX0NPTkZJRz0nJwpBQUxJQl9MSUJTPScnCkFDTE9DQUw9JyR7U0hFTEx9IC91c3IvcG9y dHMvZ3JhcGhpY3MvZ3N0cmVhbWVyLXBsdWdpbnMtbGlicG5nL3dvcmsvZ3N0LXBsdWdpbnMtZ29v ZC0wLjEwLjI0L21pc3NpbmcgLS1ydW4gYWNsb2NhbC0xLjExJwpBQ0xPQ0FMX0FNRkxBR1M9Jy1J IG00IC1JIGNvbW1vbi9tNCcKQU1ERVBCQUNLU0xBU0g9J1wnCkFNREVQX0ZBTFNFPScjJwpBTURF UF9UUlVFPScnCkFNVEFSPScke1NIRUxMfSAvdXNyL3BvcnRzL2dyYXBoaWNzL2dzdHJlYW1lci1w bHVnaW5zLWxpYnBuZy93b3JrL2dzdC1wbHVnaW5zLWdvb2QtMC4xMC4yNC9taXNzaW5nIC0tcnVu IHRhcicKQU1fQkFDS1NMQVNIPSdcJwpBTV9ERUZBVUxUX1ZFUkJPU0lUWT0nMCcKQU5OT0RFWF9D RkxBR1M9JycKQU5OT0RFWF9MSUJTPScnCkFSPSdhcicKQVM9J2FzJwpBVVRPQ09ORj0nJHtTSEVM TH0gL3Vzci9wb3J0cy9ncmFwaGljcy9nc3RyZWFtZXItcGx1Z2lucy1saWJwbmcvd29yay9nc3Qt cGx1Z2lucy1nb29kLTAuMTAuMjQvbWlzc2luZyAtLXJ1biBhdXRvY29uZicKQVVUT0hFQURFUj0n JHtTSEVMTH0gL3Vzci9wb3J0cy9ncmFwaGljcy9nc3RyZWFtZXItcGx1Z2lucy1saWJwbmcvd29y ay9nc3QtcGx1Z2lucy1nb29kLTAuMTAuMjQvbWlzc2luZyAtLXJ1biBhdXRvaGVhZGVyJwpBVVRP TUFLRT0nJHtTSEVMTH0gL3Vzci9wb3J0cy9ncmFwaGljcy9nc3RyZWFtZXItcGx1Z2lucy1saWJw bmcvd29yay9nc3QtcGx1Z2lucy1nb29kLTAuMTAuMjQvbWlzc2luZyAtLXJ1biBhdXRvbWFrZS0x LjExJwpBV0s9J25hd2snCkJVSUxEX0VYQU1QTEVTX0ZBTFNFPScnCkJVSUxEX0VYQU1QTEVTX1RS VUU9JyMnCkJVSUxEX0VYUEVSSU1FTlRBTF9GQUxTRT0nJwpCVUlMRF9FWFBFUklNRU5UQUxfVFJV RT0nIycKQlVJTERfRVhURVJOQUxfRkFMU0U9JyMnCkJVSUxEX0VYVEVSTkFMX1RSVUU9JycKQloy X0xJQlM9JycKQ0FJUk9fQ0ZMQUdTPScnCkNBSVJPX0xJQlM9JycKQ0M9J2NjJwpDQ0FTPSdjYycK Q0NBU0RFUE1PREU9J2RlcG1vZGU9Z2NjMycKQ0NBU0ZMQUdTPSctTzIgLWZuby1zdHJpY3QtYWxp YXNpbmcgLXBpcGUgLU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlJwpDQ0RFUE1P REU9J2RlcG1vZGU9Z2NjMycKQ0ZMQUdTPSctTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUg LU8yIC1Xbm8tZm9ybWF0IC1JL3Vzci9sb2NhbC9pbmNsdWRlJwpDUFA9J2NjIC1FJwpDUFBGTEFH Uz0nIC1JL3Vzci9sb2NhbC9pbmNsdWRlICcKQ1hYPSdjKysnCkNYWENQUD0nYysrIC1FJwpDWFhE RVBNT0RFPSdkZXBtb2RlPWdjYzMnCkNYWEZMQUdTPSctTzIgLWZuby1zdHJpY3QtYWxpYXNpbmcg LXBpcGUgLU8yIC1Xbm8tZm9ybWF0JwpDWUdQQVRIX1c9J2VjaG8nCkRFRkFVTFRfQVVESU9TSU5L PScnCkRFRkFVTFRfQVVESU9TUkM9JycKREVGQVVMVF9WSURFT1NJTks9JycKREVGQVVMVF9WSURF T1NSQz0nJwpERUZBVUxUX1ZJU1VBTElaRVI9JycKREVGUz0nJwpERVBESVI9Jy5kZXBzJwpERVBS RUNBVEVEX0NGTEFHUz0nJwpESVJFQ1RTT1VORF9DRkxBR1M9JycKRElSRUNUU09VTkRfTERGTEFH Uz0nJwpESVJFQ1RTT1VORF9MSUJTPScnCkRMTFRPT0w9J2RsbHRvb2wnCkRTWU1VVElMPScnCkRV TVBCSU49JycKRFYxMzk0X0NGTEFHUz0nJwpEVjEzOTRfTElCUz0nJwpFQ0hPX0M9JycKRUNIT19O PSctbicKRUNIT19UPScnCkVHUkVQPScvdXNyL2Jpbi9ncmVwIC1FJwpFTkFCTEVfR1RLX0RPQ19G QUxTRT0nJwpFTkFCTEVfR1RLX0RPQ19UUlVFPScjJwpFTkFCTEVfUExVR0lOX0RPQ1NfRkFMU0U9 JycKRU5BQkxFX1BMVUdJTl9ET0NTX1RSVUU9JyMnCkVSUk9SX0NGTEFHUz0nJwpFUlJPUl9DWFhG TEFHUz0nJwpFU0RfQ0ZMQUdTPScnCkVTRF9DT05GSUc9JycKRVNEX0xJQlM9JycKRVhFRVhUPScn CkZGTEFHUz0nJwpGR1JFUD0nL3Vzci9iaW4vZ3JlcCAtRicKRkxBQ19DRkxBR1M9JycKRkxBQ19M SUJTPScnCkdDT05GVE9PTD0nJwpHQ09ORl9DRkxBR1M9JycKR0NPTkZfTElCUz0nJwpHQ09ORl9T Q0hFTUFTX0lOU1RBTExfRkFMU0U9JycKR0NPTkZfU0NIRU1BU19JTlNUQUxMX1RSVUU9JyMnCkdD T05GX1NDSEVNQV9DT05GSUdfU09VUkNFPSd4bWw6bWVyZ2VkOi91c3IvbG9jYWwvZXRjL2djb25m L2djb25mLnhtbC5kZWZhdWx0cycKR0NPTkZfU0NIRU1BX0ZJTEVfRElSPSckKHN5c2NvbmZkaXIp L2djb25mL3NjaGVtYXMnCkdDT1Y9JycKR0NPVl9DRkxBR1M9JycKR0NPVl9MSUJTPScnCkdES19Q SVhCVUYzX0NGTEFHUz0nJwpHREtfUElYQlVGM19MSUJTPScnCkdES19QSVhCVUZfQ0ZMQUdTPScn CkdES19QSVhCVUZfTElCUz0nJwpHRVRURVhUX01BQ1JPX1ZFUlNJT049JzAuMTcnCkdFVFRFWFRf UEFDS0FHRT0nZ3N0LXBsdWdpbnMtZ29vZC0wLjEwJwpHTElCX0NGTEFHUz0nLURfUkVFTlRSQU5U IC1JL3Vzci9sb2NhbC9pbmNsdWRlL2dsaWItMi4wIC1JL3Vzci9sb2NhbC9saWIvZ2xpYi0yLjAv aW5jbHVkZScKR0xJQl9MSUJTPSctcHRocmVhZCAtTC91c3IvbG9jYWwvbGliIC1sZ29iamVjdC0y LjAgLWxndGhyZWFkLTIuMCAtbGdtb2R1bGUtMi4wIC1sZ2xpYi0yLjAgICcKR0xJQl9QUkVGSVg9 JycKR0xJQl9SRVE9JzIuMTgnCkdNU0dGTVQ9Jy91c3IvbG9jYWwvYmluL21zZ2ZtdCcKR01TR0ZN VF8wMTU9Jy91c3IvbG9jYWwvYmluL21zZ2ZtdCcKR1JFUD0nL3Vzci9iaW4vZ3JlcCcKR1NUUEJf UExVR0lOU19ESVI9JycKR1NUUEJfUFJFRklYPScnCkdTVF9BTExfTERGTEFHUz0nJwpHU1RfQkFT RV9DRkxBR1M9Jy1EX1JFRU5UUkFOVCAtSS91c3IvbG9jYWwvaW5jbHVkZS9nc3RyZWFtZXItMC4x MCAtSS91c3IvbG9jYWwvaW5jbHVkZS9nbGliLTIuMCAtSS91c3IvbG9jYWwvbGliL2dsaWItMi4w L2luY2x1ZGUgLUkvdXNyL2xvY2FsL2luY2x1ZGUvbGlieG1sMiAtSS91c3IvbG9jYWwvaW5jbHVk ZSAgJwpHU1RfQkFTRV9MSUJTPSctcHRocmVhZCAtTC91c3IvbG9jYWwvbGliIC1sZ3N0YmFzZS0w LjEwIC1sZ3N0cmVhbWVyLTAuMTAgLWxnb2JqZWN0LTIuMCAtbGdtb2R1bGUtMi4wIC1sZ3RocmVh ZC0yLjAgLWx4bWwyIC1sZ2xpYi0yLjAgICcKR1NUX0NGTEFHUz0nLURfUkVFTlRSQU5UIC1JL3Vz ci9sb2NhbC9pbmNsdWRlL2dzdHJlYW1lci0wLjEwIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2dsaWIt Mi4wIC1JL3Vzci9sb2NhbC9saWIvZ2xpYi0yLjAvaW5jbHVkZSAtSS91c3IvbG9jYWwvaW5jbHVk ZS9saWJ4bWwyIC1JL3Vzci9sb2NhbC9pbmNsdWRlICAnCkdTVF9DSEVDS19DRkxBR1M9Jy1EX1JF RU5UUkFOVCAtSS91c3IvbG9jYWwvaW5jbHVkZS9nc3RyZWFtZXItMC4xMCAtSS91c3IvbG9jYWwv aW5jbHVkZS9nbGliLTIuMCAtSS91c3IvbG9jYWwvbGliL2dsaWItMi4wL2luY2x1ZGUgLUkvdXNy L2xvY2FsL2luY2x1ZGUvbGlieG1sMiAtSS91c3IvbG9jYWwvaW5jbHVkZSAgJwpHU1RfQ0hFQ0tf TElCUz0nLXB0aHJlYWQgLUwvdXNyL2xvY2FsL2xpYiAtbGdzdGNoZWNrLTAuMTAgLWxtIC1sZ3N0 cmVhbWVyLTAuMTAgLWxnb2JqZWN0LTIuMCAtbGdtb2R1bGUtMi4wIC1sZ3RocmVhZC0yLjAgLWx4 bWwyIC1sZ2xpYi0yLjAgICcKR1NUX0NPTlRST0xMRVJfQ0ZMQUdTPSctRF9SRUVOVFJBTlQgLUkv dXNyL2xvY2FsL2luY2x1ZGUvZ3N0cmVhbWVyLTAuMTAgLUkvdXNyL2xvY2FsL2luY2x1ZGUvZ2xp Yi0yLjAgLUkvdXNyL2xvY2FsL2xpYi9nbGliLTIuMC9pbmNsdWRlIC1JL3Vzci9sb2NhbC9pbmNs dWRlL2xpYnhtbDIgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICcKR1NUX0NPTlRST0xMRVJfTElCUz0n LXB0aHJlYWQgLUwvdXNyL2xvY2FsL2xpYiAtbGdzdGNvbnRyb2xsZXItMC4xMCAtbGdzdHJlYW1l ci0wLjEwIC1sZ29iamVjdC0yLjAgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIC1seG1sMiAt bGdsaWItMi4wICAnCkdTVF9DWFhGTEFHUz0nJwpHU1RfR0NPVl9FTkFCTEVEX0ZBTFNFPScnCkdT VF9HQ09WX0VOQUJMRURfVFJVRT0nIycKR1NUX0dEUF9DRkxBR1M9Jy1EX1JFRU5UUkFOVCAtSS91 c3IvbG9jYWwvaW5jbHVkZS9nc3RyZWFtZXItMC4xMCAtSS91c3IvbG9jYWwvaW5jbHVkZS9nbGli LTIuMCAtSS91c3IvbG9jYWwvbGliL2dsaWItMi4wL2luY2x1ZGUgLUkvdXNyL2xvY2FsL2luY2x1 ZGUvbGlieG1sMiAtSS91c3IvbG9jYWwvaW5jbHVkZSAgJwpHU1RfR0RQX0xJQlM9Jy1wdGhyZWFk IC1ML3Vzci9sb2NhbC9saWIgLWxnc3RkYXRhcHJvdG9jb2wtMC4xMCAtbGdzdHJlYW1lci0wLjEw IC1sZ29iamVjdC0yLjAgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIC1seG1sMiAtbGdsaWIt Mi4wICAnCkdTVF9IQVZFX01NQVBfRkFMU0U9JyMnCkdTVF9IQVZFX01NQVBfVFJVRT0nJwpHU1Rf TEVWRUxfREVGQVVMVD0nJwpHU1RfTElCUz0nLXB0aHJlYWQgLUwvdXNyL2xvY2FsL2xpYiAtbGdz dHJlYW1lci0wLjEwIC1sZ29iamVjdC0yLjAgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIC1s eG1sMiAtbGdsaWItMi4wICAnCkdTVF9MSUNFTlNFPScnCkdTVF9MVF9MREZMQUdTPScnCkdTVF9N QUpPUk1JTk9SPScwLjEwJwpHU1RfT1BUSU9OX0NGTEFHUz0nJwpHU1RfT1BUSU9OX0NYWEZMQUdT PScnCkdTVF9QQUNLQUdFX05BTUU9J0dTdHJlYW1lciBHb29kIFBsdWctaW5zIHNvdXJjZSByZWxl YXNlJwpHU1RfUEFDS0FHRV9PUklHSU49J1Vua25vd24gcGFja2FnZSBvcmlnaW4nCkdTVF9QTFVH SU5TX0FMTD0nJwpHU1RfUExVR0lOU19CQVNFX0NGTEFHUz0nJwpHU1RfUExVR0lOU19CQVNFX0xJ QlM9JycKR1NUX1BMVUdJTlNfRElSPScvdXNyL2xvY2FsL2xpYi9nc3RyZWFtZXItMC4xMCcKR1NU X1BMVUdJTlNfU0VMRUNURUQ9JycKR1NUX1BMVUdJTl9MREZMQUdTPScnCkdTVF9QUkVGSVg9JycK R1NUX1RPT0xTX0RJUj0nL3Vzci9sb2NhbC9iaW4nCkdUS0RPQ19DSEVDSz0nJwpHVEtfQ0ZMQUdT PScnCkdUS19ET0NfVVNFX0xJQlRPT0xfRkFMU0U9JyMnCkdUS19ET0NfVVNFX0xJQlRPT0xfVFJV RT0nJwpHVEtfTElCUz0nJwpHVURFVl9DRkxBR1M9JycKR1VERVZfTElCUz0nJwpIQUxfQ0ZMQUdT PScnCkhBTF9MSUJTPScnCkhBVkVfQVZDMTM5ND0nJwpIQVZFX0JaMj0nJwpIQVZFX0NQVV9BTFBI QV9GQUxTRT0nJwpIQVZFX0NQVV9BTFBIQV9UUlVFPScjJwpIQVZFX0NQVV9BUk1fRkFMU0U9JycK SEFWRV9DUFVfQVJNX1RSVUU9JyMnCkhBVkVfQ1BVX0NSSVNWMzJfRkFMU0U9JycKSEFWRV9DUFVf Q1JJU1YzMl9UUlVFPScjJwpIQVZFX0NQVV9DUklTX0ZBTFNFPScnCkhBVkVfQ1BVX0NSSVNfVFJV RT0nIycKSEFWRV9DUFVfSFBQQV9GQUxTRT0nJwpIQVZFX0NQVV9IUFBBX1RSVUU9JyMnCkhBVkVf Q1BVX0kzODZfRkFMU0U9JyMnCkhBVkVfQ1BVX0kzODZfVFJVRT0nJwpIQVZFX0NQVV9JQTY0X0ZB TFNFPScnCkhBVkVfQ1BVX0lBNjRfVFJVRT0nIycKSEFWRV9DUFVfTTY4S19GQUxTRT0nJwpIQVZF X0NQVV9NNjhLX1RSVUU9JyMnCkhBVkVfQ1BVX01JUFNfRkFMU0U9JycKSEFWRV9DUFVfTUlQU19U UlVFPScjJwpIQVZFX0NQVV9QUEM2NF9GQUxTRT0nJwpIQVZFX0NQVV9QUEM2NF9UUlVFPScjJwpI QVZFX0NQVV9QUENfRkFMU0U9JycKSEFWRV9DUFVfUFBDX1RSVUU9JyMnCkhBVkVfQ1BVX1MzOTBf RkFMU0U9JycKSEFWRV9DUFVfUzM5MF9UUlVFPScjJwpIQVZFX0NQVV9TUEFSQ19GQUxTRT0nJwpI QVZFX0NQVV9TUEFSQ19UUlVFPScjJwpIQVZFX0NQVV9YODZfNjRfRkFMU0U9JycKSEFWRV9DUFVf WDg2XzY0X1RSVUU9JyMnCkhBVkVfQ1hYPSd5ZXMnCkhBVkVfRElSRUNUU09VTkQ9JycKSEFWRV9H Q0NfQVNNX0ZBTFNFPScjJwpIQVZFX0dDQ19BU01fVFJVRT0nJwpIQVZFX0dDT05GVE9PTD0nJwpI QVZFX0dTVF9DSEVDS19GQUxTRT0nJwpIQVZFX0dTVF9DSEVDS19UUlVFPScnCkhBVkVfR1RLX0ZB TFNFPScnCkhBVkVfR1RLX1RSVUU9JycKSEFWRV9PUkNfRkFMU0U9JyMnCkhBVkVfT1JDX1RSVUU9 JycKSEFWRV9ST00xMzk0PScnCkhBVkVfU1BFRVg9JycKSEFWRV9WQUxHUklORF9GQUxTRT0nJwpI QVZFX1ZBTEdSSU5EX1RSVUU9JyMnCkhBVkVfV0lOU09DSzJfSF9GQUxTRT0nJwpIQVZFX1dJTlNP Q0syX0hfVFJVRT0nIycKSEFWRV9YPScnCkhBVkVfWFNITT0nJwpIQVZFX1pMSUI9JycKSFRNTF9E SVI9JyR7ZGF0YWRpcn0vZ3RrLWRvYy9odG1sJwpJTlNUQUxMX0RBVEE9J2luc3RhbGwgIC1vIHJv b3QgLWcgd2hlZWwgLW0gNDQ0JwpJTlNUQUxMX1BST0dSQU09J2luc3RhbGwgIC1zIC1vIHJvb3Qg LWcgd2hlZWwgLW0gNTU1JwpJTlNUQUxMX1NDUklQVD0naW5zdGFsbCAgLW8gcm9vdCAtZyB3aGVl bCAtbSA1NTUnCklOU1RBTExfU1RSSVBfUFJPR1JBTT0nJChpbnN0YWxsX3NoKSAtYyAtcycKSU5U TExJQlM9Jy91c3IvbG9jYWwvbGliL2xpYmludGwuc28gL3Vzci9sb2NhbC9saWIvbGliaWNvbnYu c28gLVdsLC1ycGF0aCAtV2wsL3Vzci9sb2NhbC9saWInCklOVExfTUFDT1NYX0xJQlM9JycKSlBF R19MSUJTPScnCkxEPScvdXNyL2Jpbi9sZCcKTERGTEFHUz0nIC1ML3Vzci9sb2NhbC9saWIgIC1w dGhyZWFkJwpMSUJDQUNBX0NGTEFHUz0nJwpMSUJDQUNBX0NPTkZJRz0nJwpMSUJDQUNBX0xJQlM9 JycKTElCRFZfQ0ZMQUdTPScnCkxJQkRWX0xJQlM9JycKTElCSUNPTlY9Jy91c3IvbG9jYWwvbGli L2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwvbGliJwpMSUJJRUM2MTg4M19D RkxBR1M9JycKTElCSUVDNjE4ODNfTElCUz0nJwpMSUJJTlRMPScvdXNyL2xvY2FsL2xpYi9saWJp bnRsLnNvIC91c3IvbG9jYWwvbGliL2xpYmljb252LnNvIC1XbCwtcnBhdGggLVdsLC91c3IvbG9j YWwvbGliJwpMSUJNPSctbG0nCkxJQk9CSlM9JycKTElCUE5HX0NGTEFHUz0nJwpMSUJQTkdfTElC Uz0nJwpMSUJTPScnCkxJQlRPT0w9JyQoU0hFTEwpIC91c3IvcG9ydHMvZ3JhcGhpY3MvZ3N0cmVh bWVyLXBsdWdpbnMtbGlicG5nL3dvcmsvZ25vbWUtbGlidG9vbCcKTElCVjRMMl9DRkxBR1M9JycK TElCVjRMMl9MSUJTPScnCkxJUE89JycKTE5fUz0nbG4gLXMnCkxPQ0FMRURJUj0nL3Vzci9sb2Nh bC9zaGFyZS9sb2NhbGUnCkxUTElCSUNPTlY9Jy1ML3Vzci9sb2NhbC9saWIgLWxpY29udiAtUi91 c3IvbG9jYWwvbGliJwpMVExJQklOVEw9Jy1ML3Vzci9sb2NhbC9saWIgLWxpbnRsIC1ML3Vzci9s b2NhbC9saWIgLWxpY29udiAtUi91c3IvbG9jYWwvbGliJwpMVExJQk9CSlM9JycKTUFJTlQ9JyMn Ck1BSU5UQUlORVJfTU9ERV9GQUxTRT0nJwpNQUlOVEFJTkVSX01PREVfVFJVRT0nIycKTUFLRUlO Rk89JyR7U0hFTEx9IC91c3IvcG9ydHMvZ3JhcGhpY3MvZ3N0cmVhbWVyLXBsdWdpbnMtbGlicG5n L3dvcmsvZ3N0LXBsdWdpbnMtZ29vZC0wLjEwLjI0L21pc3NpbmcgLS1ydW4gbWFrZWluZm8nCk1L RElSX1A9Jy4vaW5zdGFsbC1zaCAtYyAtZCcKTVNHRk1UPScvdXNyL2xvY2FsL2Jpbi9tc2dmbXQn Ck1TR0ZNVF8wMTU9Jy91c3IvbG9jYWwvYmluL21zZ2ZtdCcKTVNHTUVSR0U9Jy91c3IvbG9jYWwv YmluL21zZ21lcmdlJwpOTT0nL3Vzci9iaW4vbm0gLUInCk5NRURJVD0nJwpPQkpDPSdnY2MnCk9C SkNERVBNT0RFPSdkZXBtb2RlPWdjYzMnCk9CSkNfTERGTEFHUz0nLWxvYmpjJwpPQkpEVU1QPSdv YmpkdW1wJwpPQkpFWFQ9J28nCk9SQ0M9Jy91c3IvbG9jYWwvYmluL29yY2MnCk9SQ19DRkxBR1M9 Jy1JL3Vzci9sb2NhbC9pbmNsdWRlL29yYy0wLjQgICcKT1JDX0xJQlM9Jy1ML3Vzci9sb2NhbC9s aWIgLWxvcmMtMC40ICAnCk9UT09MNjQ9JycKT1RPT0w9JycKUEFDS0FHRT0nZ3N0LXBsdWdpbnMt Z29vZCcKUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJf YnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lcicKUEFDS0FHRV9OQU1FPSdHU3RyZWFtZXIgR29vZCBQ bHVnLWlucycKUEFDS0FHRV9TVFJJTkc9J0dTdHJlYW1lciBHb29kIFBsdWctaW5zIDAuMTAuMjQn ClBBQ0tBR0VfVEFSTkFNRT0nZ3N0LXBsdWdpbnMtZ29vZCcKUEFDS0FHRV9VUkw9JycKUEFDS0FH RV9WRVJTSU9OPScwLjEwLjI0JwpQQUNLQUdFX1ZFUlNJT05fTUFKT1I9JzAnClBBQ0tBR0VfVkVS U0lPTl9NSUNSTz0nMjQnClBBQ0tBR0VfVkVSU0lPTl9NSU5PUj0nMTAnClBBQ0tBR0VfVkVSU0lP Tl9OQU5PPScwJwpQQUNLQUdFX1ZFUlNJT05fUkVMRUFTRT0nMScKUEFUSF9TRVBBUkFUT1I9Jzon ClBLR19DT05GSUc9Jy91c3IvbG9jYWwvYmluL3BrZy1jb25maWcnClBMVUdJTkRJUj0nJwpQT1NV Qj0ncG8nClBST0ZJTEVfQ0ZMQUdTPScnClBVTFNFXzBfOV8xMV9DRkxBR1M9JycKUFVMU0VfMF85 XzExX0xJQlM9JycKUFVMU0VfMF85XzEyX0NGTEFHUz0nJwpQVUxTRV8wXzlfMTJfTElCUz0nJwpQ VUxTRV8wXzlfMTNfQ0ZMQUdTPScnClBVTFNFXzBfOV8xM19MSUJTPScnClBVTFNFXzBfOV8xNV9D RkxBR1M9JycKUFVMU0VfMF85XzE1X0xJQlM9JycKUFVMU0VfMF85XzE2X0NGTEFHUz0nJwpQVUxT RV8wXzlfMTZfTElCUz0nJwpQVUxTRV8wXzlfMjBfQ0ZMQUdTPScnClBVTFNFXzBfOV8yMF9MSUJT PScnClBVTFNFX0NGTEFHUz0nJwpQVUxTRV9MSUJTPScnClBZVEhPTj0nL3Vzci9sb2NhbC9iaW4v cHl0aG9uJwpQWVRIT05fRVhFQ19QUkVGSVg9JyR7ZXhlY19wcmVmaXh9JwpQWVRIT05fUExBVEZP Uk09J2ZyZWVic2Q3JwpQWVRIT05fUFJFRklYPScke3ByZWZpeH0nClBZVEhPTl9WRVJTSU9OPScy LjUnClJBTkxJQj0ncmFubGliJwpSQVcxMzk0X0NGTEFHUz0nJwpSQVcxMzk0X0xJQlM9JycKU0VE PScvdXNyL2xvY2FsL2Jpbi9nc2VkJwpTRVRfTUFLRT0nJwpTSEVMTD0nL2Jpbi9zaCcKU0hPVVQy X0NGTEFHUz0nJwpTSE9VVDJfTElCUz0nJwpTT1VQX0NGTEFHUz0nJwpTT1VQX0xJQlM9JycKU1BF RVhfQ0ZMQUdTPScnClNQRUVYX0xJQlM9JycKU1RSSVA9J3N0cmlwJwpUQUdMSUJfQ0ZMQUdTPScn ClRBR0xJQl9DWFhGTEFHUz0nJwpUQUdMSUJfTElCUz0nJwpVU0VfQUFMSUJfRkFMU0U9JycKVVNF X0FBTElCX1RSVUU9JycKVVNFX0FOTk9ERVhfRkFMU0U9JycKVVNFX0FOTk9ERVhfVFJVRT0nJwpV U0VfQloyX0ZBTFNFPScnClVTRV9CWjJfVFJVRT0nJwpVU0VfQ0FJUk9fRkFMU0U9JycKVVNFX0NB SVJPX1RSVUU9JycKVVNFX0RJUkVDVFNPVU5EX0ZBTFNFPScnClVTRV9ESVJFQ1RTT1VORF9UUlVF PScnClVTRV9EVjEzOTRfRkFMU0U9JycKVVNFX0RWMTM5NF9UUlVFPScnClVTRV9FU0RfRkFMU0U9 JycKVVNFX0VTRF9UUlVFPScnClVTRV9FWFBFUklNRU5UQUxfRkFMU0U9JycKVVNFX0VYUEVSSU1F TlRBTF9UUlVFPScjJwpVU0VfRVhURVJOQUxfRkFMU0U9JyMnClVTRV9FWFRFUk5BTF9UUlVFPScn ClVTRV9GTEFDX0ZBTFNFPScnClVTRV9GTEFDX1RSVUU9JycKVVNFX0dDT05GVE9PTF9GQUxTRT0n JwpVU0VfR0NPTkZUT09MX1RSVUU9JycKVVNFX0dDT05GX0ZBTFNFPScnClVTRV9HQ09ORl9UUlVF PScnClVTRV9HREtfUElYQlVGM19GQUxTRT0nJwpVU0VfR0RLX1BJWEJVRjNfVFJVRT0nJwpVU0Vf R0RLX1BJWEJVRl9GQUxTRT0nJwpVU0VfR0RLX1BJWEJVRl9UUlVFPScnClVTRV9HU1RfVjRMMl9G QUxTRT0nJwpVU0VfR1NUX1Y0TDJfVFJVRT0nJwpVU0VfSEFMX0ZBTFNFPScnClVTRV9IQUxfVFJV RT0nJwpVU0VfSlBFR19GQUxTRT0nJwpVU0VfSlBFR19UUlVFPScnClVTRV9MSUJDQUNBX0ZBTFNF PScnClVTRV9MSUJDQUNBX1RSVUU9JycKVVNFX0xJQkRWX0ZBTFNFPScnClVTRV9MSUJEVl9UUlVF PScnClVTRV9MSUJQTkdfRkFMU0U9JycKVVNFX0xJQlBOR19UUlVFPScnClVTRV9OTFM9J3llcycK VVNFX09TUzRfRkFMU0U9JycKVVNFX09TUzRfVFJVRT0nJwpVU0VfT1NTX0ZBTFNFPScnClVTRV9P U1NfVFJVRT0nJwpVU0VfT1NYX0FVRElPX0ZBTFNFPScnClVTRV9PU1hfQVVESU9fVFJVRT0nJwpV U0VfT1NYX1ZJREVPX0ZBTFNFPScnClVTRV9PU1hfVklERU9fVFJVRT0nJwpVU0VfUExVR0lOX0FM UEhBX0ZBTFNFPScnClVTRV9QTFVHSU5fQUxQSEFfVFJVRT0nJwpVU0VfUExVR0lOX0FQRVRBR19G QUxTRT0nJwpVU0VfUExVR0lOX0FQRVRBR19UUlVFPScnClVTRV9QTFVHSU5fQVVESU9GWF9GQUxT RT0nJwpVU0VfUExVR0lOX0FVRElPRlhfVFJVRT0nJwpVU0VfUExVR0lOX0FVUEFSU0VfRkFMU0U9 JycKVVNFX1BMVUdJTl9BVVBBUlNFX1RSVUU9JycKVVNFX1BMVUdJTl9BVVRPREVURUNUX0ZBTFNF PScnClVTRV9QTFVHSU5fQVVUT0RFVEVDVF9UUlVFPScnClVTRV9QTFVHSU5fQVZJX0ZBTFNFPScn ClVTRV9QTFVHSU5fQVZJX1RSVUU9JycKVVNFX1BMVUdJTl9DVVRURVJfRkFMU0U9JycKVVNFX1BM VUdJTl9DVVRURVJfVFJVRT0nJwpVU0VfUExVR0lOX0RFQlVHVVRJTFNfRkFMU0U9JycKVVNFX1BM VUdJTl9ERUJVR1VUSUxTX1RSVUU9JycKVVNFX1BMVUdJTl9ERUlOVEVSTEFDRV9GQUxTRT0nJwpV U0VfUExVR0lOX0RFSU5URVJMQUNFX1RSVUU9JycKVVNFX1BMVUdJTl9FRkZFQ1RWX0ZBTFNFPScn ClVTRV9QTFVHSU5fRUZGRUNUVl9UUlVFPScnClVTRV9QTFVHSU5fRVFVQUxJWkVSX0ZBTFNFPScn ClVTRV9QTFVHSU5fRVFVQUxJWkVSX1RSVUU9JycKVVNFX1BMVUdJTl9GTFZfRkFMU0U9JycKVVNF X1BMVUdJTl9GTFZfVFJVRT0nJwpVU0VfUExVR0lOX0ZMWF9GQUxTRT0nJwpVU0VfUExVR0lOX0ZM WF9UUlVFPScnClVTRV9QTFVHSU5fR09PTTJLMV9GQUxTRT0nJwpVU0VfUExVR0lOX0dPT00ySzFf VFJVRT0nJwpVU0VfUExVR0lOX0dPT01fRkFMU0U9JycKVVNFX1BMVUdJTl9HT09NX1RSVUU9JycK VVNFX1BMVUdJTl9JQ1lERU1VWF9GQUxTRT0nJwpVU0VfUExVR0lOX0lDWURFTVVYX1RSVUU9JycK VVNFX1BMVUdJTl9JRDNERU1VWF9GQUxTRT0nJwpVU0VfUExVR0lOX0lEM0RFTVVYX1RSVUU9JycK VVNFX1BMVUdJTl9JTUFHRUZSRUVaRV9GQUxTRT0nJwpVU0VfUExVR0lOX0lNQUdFRlJFRVpFX1RS VUU9JycKVVNFX1BMVUdJTl9JTlRFUkxFQVZFX0ZBTFNFPScnClVTRV9QTFVHSU5fSU5URVJMRUFW RV9UUlVFPScnClVTRV9QTFVHSU5fTEFXX0ZBTFNFPScnClVTRV9QTFVHSU5fTEFXX1RSVUU9JycK VVNFX1BMVUdJTl9MRVZFTF9GQUxTRT0nJwpVU0VfUExVR0lOX0xFVkVMX1RSVUU9JycKVVNFX1BM VUdJTl9NQVRST1NLQV9GQUxTRT0nJwpVU0VfUExVR0lOX01BVFJPU0tBX1RSVUU9JycKVVNFX1BM VUdJTl9NT05PU0NPUEVfRkFMU0U9JycKVVNFX1BMVUdJTl9NT05PU0NPUEVfVFJVRT0nJwpVU0Vf UExVR0lOX01VTFRJRklMRV9GQUxTRT0nJwpVU0VfUExVR0lOX01VTFRJRklMRV9UUlVFPScnClVT RV9QTFVHSU5fTVVMVElQQVJUX0ZBTFNFPScnClVTRV9QTFVHSU5fTVVMVElQQVJUX1RSVUU9JycK VVNFX1BMVUdJTl9RVERFTVVYX0ZBTFNFPScnClVTRV9QTFVHSU5fUVRERU1VWF9UUlVFPScnClVT RV9QTFVHSU5fUkVQTEFZR0FJTl9GQUxTRT0nJwpVU0VfUExVR0lOX1JFUExBWUdBSU5fVFJVRT0n JwpVU0VfUExVR0lOX1JUUE1BTkFHRVJfRkFMU0U9JycKVVNFX1BMVUdJTl9SVFBNQU5BR0VSX1RS VUU9JycKVVNFX1BMVUdJTl9SVFBfRkFMU0U9JycKVVNFX1BMVUdJTl9SVFBfVFJVRT0nJwpVU0Vf UExVR0lOX1JUU1BfRkFMU0U9JycKVVNFX1BMVUdJTl9SVFNQX1RSVUU9JycKVVNFX1BMVUdJTl9T SEFQRVdJUEVfRkFMU0U9JycKVVNFX1BMVUdJTl9TSEFQRVdJUEVfVFJVRT0nJwpVU0VfUExVR0lO X1NNUFRFX0ZBTFNFPScnClVTRV9QTFVHSU5fU01QVEVfVFJVRT0nJwpVU0VfUExVR0lOX1NQRUNU UlVNX0ZBTFNFPScnClVTRV9QTFVHSU5fU1BFQ1RSVU1fVFJVRT0nJwpVU0VfUExVR0lOX1VEUF9G QUxTRT0nJwpVU0VfUExVR0lOX1VEUF9UUlVFPScnClVTRV9QTFVHSU5fVklERU9CT1hfRkFMU0U9 JycKVVNFX1BMVUdJTl9WSURFT0JPWF9UUlVFPScnClVTRV9QTFVHSU5fVklERU9DUk9QX0ZBTFNF PScnClVTRV9QTFVHSU5fVklERU9DUk9QX1RSVUU9JycKVVNFX1BMVUdJTl9WSURFT0ZJTFRFUl9G QUxTRT0nJwpVU0VfUExVR0lOX1ZJREVPRklMVEVSX1RSVUU9JycKVVNFX1BMVUdJTl9WSURFT01J WEVSX0ZBTFNFPScnClVTRV9QTFVHSU5fVklERU9NSVhFUl9UUlVFPScnClVTRV9QTFVHSU5fV0FW RU5DX0ZBTFNFPScnClVTRV9QTFVHSU5fV0FWRU5DX1RSVUU9JycKVVNFX1BMVUdJTl9XQVZQQVJT RV9GQUxTRT0nJwpVU0VfUExVR0lOX1dBVlBBUlNFX1RSVUU9JycKVVNFX1BMVUdJTl9ZNE1fRkFM U0U9JycKVVNFX1BMVUdJTl9ZNE1fVFJVRT0nJwpVU0VfUFVMU0VfRkFMU0U9JycKVVNFX1BVTFNF X1RSVUU9JycKVVNFX1NIT1VUMl9GQUxTRT0nJwpVU0VfU0hPVVQyX1RSVUU9JycKVVNFX1NPVVBf RkFMU0U9JycKVVNFX1NPVVBfVFJVRT0nJwpVU0VfU1BFRVhfRkFMU0U9JycKVVNFX1NQRUVYX1RS VUU9JycKVVNFX1NVTkFVRElPX0ZBTFNFPScnClVTRV9TVU5BVURJT19UUlVFPScnClVTRV9UQUdM SUJfRkFMU0U9JycKVVNFX1RBR0xJQl9UUlVFPScnClVTRV9XQVZQQUNLX0ZBTFNFPScnClVTRV9X QVZQQUNLX1RSVUU9JycKVVNFX1hTSE1fRkFMU0U9JycKVVNFX1hTSE1fVFJVRT0nJwpVU0VfWFZJ REVPX0ZBTFNFPScnClVTRV9YVklERU9fVFJVRT0nJwpVU0VfWF9GQUxTRT0nJwpVU0VfWF9UUlVF PScnClVTRV9aTElCX0ZBTFNFPScnClVTRV9aTElCX1RSVUU9JycKVkFMR1JJTkRfQ0ZMQUdTPScn ClZBTEdSSU5EX0xJQlM9JycKVkFMR1JJTkRfUEFUSD0nbm8nClZFUlNJT049JzAuMTAuMjQnCldB Uk5JTkdfQ0ZMQUdTPScnCldBUk5JTkdfQ1hYRkxBR1M9JycKV0FWUEFDS19DRkxBR1M9JycKV0FW UEFDS19MSUJTPScnCldJTjMyX0xJQlM9JycKWERBTUFHRV9DRkxBR1M9JycKWERBTUFHRV9MSUJT PScnClhGSVhFU19DRkxBR1M9JycKWEZJWEVTX0xJQlM9JycKWEdFVFRFWFQ9Jy91c3IvbG9jYWwv YmluL3hnZXR0ZXh0JwpYR0VUVEVYVF8wMTU9Jy91c3IvbG9jYWwvYmluL3hnZXR0ZXh0JwpYR0VU VEVYVF9FWFRSQV9PUFRJT05TPScnClhNS01GPScnClhTSE1fTElCUz0nJwpYVklERU9fTElCUz0n JwpYX0NGTEFHUz0nJwpYX0VYVFJBX0xJQlM9JycKWF9MSUJTPScnClhfUFJFX0xJQlM9JycKWkxJ Ql9MSUJTPScnCmFjX2N0X0NDPSdjYycKYWNfY3RfQ1hYPScnCmFjX2N0X0RVTVBCSU49JycKYWNf Y3RfT0JKQz0nZ2NjJwphbV9fRVhFRVhUX0ZBTFNFPScnCmFtX19FWEVFWFRfVFJVRT0nJwphbV9f ZmFzdGRlcENDQVNfRkFMU0U9JyMnCmFtX19mYXN0ZGVwQ0NBU19UUlVFPScnCmFtX19mYXN0ZGVw Q0NfRkFMU0U9JyMnCmFtX19mYXN0ZGVwQ0NfVFJVRT0nJwphbV9fZmFzdGRlcENYWF9GQUxTRT0n IycKYW1fX2Zhc3RkZXBDWFhfVFJVRT0nJwphbV9fZmFzdGRlcE9CSkNfRkFMU0U9JyMnCmFtX19m YXN0ZGVwT0JKQ19UUlVFPScnCmFtX19pbmNsdWRlPSdpbmNsdWRlJwphbV9faXNyYz0nJwphbV9f bGVhZGluZ19kb3Q9Jy4nCmFtX19xdW90ZT0nJwphbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQk dGFyZGlyIicKYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJwpiaW5kaXI9JyR7ZXhlY19wcmVmaXh9 L2JpbicKYnVpbGQ9J2kzODYtcG9ydGJsZC1mcmVlYnNkNy4yJwpidWlsZF9hbGlhcz0naTM4Ni1w b3J0YmxkLWZyZWVic2Q3LjInCmJ1aWxkX2NwdT0naTM4NicKYnVpbGRfb3M9J2ZyZWVic2Q3LjIn CmJ1aWxkX3ZlbmRvcj0ncG9ydGJsZCcKZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCmRhdGFyb290 ZGlyPScke3ByZWZpeH0vc2hhcmUnCmRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FH RV9UQVJOQU1FfScKZHZpZGlyPScke2RvY2Rpcn0nCmV4ZWNfcHJlZml4PSdOT05FJwpob3N0PSdp Mzg2LXBvcnRibGQtZnJlZWJzZDcuMicKaG9zdF9hbGlhcz0nJwpob3N0X2NwdT0naTM4NicKaG9z dF9vcz0nZnJlZWJzZDcuMicKaG9zdF92ZW5kb3I9J3BvcnRibGQnCmh0bWxkaXI9JyR7ZG9jZGly fScKaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCmluZm9kaXI9Jy91c3IvbG9jYWwvaW5m bycKaW5zdGFsbF9zaD0nJHtTSEVMTH0gL3Vzci9wb3J0cy9ncmFwaGljcy9nc3RyZWFtZXItcGx1 Z2lucy1saWJwbmcvd29yay9nc3QtcGx1Z2lucy1nb29kLTAuMTAuMjQvaW5zdGFsbC1zaCcKbGli ZGlyPScke2V4ZWNfcHJlZml4fS9saWInCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4 ZWMnCmxvY2FsZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJwpsb2NhbHN0YXRlZGlyPScke3By ZWZpeH0vdmFyJwpsdF9FQ0hPPSdlY2hvJwptYW5kaXI9Jy91c3IvbG9jYWwvbWFuJwpta2Rpcl9w PSckKHRvcF9idWlsZGRpcikvLi9pbnN0YWxsLXNoIC1jIC1kJwpvbGRpbmNsdWRlZGlyPScvdXNy L2luY2x1ZGUnCnBkZmRpcj0nJHtkb2NkaXJ9Jwpwa2dweWV4ZWNkaXI9JyR7cHlleGVjZGlyfS9n c3QtcGx1Z2lucy1nb29kJwpwa2dweXRob25kaXI9JyR7cHl0aG9uZGlyfS9nc3QtcGx1Z2lucy1n b29kJwpwbHVnaW5kaXI9JycKcHJlZml4PScvdXNyL2xvY2FsJwpwcm9ncmFtX3RyYW5zZm9ybV9u YW1lPSdzLHgseCwnCnBzZGlyPScke2RvY2Rpcn0nCnB5ZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0v bGliL3B5dGhvbjIuNS9zaXRlLXBhY2thZ2VzJwpweXRob25kaXI9JyR7cHJlZml4fS9saWIvcHl0 aG9uMi41L3NpdGUtcGFja2FnZXMnCnNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCnNoYXJl ZHN0YXRlZGlyPScke3ByZWZpeH0vY29tJwpzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwp0YXJn ZXRfYWxpYXM9JycKCiMjIC0tLS0tLS0tLS0tICMjCiMjIGNvbmZkZWZzLmguICMjCiMjIC0tLS0t LS0tLS0tICMjCgovKiBjb25mZGVmcy5oICovCiNkZWZpbmUgUEFDS0FHRV9OQU1FICJHU3RyZWFt ZXIgR29vZCBQbHVnLWlucyIKI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWdv b2QiCiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIwLjEwLjI0IgojZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyAwLjEwLjI0IgojZGVmaW5lIFBBQ0tBR0VfQlVH UkVQT1JUICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1H U3RyZWFtZXIiCiNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKI2RlZmluZSBQQUNLQUdFICJnc3QtcGx1 Z2lucy1nb29kIgojZGVmaW5lIFZFUlNJT04gIjAuMTAuMjQiCiNkZWZpbmUgU1REQ19IRUFERVJT IDEKI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQoj ZGVmaW5lIEhBVkVfU1RETElCX0ggMQojZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQojZGVmaW5lIEhB VkVfTUVNT1JZX0ggMQojZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKI2RlZmluZSBIQVZFX0lOVFRZ UEVTX0ggMQojZGVmaW5lIEhBVkVfU1RESU5UX0ggMQojZGVmaW5lIEhBVkVfVU5JU1REX0ggMQoj ZGVmaW5lIEhBVkVfRExGQ05fSCAxCiNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCiNkZWZpbmUg SEFWRV9JQ09OViAxCiNkZWZpbmUgRU5BQkxFX05MUyAxCiNkZWZpbmUgSEFWRV9HRVRURVhUIDEK I2RlZmluZSBIQVZFX0RDR0VUVEVYVCAxCiNkZWZpbmUgR0VUVEVYVF9QQUNLQUdFICJnc3QtcGx1 Z2lucy1nb29kLTAuMTAiCiNkZWZpbmUgTE9DQUxFRElSICIvdXNyL2xvY2FsL3NoYXJlL2xvY2Fs ZSIKI2RlZmluZSBHU1RfUEFDS0FHRV9OQU1FICJHU3RyZWFtZXIgR29vZCBQbHVnLWlucyBzb3Vy Y2UgcmVsZWFzZSIKI2RlZmluZSBHU1RfUEFDS0FHRV9PUklHSU4gIlVua25vd24gcGFja2FnZSBv cmlnaW4iCiNkZWZpbmUgSEFWRV9FWFRFUk5BTCAvKiovCiNkZWZpbmUgSEFWRV9DUFVfSTM4NiAx CiNkZWZpbmUgSE9TVF9DUFUgImkzODYiCiNkZWZpbmUgSEFWRV9ET1dISUxFX01BQ1JPUyAxCiNk ZWZpbmUgU1REQ19IRUFERVJTIDEKI2RlZmluZSBIQVZFX05FVElORVRfSU5fSCAxCiNkZWZpbmUg SEFWRV9TWVNfVElNRV9IIDEKI2RlZmluZSBIQVZFX0ZJT05SRUFEX0lOX1NZU19JT0NUTCAxCiNk ZWZpbmUgSEFWRV9HQ0NfQVNNIDEKI2RlZmluZSBIQVZFX1JJTlQgMQojZGVmaW5lIEhBVkVfU0lO SCAxCiNkZWZpbmUgSEFWRV9DT1NIIDEKI2RlZmluZSBIQVZFX0FTSU5IIDEKI2RlZmluZSBIQVZF X0lTSU5GIDEKI2RlZmluZSBIQVZFX1NURExJQl9IIDEKI2RlZmluZSBIQVZFX1VOSVNURF9IIDEK I2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKI2RlZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKI2Rl ZmluZSBIQVZFX01NQVAgMQojZGVmaW5lIEhBVkVfSVBfTVJFUU4gLyoqLwojZGVmaW5lIEhBVkVf T1JDIDEKCmNvbmZpZ3VyZTogZXhpdCAxCg== --0016e65685504a6a79048e721614 Content-Type: application/octet-stream; name=pkglst220810 Content-Disposition: attachment; filename=pkglst220810 Content-Transfer-Encoding: base64 X-Attachment-Id: f_gd6jlv9i1 Li8KLi4vCk9SQml0Mi0yLjE0LjE3LwpPcGVuRVhSLTEuNi4xXzEvClhhdzNkLTEuNUVfMi8KYTJw cy1sZXR0ZXItNC4xM2JfNC8KYWFsaWItMS40LnI1XzQvCmFkbnMtMS40XzEvCmFkb2JlLWNtYXBz LTIwMDUxMjE3XzEvCmFmdGVyc3RlcC0xLjBfMy8KYWtvbmFkaS0xLjEuMV8yLwphbGFjYXJ0ZS0w LjExLjEwLwphbHBpbmUtMi4wMF8xLwphbXNwc2ZudC0xLjBfNS8KYXBhY2hlLTIuMi4xNi8KYXBw cmVzLTEuMC4xLwphcHItZ2RibS1kYjQyLTEuMy4zLjEuMy40XzEvCmFwci1pcHY2LWRldnJhbmRv bS1nZGJtLWRiNDItbmRibS1sZGFwMjQtbXlzcWw1MS1wZ3NxbDgyLXNxbGl0ZTMtMS40LjIuMS4z LjlfMS8KYXBzZmlsdGVyLTcuMi44XzUvCmFzY2xvY2stMS4wXzMvCmFzcGVsbC0wLjYwLjZfMi8K YXQtc3BpLTEuMjYuMC8KYXRrLTEuMjYuMC8KYXRsYXMtMy44LjNfMSwxLwphdXRvY29uZi0yLjEz LjAwMDIyN182LwphdXRvY29uZi0yLjYyLwphdXRvY29uZi13cmFwcGVyLTIwMDcxMTA5LwphdXRv bWFrZS0xLjEwLjEvCmF1dG9tYWtlLTEuNC42XzUvCmF1dG9tYWtlLTEuOS42XzMvCmF1dG9tYWtl LXdyYXBwZXItMjAwNzExMDkvCmF2YWhpLWFwcC0wLjYuMjRfMS8KYXZhaGktZ3RrLTAuNi4yNC8K YmFiZWwtMS42XzMvCmJhc2gtNC4wLjEwXzIvCmJpZ3JlcXNwcm90by0xLjAuMi8KYmludXRpbHMt Mi4yMC8KYmlzb24tMi40LjEsMS8KYml0bWFwLTEuMC4zXzEvCmJpdHN0cmVhbS12ZXJhLTEuMTBf NC8KYmxhcy0xLjBfNC8KYm9vc3QtcHl0aG9uLTEuMzcuMC8KYnJhc2Vyby0yLjI2LjBfMS8KYnNk cGFuLURCRC1teXNxbC00LjAxMy8KYnNkcGFuLURCSS0xLjYwOS8KYnVnLWJ1ZGR5LTIuMjYuMC8K Yy1hcmVzLWNvbmZpZy0xLjYuMC8KY2Ffcm9vdF9uc3MtMy4xMS45XzIvCmNhaXJvLTEuOC42XzEs MS8KY2Fpcm9tbS0xLjguMF8xLwpjY2xpZW50LTIwMDdlLDEvCmNkcGFyYW5vaWEtMy45LjhfOC8K Y2RyZGFvLTEuMi4yLwpjZHJ0b29scy0yLjAxXzcvCmNmaXRzaW8tMy4xMDBfMS8KY2hlY2ttb2wt MC40YS8KY2hlZXNlLTIuMjYuMC8KY2htbGliLTAuNDAvCmNsbi0xLjIuMi8KY2x1Y2VuZS0wLjku MjEvCmNsdXN0YWx3LTIuMC4xMi8KY2x1dHRlci1jYWlyby0wLjguMi8KY2x1dHRlci1ndGstMC44 LjMvCmNtYWtlLTIuNi40LwpjbXBzZm9udC0xLjBfNi8KY29tcGF0NHgtaTM4Ni01LjNfOS8KY29t cGF0NXgtaTM4Ni01LjQuMC44XzExLwpjb21wYXQ2eC1pMzg2LTYuNC42MDQwMDAuMjAwODEwXzMv CmNvbXBvc2l0ZXByb3RvLTAuNC8KY29uc29sZWtpdC0wLjMuMF82LwpjdXBzLWJhc2UtMS4zLjlf My8KY3VybC03LjIwLjAvCmN2c3VwLXdpdGhvdXQtZ3VpLTE2LjFoXzQvCmN5cnVzLXNhc2wtMi4x LjIyXzIvCmRhbWFnZXByb3RvLTEuMS4wXzIvCmRhc2hlci00LjEwLjAsMi8KZGI0MS00LjEuMjVf NC8KZGI0Mi00LjIuNTJfNS8KZGJ1cy0xLjIuNC40LwpkYnVzLWdsaWItMC44MC8KZGVjaWJlbC0w LjUuMF82LwpkZXNrYmFyLWFwcGxldC0yLjI4LjBfMS8KZGVza3RvcC1maWxlLXV0aWxzLTAuMTVf MS8KZGp2dWxpYnJlLW5veDExLTMuNS4yMV8xLwpkbWlkZWNvZGUtMi4xMC8KZG14cHJvdG8tMi4y LjIvCmRvY2Jvb2stMS40Lwpkb2Nib29rLTQuMV8zLwpkb2Nib29rLTQuMV80Lwpkb2Nib29rLTQu Mi8KZG9jYm9vay00LjMvCmRvY2Jvb2stNC40XzIvCmRvY2Jvb2stNC41XzIvCmRvY2Jvb2stNS4w XzEvCmRvY2Jvb2stc2stNC4xLjJfNC8KZG9jYm9vay14bWwtNC4yXzEvCmRvY2Jvb2steG1sLTQu My8KZG9jYm9vay14bWwtNC40XzEvCmRvY2Jvb2steG1sLTQuNS8KZG9jYm9vay14c2wtMS43NS4y LwpkcmktNy40XzEsMi8KZHJpMnByb3RvLTIuMC8KZHZkK3J3LXRvb2xzLTcuMS8KZHZpcHNrLXRl dGV4LTUuOTVhXzMvCmVib29rLXRvb2xzLTAuMS4xXzIvCmVnZ2RidXMtMC42Lwpla2lnYS0yLjAu MTFfNS8KZW1wYXRoeS0yLjI2LjAuMS8KZW5jaGFudC0xLjQuMi8KZW5jb2RpbmdzLTEuMC4yLDEv CmVvZy0yLjI2LjAvCmVwaXBoYW55LTIuMjYuMS8KZXNvdW5kLTAuMi40MS8KZXZpbmNlLTIuMjYu MC8KZXZvbHV0aW9uLTIuMjYuMC8KZXZvbHV0aW9uLWRhdGEtc2VydmVyLTIuMjguMl8xLwpldm9s dXRpb24tZXhjaGFuZ2UtMi4yOC4yXzEvCmV2b2x1dGlvbi13ZWJjYWwtMi4yNi4wLwpleGVtcGkt Mi4xLjAvCmV4aW0tNC42OV8zLwpleGl2Mi0wLjE4LDEvCmV4cGF0LTIuMC4xLwplem0zLTEuMl8x LwpmMmMtMjAwNjA4MTBfMy8KZmFhZDItMi43XzEsMS8KZmFyc2lnaHQyLTAuMC45LwpmYXN0YTMt MzUuNC45LwpmZXRjaG1haWwtNi4zLjkvCmZmbXBlZy0yMDA4LjA3LjI3XzEwLwpmZnR3My0zLjIu Ml8xLwpmaWxlLXJvbGxlci0yLjI2LjAsMS8KZml4ZXNwcm90by00LjAvCmZsYWMtMS4yLjEvCmZs ZXgtMi41LjM1XzQvCmZsdXhib3gtMS4xLjEvCmZvbnQtYWRvYmUtMTAwZHBpLTEuMC4wXzEvCmZv bnQtYWRvYmUtNzVkcGktMS4wLjAvCmZvbnQtYWRvYmUtdXRvcGlhLTEwMGRwaS0xLjAuMS8KZm9u dC1hZG9iZS11dG9waWEtNzVkcGktMS4wLjEvCmZvbnQtYWRvYmUtdXRvcGlhLXR5cGUxLTEuMC4x Lwpmb250LWFsaWFzLTEuMC4xLwpmb250LWFyYWJpYy1taXNjLTEuMC4wLwpmb250LWJoLTEwMGRw aS0xLjAuMC8KZm9udC1iaC03NWRwaS0xLjAuMC8KZm9udC1iaC1sdWNpZGF0eXBld3JpdGVyLTEw MGRwaS0xLjAuMC8KZm9udC1iaC1sdWNpZGF0eXBld3JpdGVyLTc1ZHBpLTEuMC4wLwpmb250LWJo LXR0Zi0xLjAuMC8KZm9udC1iaC10eXBlMS0xLjAuMC8KZm9udC1iaXRzdHJlYW0tMTAwZHBpLTEu MC4wLwpmb250LWJpdHN0cmVhbS03NWRwaS0xLjAuMC8KZm9udC1iaXRzdHJlYW0tdHlwZTEtMS4w LjAvCmZvbnQtY3Jvbnl4LWN5cmlsbGljLTEuMC4wLwpmb250LWN1cnNvci1taXNjLTEuMC4wLwpm b250LWRhZXdvby1taXNjLTEuMC4wLwpmb250LWRlYy1taXNjLTEuMC4wLwpmb250LWlibS10eXBl MS0xLjAuMC8KZm9udC1pc2FzLW1pc2MtMS4wLjAvCmZvbnQtamlzLW1pc2MtMS4wLjAvCmZvbnQt bWljcm8tbWlzYy0xLjAuMC8KZm9udC1taXNjLWN5cmlsbGljLTEuMC4wLwpmb250LW1pc2MtZXRo aW9waWMtMS4wLjAvCmZvbnQtbWlzYy1tZWx0aG8tMS4wLjBfMS8KZm9udC1taXNjLW1pc2MtMS4w LjAvCmZvbnQtbXV0dC1taXNjLTEuMC4wLwpmb250LXNjaHVtYWNoZXItbWlzYy0xLjAuMF8xLwpm b250LXNjcmVlbi1jeXJpbGxpYy0xLjAuMS8KZm9udC1zb255LW1pc2MtMS4wLjAvCmZvbnQtc3Vu LW1pc2MtMS4wLjAvCmZvbnQtdXRpbC0xLjAuMS8KZm9udC13aW5pdHpraS1jeXJpbGxpYy0xLjAu MC8KZm9udC14ZnJlZTg2LXR5cGUxLTEuMC4xLwpmb250Y2FjaGVwcm90by0wLjEuMi8KZm9udGNv bmZpZy0yLjYuMCwxLwpmb250c3Byb3RvLTIuMC4yLwpmcGMtMi4yLjQvCmZyZWVkZXNrdG9wLXNv dW5kLXRoZW1lLTAuMi8KZnJlZXR5cGUyLTIuMy45XzEvCmZyaWJpZGktMC4xOS4yXzEvCmZ1c2Vm cy1rbW9kLTAuMy45LnAxLjIwMDgwMjA4XzYvCmZ1c2Vmcy1saWJzLTIuNy40LwpmdndtLWltbGli LTIuNC4yMF8yLwpnYW1pbi0wLjEuMTBfMS8KZ2NhbGN0b29sLTUuMjYuMSwyLwpnY2MtNC40LjMu MjAxMDAxMTIvCmdjYy00LjUuMC4yMDEwMDExNC8KZ2NjbWFrZWRlcC0xLjAuMi8KZ2NvbmYtZWRp dG9yLTIuMjYuMCwxLwpnY29uZjItMi4yNi4wLwpnZC0yLjAuMzUsMS8KZ2RibS0xLjguM18zLwpn ZG0tMi4yNi4wXzEvCmdlZGl0LTIuMjYuMC8KZ2V0b3B0LTEuMS40XzEvCmdldHRleHQtMC4xN18x LwpnZ3otY2xpZW50LWxpYnMtMC4wLjE0LjFfMS8KZ2hvc3RzY3JpcHQ4LTguNjRfMS8KZ2lvLWZh bS1iYWNrZW5kLTIuMjAuMS8KZ2xlLTMuMS4wXzIvCmdsaWItMS4yLjEwXzEyLwpnbGliLTIuMjIu NC8KZ2xpYm1tLTIuMjAuMCwxLwpnbWFrZS0zLjgxXzMvCmdtcC01LjAuMS8KZ25vbWUtYXBwbGV0 cy0yLjI4LjBfMi8KZ25vbWUtYXVkaW8tMi4yMi4yLwpnbm9tZS1iYWNrZ3JvdW5kcy0yLjI0LjEv Cmdub21lLWNvbnRyb2wtY2VudGVyLTIuMjYuMC8KZ25vbWUtZGVza3RvcC0yLjI2LjAvCmdub21l LWRvYy11dGlscy0wLjE2LjAvCmdub21lLWdhbWVzLTIuMjYuMC8KZ25vbWUtaWNvbi10aGVtZS0y LjI2LjBfMS8KZ25vbWUta2V5cmluZy0yLjI2LjEvCmdub21lLW1hZy0wLjE1LjYvCmdub21lLW1l ZGlhLTIuMjYuMC8KZ25vbWUtbWVudXMtMi4yNi4wLwpnbm9tZS1taW1lLWRhdGEtMi4xOC4wXzMv Cmdub21lLW1vdW50LTAuOF8yLwpnbm9tZS1uZXRzdGF0dXMtMi4yNi4wLwpnbm9tZS1uZXR0b29s LTIuMjYuMSwxLwpnbm9tZS1wYW5lbC0yLjI2LjAvCmdub21lLXBvd2VyLW1hbmFnZXItMi4yNC40 XzEvCmdub21lLXNlc3Npb24tMi4yNi4wLwpnbm9tZS1zZXR0aW5ncy1kYWVtb24tMi4yNi4wLwpn bm9tZS1zcGVlY2gtMC40LjI1Lwpnbm9tZS1zcGVsbC0xLjAuOF8yLwpnbm9tZS1zeXN0ZW0tbW9u aXRvci0yLjI2LjAuMS8KZ25vbWUtc3lzdGVtLXRvb2xzLTIuMjIuMi8KZ25vbWUtdGVybWluYWwt Mi4yNi4wLwpnbm9tZS10aGVtZXMtMi4yNi4wLwpnbm9tZS11c2VyLWRvY3MtMi4yNi4wLwpnbm9t ZS11c2VyLXNoYXJlLTIuMjYuMC8KZ25vbWUtdXRpbHMtMi4yNi4wXzEsMS8KZ25vbWUtdmZzLTIu MjQuMS8KZ25vbWVfc3Vici0xLjAvCmdub21laGllci0yLjNfMTIvCmdudXBnLTIuMC4xMS8KZ251 cGxvdC00LjIuNi8KZ251dGxzLTIuOC4zLwpnb2JqZWN0LWludHJvc3BlY3Rpb24tMC42LjcvCmdv ay0yLjI2LjAsMS8KZ3BhYy1saWJncGFjLTAuNC41XzIsMS8KZ3BlcmYtMy4wLjMvCmdwZXJpb2Rp Yy0yLjAuMTBfMy8KZ3BnbWUtMS4xLjgvCmdzZWQtNC4xLjVfMS8KZ3Nmb250cy04LjExXzUvCmdz bC0xLjEzLwpnc3RyZWFtZXItMC4xMC4zMC8KZ3N0cmVhbWVyLWZmbXBlZy0wLjEwLjcvCmdzdHJl YW1lci1wbHVnaW5zLTAuMTAuMjJfMSwzLwpnc3RyZWFtZXItcGx1Z2lucy1hNTJkZWMtMC4xMC4x MSwzLwpnc3RyZWFtZXItcGx1Z2lucy1iYWQtMC4xMC4xMSwzLwpnc3RyZWFtZXItcGx1Z2lucy1j ZHBhcmFub2lhLTAuMTAuMjJfMSwzLwpnc3RyZWFtZXItcGx1Z2lucy1jb3JlLTAuMTBfMTAvCmdz dHJlYW1lci1wbHVnaW5zLWR0cy0wLjEwLjExLDMvCmdzdHJlYW1lci1wbHVnaW5zLWR2ZC0wLjEw LjExLDMvCmdzdHJlYW1lci1wbHVnaW5zLWVzb3VuZC0wLjEwLjE0LDMvCmdzdHJlYW1lci1wbHVn aW5zLWZsYWMtMC4xMC4xNCwzLwpnc3RyZWFtZXItcGx1Z2lucy1nY29uZi0wLjEwLjE0LDMvCmdz dHJlYW1lci1wbHVnaW5zLWdpby0wLjEwLjIyXzEsMy8KZ3N0cmVhbWVyLXBsdWdpbnMtZ29vZC0w LjEwLjE0LDMvCmdzdHJlYW1lci1wbHVnaW5zLWhhbC0wLjEwLjE0LDMvCmdzdHJlYW1lci1wbHVn aW5zLW1hZC0wLjEwLjExLDMvCmdzdHJlYW1lci1wbHVnaW5zLW1wMy0wLjEwLjBfMS8KZ3N0cmVh bWVyLXBsdWdpbnMtbXBlZzJkZWMtMC4xMC4xMSwzLwpnc3RyZWFtZXItcGx1Z2lucy1vZ2ctMC4x MC4yMl8xLDMvCmdzdHJlYW1lci1wbHVnaW5zLXBhbmdvLTAuMTAuMjJfMSwzLwpnc3RyZWFtZXIt cGx1Z2lucy1zb3VwLTAuMTAuMTQsMy8KZ3N0cmVhbWVyLXBsdWdpbnMtdGhlb3JhLTAuMTAuMjIs My8KZ3N0cmVhbWVyLXBsdWdpbnMtdWdseS0wLjEwLjExLDMvCmdzdHJlYW1lci1wbHVnaW5zLXZv cmJpcy0wLjEwLjIyXzEsMy8KZ3N0cmVhbWVyLXBsdWdpbnMteHZpZC0wLjEwLjExLDMvCmd0YXIt MS4yMi8KZ3RrLTEuMi4xMF8yMS8KZ3RrLTIuMTYuMS8KZ3RrLWVuZ2luZXMyLTIuMTguMC8KZ3Rr LXZuYy0wLjMuOC8KZ3RrZ2xleHQtMS4yLjBfMy8KZ3RraHRtbDMtMy4yNi4wLwpndGttbS0yLjE2 LjAvCmd0a3NvdXJjZXZpZXctMS44LjVfNC8KZ3Rrc291cmNldmlldzItMi42LjEvCmd0a3NwZWxs LTIuMC4xNS8KZ3VjaGFybWFwLTIuMjYuMS8KZ3VpbGUtMS44LjYvCmd2LTMuNi43LwpndmZzLTEu Mi4xLwpoYWwtMC41LjExXzIzLwpoYWwtaW5mby0yMDA4MDUwOF8xLwpoYW1zdGVyLWFwcGxldC0y LjI2LjBfMS8KaGVscDJtYW4tMS4zNi40XzMvCmhpY29sb3ItaWNvbi10aGVtZS0wLjEwXzIvCmhw aWpzLTIuMS40XzIvCmljZWF1dGgtMS4wLjIvCmljdS0zLjguMV8zLwppbG1iYXNlLTEuMC4xXzEv CmltYWtlLTEuMC4yXzQsMS8KaW1saWIyLTEuNC4xLjAwMF8yLDIvCmlucHV0cHJvdG8tMS41LjAv CmludGx0b29sLTAuNDAuNi8KaXNvLWNvZGVzLTMuOC8KaXNvODg3OS0xOTg2XzIvCmlzcGVsbC0z LjMuMDJfNC8KamFkZS0xLjIuMV85LwpqYXNwZXItMS45MDAuMV83LwpqYmlna2l0LTEuNi8KanBl Zy04Lwpqc29uLWdsaWItMC42LjJfMS8Ka2Jwcm90by0xLjAuMy8Ka2RlNC00LjIuMi8Ka2RlNC1z aGFyZWQtbWltZS1pbmZvLTEuMC8Ka2RlNC14ZGctZW52LTEuMC8Ka2RlYWNjZXNzaWJpbGl0eS00 LjIuMi8Ka2RlYWRtaW4tNC4yLjIvCmtkZWFydHdvcmstNC4yLjIvCmtkZWJhc2UtNC4yLjIvCmtk ZWJhc2UtcnVudGltZS00LjIuMi8Ka2RlYmFzZS13b3Jrc3BhY2UtNC4yLjJfMS8Ka2RlZWR1LTQu Mi4yLwprZGVnYW1lcy00LjIuMi8Ka2RlZ3JhcGhpY3MtNC4yLjJfMS8Ka2RlaGllcjQtMS4wLjMv CmtkZWxpYnMtNC4yLjIvCmtkZW11bHRpbWVkaWEtNC4yLjJfMS8Ka2RlbmV0d29yay00LjIuMi8K a2RlcGltLTQuMi4yLwprZGVwaW1saWJzLTQuMi4yXzEvCmtkZXBsYXNtYS1hZGRvbnMtNC4yLjIv CmtkZXNkay00LjIuMi8Ka2RldG95cy00LjIuMi8Ka2RldXRpbHMtNC4yLjIvCmtkZXdlYmRldi00 LjIuMi8Ka2luZW1hZ2UtNS43OV8xLwpsYXBhY2stMy4yLjFfMS8KbGNtcy0xLjE4LDEvCmxpYkVN Ri0xLjAvCmxpYkZTLTEuMC4xLwpsaWJHTC03LjRfMS8KbGliR0xVLTcuNF8xLwpsaWJJQ0UtMS4w LjRfMSwxLwpsaWJJREwtMC44LjEzLwpsaWJTTS0xLjEuMF8xLDEvCmxpYlgxMS0xLjIuMSwxLwps aWJYU2NyblNhdmVyLTEuMS4zLwpsaWJYVHJhcC0xLjAuMC8KbGliWGF1LTEuMC40LwpsaWJYYXct MS4wLjVfMSwxLwpsaWJYY29tcG9zaXRlLTAuNC4wLDEvCmxpYlhjdXJzb3ItMS4xLjlfMS8KbGli WGRhbWFnZS0xLjEuMS8KbGliWGRtY3AtMS4wLjJfMS8KbGliWGV2aWUtMS4wLjIvCmxpYlhleHQt MS4wLjUsMS8KbGliWGZpeGVzLTQuMC4zXzEvCmxpYlhmb250LTEuMy40LDEvCmxpYlhmb250Y2Fj aGUtMS4wLjQvCmxpYlhmdC0yLjEuMTMvCmxpYlhpLTEuMi4xLDEvCmxpYlhpbmVyYW1hLTEuMC4z LDEvCmxpYlhtdS0xLjAuNCwxLwpsaWJYcC0xLjAuMCwxLwpsaWJYcG0tMy41LjcvCmxpYlhyYW5k ci0xLjMuMC8KbGliWHJlbmRlci0wLjkuNF8xLwpsaWJYcmVzLTEuMC4zXzMvCmxpYlh0LTEuMC41 XzEvCmxpYlh0c3QtMS4wLjNfMS8KbGliWHYtMS4wLjQsMS8KbGliWHZNQy0xLjAuNF8xLwpsaWJY eGY4NmRnYS0xLjAuMi8KbGliWHhmODZtaXNjLTEuMC4xLwpsaWJYeGY4NnZtLTEuMC4yLwpsaWJh NTItMC43LjRfMi8KbGliYW8tMC44LjhfMS8KbGliYXJ0X2xncGwtMi4zLjIwLDEvCmxpYmF1ZGlv ZmlsZS0wLjIuNi8KbGliYm9ub2JvLTIuMjQuMS8KbGliYm9ub2JvdWktMi4yNC4xLwpsaWJjYW5i ZXJyYS0wLjEwXzMvCmxpYmNkZGItMS4zLjAvCmxpYmNkaW8tMC43OC4yXzIvCmxpYmNoZWNrLTAu OS44LwpsaWJjcm9jby0wLjYuMi8KbGliZGFlbW9uLTAuMTIvCmxpYmRjYS0wLjAuNS8KbGliZGlz Y2lkLTAuMi4yLwpsaWJkbXgtMS4wLjJfMS8KbGliZHJtLTIuNC4xMi8KbGliZHZkbmF2LTAuMS4x MF80LwpsaWJkdmRyZWFkLTQuMS4zLwpsaWJleGVjaW5mby0xLjFfMy8KbGliZXhpZi0wLjYuMTcv CmxpYmZhbWUtMC45LjFfMi8KbGliZmZpLTMuMC45LwpsaWJmb250ZW5jLTEuMC40LwpsaWJnYWls LWdub21lLTEuMjAuMS8KbGliZ2NyeXB0LTEuNC40LwpsaWJnZ3otMC4wLjE0LjFfNS8KbGliZ2xh ZGUyLTIuNi40LwpsaWJnbHV0LTcuNF8xLwpsaWJnbm9tZS0yLjI2LjAvCmxpYmdub21lY2FudmFz LTIuMjYuMC8KbGliZ25vbWVrYmQtMi4yOC4yXzEvCmxpYmdub21lcHJpbnQtMi4xOC42LwpsaWJn bm9tZXByaW50dWktMi4xOC40LwpsaWJnbm9tZXVpLTIuMjQuMS8KbGliZ3BnLWVycm9yLTEuNy8K bGliZ3Bob3RvMi0yLjQuNC8KbGliZ3NmLTEuMTQuMTEvCmxpYmd0b3AtMi4yNi4wXzIvCmxpYmd3 ZWF0aGVyLTIuMjYuMC8KbGliaWNhbC0wLjQzLwpsaWJpY29udi0xLjExXzEvCmxpYmlkM3RhZy0w LjE1LjFiLwpsaWJpZG4tMS4xMy8KbGlia3NiYS0xLjAuNS8KbGlibHRkbC0xLjUuMjYvCmxpYmx0 ZGwtMi4yLjZiLwpsaWJtYWQtMC4xNS4xYl8yLwpsaWJtYWwtMC40NC8KbGlibWNyeXB0LTIuNS44 LwpsaWJtbmctMS4wLjEwLwpsaWJtb2RwbHVnLTAuOC43LwpsaWJtcGVnMi0wLjUuMS8KbGlibXNu LTQuMC5iOC8KbGlibXNwYWNrLTAuMl8xLwpsaWJtdXNpY2JyYWluei0yLjEuNS8KbGlibXVzaWNi cmFpbnozLTMuMC4yXzEvCmxpYm5pY2UtMC4wLjYvCmxpYm5vdGlmeS0wLjQuNS8KbGlibm92YS0w LjEyLjMvCmxpYm9mYS0wLjkuM18yLwpsaWJvZ2ctMS4xLjMsNC8KbGlib2lsLTAuMy4xNS8KbGli b2xkWC0xLjAuMS8KbGlib29icy0yLjIyLjBfMS8KbGlib3RyLTMuMi4wXzEvCmxpYnBhcGVyLTEu MS4yMV8zLwpsaWJwY2ktMi4yLjhfMS8KbGlicGNpYWNjZXNzLTAuMTAuNi8KbGlicHJveHktMC4y LjMvCmxpYnB0aHJlYWQtc3R1YnMtMC4zLwpsaWJxYWxjdWxhdGUtMC45LjZfMi8KbGlicnN2ZzIt Mi4yNi4wLwpsaWJzYW1wbGVyYXRlLTAuMS43LwpsaWJzZXh5LTAuMS4xMV8xLwpsaWJzaWdjKyst Mi4yLjMvCmxpYnNsYW5nMi0yLjEuNF8xLwpsaWJzbmRmaWxlLTEuMC4xOS8KbGlic291cC0yLjI2 LjBfMS8KbGlic3BlY3RyZS0wLjIuMi8KbGlic3NoMi0xLjIuMiwyLwpsaWJ0YXNuMS0yLjMvCmxp YnRlbGVwYXRoeS0wLjMuM18xLwpsaWJ0aGVvcmEtMS4wLwpsaWJ0b29sLTIuMi42Yi8KbGlidHVu ZXBpbXAtMC41LjNfMywxLwpsaWJ1bmdpZi00LjEuNF81LwpsaWJ1c2ItMC4xLjEyXzQvCmxpYnV0 ZW1wdGVyLTEuMS41XzEvCmxpYnZuY3NlcnZlci0wLjkuNy8KbGlidm9sdW1lX2lkLTAuODEuMS8K bGlidm9yYmlzLTEuMi4wXzMsMy8KbGlid25jay0yLjI2LjAvCmxpYnd3dy01LjQuMF80LwpsaWJ4 Y2ItMS40LwpsaWJ4aW5lLTEuMS4xNi4yXzEvCmxpYnhrYmZpbGUtMS4wLjUvCmxpYnhrYnVpLTEu MC4yXzEvCmxpYnhrbGF2aWVyLTQuMF8xLDEvCmxpYnhtbCsrLTIuMjYuMC8KbGlieG1sMi0yLjcu My8KbGlieHNsdC0xLjEuMjRfMi8KbGliemlwLTAuOC8KbGltZXN1cnZleS0xLjgwXzIvCmxpbmtz LTIuMiwxLwpsaW5wYWNrLTEuMF8zLwpsaW51eF9iYXNlLWZjLTRfMTQvCmxpbnV4ZG9jLTEuMV8x LwpsaW51eHRocmVhZHMtMi4yLjNfMjQvCmxvY2FsZWRhdGEtNS40Lwpsb3VkbW91dGgtMS40LjMv Cmxzb2YtNC44NEEsNS8KbHVpdC0xLjAuM18xLwpseW54LTIuOC42LjVfNSwxLwpsem8yLTIuMDNf Mi8KbHpvcC0xLjAyLnIxLwptNC0xLjQuMTIsMS8KbUROU1Jlc3BvbmRlci0xMDgvCm1ha2VkZXBl bmQtMS4wLjEsMS8KbWVhbndoaWxlLTEuMC4yXzIvCm1ldGFjaXR5LTIuMjYuMC8KbWV0YW1haWwt Mi43XzcvCm1pbWUtc3VwcG9ydC0zLjQ2LjEvCm1rZm9udGRpci0xLjAuNC8KbWtmb250c2NhbGUt MS4wLjYvCm1tLTEuNC4yLwptb2RfZG5zc2QtMC42XzQvCm1vbGRlbi00LjZfMiwxLwptb3BhYy03 LjEuMTEsMS8KbW91c2V0d2Vha3MtMi4yNi4wLwptcGMtMC44LjEvCm1wZWc0aXAtbGlibXA0djIt MS42LjEvCm1wZnItMi40LjIvCm10b29scy00LjAuMTBfMS8KbXlzcWwtY2xpZW50LTUuMS40Ny8K bXlzcWwtc2NyaXB0cy01LjEuNDcvCm15c3FsLXNlcnZlci01LjEuNDcvCm5hcy0xLjkuMV8zLwpu YXNtLTIuMDcsMS8KbmF1dGlsdXMtMi4yNi4xLwpuZW9uMjgtMC4yOC4zLwpub3RpZmljYXRpb24t ZGFlbW9uLTAuNC4wXzEvCm5zcHItNC44LjIvCm5zcy0zLjEyLjRfMi8Kb3BhbC0yLjIuMTFfMS8K b3Blbi1tb3RpZi0yLjIuM182LwpvcGVuYmFiZWwtMi4yLjBfMS8Kb3BlbmxkYXAtY2xpZW50LTIu NC4yMS8Kb3BlbnNscC0xLjIuMV8zLwpvcGVyYS0xMC42MS42NDMwLwpvcmMtMC40LjYvCm9yY2Et Mi4yNi4wLwpvcnRlcDMtMS4wLjNfNS8Kb3J0cC0wLjEzLjBfMS8Kb3Njb21tZXJjZS0yLjIucjIu YSwyLwpwNS1BbGdvcml0aG0tRGlmZi0xLjE5MDIvCnA1LUFyY2hpdmUtVGFyLTEuNTYvCnA1LUF1 dGhlbi1QQU0tMC4xNl8xLwpwNS1DbGFzcy1BY2Nlc3Nvci0wLjM0LwpwNS1DbGFzcy1EQkktMy4w LjE3LwpwNS1DbGFzcy1EYXRhLUluaGVyaXRhYmxlLTAuMDgvCnA1LUNsYXNzLVRyaWdnZXItMC4x NC8KcDUtQ2xvbmUtMC4zMS8KcDUtQ29tcHJlc3MtUmF3LUJ6aXAyLTIuMDI0LwpwNS1Db21wcmVz cy1SYXctWmxpYi0yLjAyMy8KcDUtQ29tcHJlc3MtWmxpYi0yLjAxNS8KcDUtQ3J5cHQtT3BlblNT TC1CaWdudW0tMC4wNC8KcDUtQ3J5cHQtT3BlblNTTC1SU0EtMC4yNi8KcDUtQ3J5cHQtT3BlblNT TC1SYW5kb20tMC4wNC8KcDUtREJJeC1Db250ZXh0dWFsRmV0Y2gtMS4wMy8KcDUtRGlnZXN0LUhN QUMtMS4wMi8KcDUtRGlnZXN0LVNIQS01LjQ4LwpwNS1EaWdlc3QtU0hBMS0yLjEyLwpwNS1FbmNv ZGUtRGV0ZWN0LTEuMDEvCnA1LUVycm9yLTAuMTcwMTYvCnA1LUV4dFV0aWxzLUNCdWlsZGVyLTAu MjcsMS8KcDUtRXh0VXRpbHMtUGFyc2VYUy0yLjIyLjAzLwpwNS1GaWxlLVRlbXAtMC4yMi8KcDUt R0QtMi40NC8KcDUtSFRNTC1QYXJzZXItMy42NC8KcDUtSFRNTC1UYWdzZXQtMy4yMC8KcDUtSFRN TC1UcmVlLTMuMjMvCnA1LUlPLUNvbXByZXNzLUJhc2UtMi4wMTUvCnA1LUlPLUNvbXByZXNzLUJ6 aXAyLTIuMDE1LwpwNS1JTy1Db21wcmVzcy1abGliLTIuMDE1LwpwNS1JTy1Tb2NrZXQtSU5FVDYt Mi41Ni8KcDUtSU8tU29ja2V0LVNTTC0xLjMxLwpwNS1JTy1TdHJpbmctMS4wOC8KcDUtSU8tWmxp Yi0xLjEwLwpwNS1JTy1zdHJpbmd5LTIuMTEwLwpwNS1JbWEtREJJLTAuMzUvCnA1LU1haWwtREtJ TS0wLjM3LwpwNS1NYWlsLVNQRi0yLjAwNy8KcDUtTWFpbC1Ub29scy0yLjA2LwpwNS1NYXRoLUJp Z0ludC0xLjg5LwpwNS1Nb2R1bGUtQnVpbGQtMC4zNjAxLwpwNS1OZXQtREJ1cy0wLjMzLjYvCnA1 LU5ldC1ETlMtMC42Ni8KcDUtTmV0LUROUy1SZXNvbHZlci1Qcm9ncmFtbWFibGUtMC4wMDMvCnA1 LU5ldC1JUC0xLjI1XzEvCnA1LU5ldC1TU0xlYXktMS4zNV8yLwpwNS1OZXRBZGRyLUlQLTQuMDIu Ny8KcDUtUGFja2FnZS1Db25zdGFudHMtMC4wMi8KcDUtUGFyc2UtUGlkbC0wLjAyLwpwNS1QYXJz ZS1ZYXBwLTEuMDUvCnA1LVNjYWxhci1MaXN0LVV0aWxzLTEuMjEsMS8KcDUtU29ja2V0Ni0wLjIz LwpwNS1TdG9yYWJsZS0yLjIxLwpwNS1UZXN0LUhhcm5lc3MtMy4yMS8KcDUtVGV4dC1EaWZmLTEu MzcvCnA1LVRleHQtSWNvbnYtMS43LwpwNS1UaWUtSXhIYXNoLTEuMjEvCnA1LVRpbWUtSGlSZXMt MS45NzE5LDEvCnA1LVRpbWVEYXRlLTEuMjAsMS8KcDUtVU5JVkVSU0FMLW1vbmlrZXItMC4wOC8K cDUtVVJJLTEuNTAvCnA1LVhNTC1GaWx0ZXItQnVmZmVyVGV4dC0xLjAxLwpwNS1YTUwtR3JvdmUt MC40Ni5hLwpwNS1YTUwtSGFuZGxlci1ZQVdyaXRlci0wLjIzLwpwNS1YTUwtTmFtZXNwYWNlU3Vw cG9ydC0xLjEwLwpwNS1YTUwtUGFyc2VyLTIuMzZfMS8KcDUtWE1MLVNBWC0wLjk2LwpwNS1YTUwt U0FYLUV4cGF0LTAuNDAvCnA1LVhNTC1TQVgtV3JpdGVyLTAuNTIvCnA1LVhNTC1TaW1wbGUtMi4x OC8KcDUtWE1MLVR3aWctMy4zMi8KcDUtWE1MLVhQYXRoLTEuMTMvCnA1LVlBTUwtMC43MS8KcDUt Z2V0dGV4dC0xLjA1XzIvCnA1LWxpYnd3dy01LjgzNC8KcDUtbGlieG1sLTAuMDgvCnA1LXZlcnNp b24tMC43OC8KcGFtX2hlbHBlci0xLjAvCnBhbmdvLTEuMjQuMF8yLwpwYW5nb21tLTIuMjQuMC8K cGNpaWRzLTIwMDkwODA3LwpwY3JlLTguMDAvCnBkZmxpYi03LjAuNC8KcGRrc2gtNS4yLjE0cDJf Mi8KcGVjbC1maWxlaW5mby0xLjAuNC8KcGVjbC1mcmliaWRpLTEuMF8xLwpwZWNsLXBkZmxpYi0y LjEuNl8xLwpwZXJsLXRocmVhZGVkLTUuOC45XzMvCnBob25vbi00LjMuMV8xLwpwaG9ub24teGlu ZS00LjMuMV8xLwpwaHA1LTUuMy4yXzEvCnBocDUtYmNtYXRoLTUuMy4yXzEvCnBocDUtYnoyLTUu Mi4xMV8xLwpwaHA1LWJ6Mi01LjMuMl8xLwpwaHA1LWNhbGVuZGFyLTUuMy4yXzEvCnBocDUtY3R5 cGUtNS4yLjEyLwpwaHA1LWN0eXBlLTUuMy4yXzEvCnBocDUtY3VybC01LjIuMTFfMS8KcGhwNS1j dXJsLTUuMy4yXzEvCnBocDUtZG9tLTUuMy4yXzEvCnBocDUtZXhpZi01LjMuMl8xLwpwaHA1LWZp bHRlci01LjIuMTIvCnBocDUtZmlsdGVyLTUuMy4yXzEvCnBocDUtZnRwLTUuMy4yXzEvCnBocDUt Z2QtNS4yLjExXzIvCnBocDUtZ2V0dGV4dC01LjMuMl8xLwpwaHA1LWdtcC01LjMuMl8xLwpwaHA1 LWhhc2gtNS4zLjJfMS8KcGhwNS1pY29udi01LjMuMi8KcGhwNS1pY29udi01LjMuMl8xLwpwaHA1 LWltYXAtNS4zLjJfMS8KcGhwNS1sZGFwLTUuMy4yLwpwaHA1LW1ic3RyaW5nLTUuMi4xMi8KcGhw NS1tY3J5cHQtNS4yLjEyLwpwaHA1LW15c3FsLTUuMi4xMi8KcGhwNS1teXNxbGktNS4yLjEyLwpw aHA1LW9wZW5zc2wtNS4yLjExXzEvCnBocDUtc2Vzc2lvbi01LjIuMTFfMS8KcGhwNS1zZXNzaW9u LTUuMy4yXzEvCnBocDUtc2ltcGxleG1sLTUuMi4xMi8KcGhwNS16aXAtNS4yLjEyLwpwaHA1LXps aWItNS4yLjEyLwpwaHBNeUFkbWluLXN1cGhwLTMuMi40LwpwaWNvLWFscGluZS0yLjAwXzEvCnBp bG90LWxpbmstMC4xMi4zLDEvCnBpeG1hbi0wLjE1LjIvCnBrZy1jb25maWctMC4yM18xLwpwa2dk Yi5kYgpwbGF0b24tMjAwNy4wMS4wOV80LwpwbG90dXRpbHMtMi41LDEvCnBuZy0xLjQuMy8KcG9s aWN5a2l0LTAuOV80Lwpwb2xpY3lraXQtZ25vbWUtMC45LjIvCnBvbGtpdC0wLjk2XzEvCnBvcGQt Mi4yLjJhXzUvCnBvcHBsZXItMC4xMC42Lwpwb3BwbGVyLWRhdGEtMC4yLjEvCnBvcHBsZXItZ3Rr LTAuMTAuNi8KcG9wcGxlci1xdDQtMC4xMC42Lwpwb3B0LTEuN181Lwpwb3J0YXVkaXQtMC41LjE0 Lwpwb3J0dXBncmFkZS0yLjQuNl8zLDIvCnBvc3RmaXgtMi41LjYsMS8KcG9zdGdyZXNxbC1jbGll bnQtOC4yLjE3XzEvCnBvdmNoZW0tMS4wXzMvCnBvdnJheS0zLjYuMV81LwpwcmludHByb3RvLTEu MC40Lwpwcm9jbWFpbC0zLjIyXzYvCnByb3RvbW9sLTIuMC4zXzQvCnBzaTg4LTEuMF8zLwpwc3V0 aWxzLWxldHRlci0xLjE3XzIvCnB0aC0yLjAuNy8KcHVsc2VhdWRpby0wLjkuMTRfMi8KcHdsaWIt MS4xMi4wXzUsMS8KcHkyNS1hZG5zLTEuMi4xLwpweTI1LWNhaXJvLTEuOC4yLwpweTI1LWRidXMt MC44My4wXzEvCnB5MjUtZWxlbWVudHRyZWUtMS4yLjZfMS8KcHkyNS1nZGF0YS0xLjIuMi8KcHky NS1nbm9tZS0yLjI2LjEvCnB5MjUtZ25vbWUtZGVza3RvcC0yLjI2LjAvCnB5MjUtZ29iamVjdC0y LjE2LjEvCnB5MjUtZ3N0cmVhbWVyLTAuMTAuMTQvCnB5MjUtZ3RrLTIuMTQuMS8KcHkyNS1ndGtz b3VyY2V2aWV3LTIuNi4wLwpweTI1LWxpYnhtbDItMi43LjMvCnB5MjUtbnVtZXJpYy0yNC4yXzMv CnB5MjUtb3BlbnNzbC0wLjhfMS8KcHkyNS1vcmJpdC0yLjI0LjAvCnB5MjUtcHljcnlwdG8tMi4w LjFfMi8KcHkyNS1weW1zbi0wLjMuMy8KcHkyNS1zZXR1cHRvb2xzLTAuNmMxMS8KcHkyNS1zaW1w bGVqc29uLTIuMC45LwpweTI1LXNxbGl0ZTMtMi41LjRfMS8KcHkyNS10ZWxlcGF0aHktYnV0dGVy Zmx5LTAuMy4zLwpweTI1LXRlbGVwYXRoeS1weXRob24tMC4xNS43LwpweXRob24yNS0yLjUuNF8z LwpxY2EtMi4wLjEvCnFjYS1vc3NsLTIuMC4wLmIzXzIvCnFkYm0tMS44Ljc3XzEvCnFpbWFnZWJs aXR6LTAuMC40XzIvCnF0LTMuMy44XzkvCnF0NC1hc3Npc3RhbnQtNC40LjMvCnF0NC1jbHVjZW5l LTQuNC4zLwpxdDQtY29yZWxpYi00LjQuMy8KcXQ0LWRidXMtNC40LjMvCnF0NC1kZXNpZ25lci00 LjQuMy8KcXQ0LWRvYy00LjUuMy8KcXQ0LWd1aS00LjQuM18yLwpxdDQtaGVscC00LjQuMy8KcXQ0 LWljb25lbmdpbmVzLTQuNC4zLwpxdDQtaW1hZ2Vmb3JtYXRzLTQuNC4zLwpxdDQtbWFrZXFwZi00 LjQuMy8KcXQ0LW15c3FsLXBsdWdpbi00LjQuMy8KcXQ0LW5ldHdvcmstNC40LjMvCnF0NC1vcGVu Z2wtNC40LjMvCnF0NC1waXhlbHRvb2wtNC40LjMvCnF0NC1wb3J0aW5nLTQuNC4zLwpxdDQtcWRi dXN2aWV3ZXItNC40LjMvCnF0NC1xbWFrZS00LjUuMy8KcXQ0LXF0M3N1cHBvcnQtNC40LjMvCnF0 NC1xdGVzdGxpYi00LjQuMy8KcXQ0LXNjcmlwdC00LjQuMy8KcXQ0LXNxbC00LjQuMy8KcXQ0LXNx bGl0ZS1wbHVnaW4tNC40LjMvCnF0NC1zdmctNC40LjMvCnF0NC13ZWJraXQtNC40LjMvCnF0NC14 bWwtNC40LjMvCnJhbmRycHJvdG8tMS4zLjAvCnJhcHRvci0xLjQuMTZfMS8KcmFyaWFuLTAuOC4x LwpyYXNtb2wtMi43LjIuMS4xXzMvCnJlY29yZHByb3RvLTEuMTMuMi8KcmVkbGFuZC0xLjAuN18x LwpyZW5kZXJwcm90by0wLjkuMy8KcnN5bmMtMy4wLjUvCnJ1Ynkrb25pZ3VydW1hLTEuOC43LjE2 MF81LDEvCnJ1YnkxOC1iZGItMC42LjVfMS8KcnVieTE4LWRlcGxhdGUtMC44LjUvCnJ4dnQtMi42 LjRfNS8Kc2FtYmEtbGlic21iY2xpZW50LTMuMC4zNF8xLwpzYW1iYTQtZGV2ZWwtNC4wLjAuYTEx LwpzYW5lLWJhY2tlbmRzLTEuMC4xOV8xLwpzY3Juc2F2ZXJwcm90by0xLjEuMC8Kc2RsLTEuMi4x M18zLDIvCnNlYWhvcnNlLTIuMjYuMS8Kc2VhaG9yc2UtcGx1Z2lucy0yLjI2LjAvCnNlcWlvLTEu Mi4yXzEvCnNlc3NyZWctMS4wLjQvCnNldHhrYm1hcC0xLjAuNC8Kc2dtbGZvcm1hdC0xLjdfMi8K c2hhcmVkLW1pbWUtaW5mby0wLjYwLwpzbHJuLTAuOS45cDEvCnNtcHJveHktMS4wLjIvCnNvcHJh bm8tMi4yLjNfMS8Kc291bmQtanVpY2VyLTIuMjYuMS8Kc3BlZXgtMS4yLnIxXzEsMS8Kc3BpY2Ut M2Y1LjJfNi8Kc3FsaXRlMy0zLjYuMTkvCnN0YXJ0dXAtbm90aWZpY2F0aW9uLTAuOV8yLwpzdHJp Z2ktMC42LjNfMi8Kc3VidmVyc2lvbi0xLjYuMF8yLwpzdWRvLTEuNi45LjIwLwpzdXBocC0wLjcu MS8Kc3ZnYWxpYi0xLjQuM181Lwpzd2ZkZWMtMC44LjQvCnN3ZmRlYy1nbm9tZS0yLjI2LjAvCnN3 aWctMS4zLjM5LwpzeXN0ZW0tdG9vbHMtYmFja2VuZHMtMi42LjBfMS8KdDFsaWItNS4xLjJfMSwx Lwp0YWdsaWItMS41Lwp0YWxsb2MtMi4wLjEvCnRhcGlvY2EtcXQtMC4xNC4xXzQvCnRjbC04LjUu OC8KdGNsLW1vZHVsZXMtOC41LjgvCnRkYi0xLjIuMC8KdGVUZVgtYmFzZS0zLjBfMTgvCnRlVGVY LXRleG1mLTMuMF82Lwp0ZWxlcGF0aHktZmFyc2lnaHQtMC4wLjYvCnRlbGVwYXRoeS1nYWJibGUt MC43LjI2Lwp0ZWxlcGF0aHktZ2xpYi0wLjcuMjkvCnRlbGVwYXRoeS1pZGxlLTAuMS4zLwp0ZWxl cGF0aHktbWlzc2lvbi1jb250cm9sLTQuNjcvCnRlbGVwYXRoeS1xdC0wLjE0LjFfMy8KdGV2ZW50 LTAuOS44Lwp0ZXgtdGV4bWZsb2NhbC0xLjkvCnRleGkyaHRtbC0xLjgyLDEvCnRpZHktbGliLTA5 MDMxNS5jLwp0aWZmLTMuOC4yXzMvCnRpbi0xLjguM180Lwp0aW5rZXItNC4yLjIwMDQwOTA4XzQv CnRpbnljZGItMC43Ny8KdGstOC41LjgvCnRtYWtlLTEuN181Lwp0b3RlbS0yLjI2LjEvCnRvdGVt LXBsLXBhcnNlci0yLjI2LjEvCnRyYXBwcm90by0zLjQuMy8KdHdtLTEuMC40Lwp1bmlxdWUtMS4w LjYvCnVuemlwLTYuMC8KdXJsdmlldy0wLjlfMi8KdXVsaWItMC41LjIwXzEvCnY0bF9jb21wYXQt MS4wLjIwMTAwNDAzXzEvCnZjZGltYWdlci0wLjcuMjNfNS8KdmlkZW9wcm90by0yLjIuMi8Kdmlt LWxpdGUtNy4yLjI5OS8KdmluYWdyZS0yLjI2LjAvCnZpbm8tMi4yOC4xXzEvCnZvcmJpcy10b29s cy0xLjIuMF80LDMvCnZ0ZS0wLjI0LjMvCndhdnBhY2stNC41MC4xLwp3ZWJtaW4tMS41MDAvCndp bmRvd21ha2VyLTAuOTIuMF81Lwp3bWljb25zLTEuMF8yLwp3eGd0azItMi44LjEwXzIvCnd4Z3Rr Mi1jb21tb24tMi44LjEwXzIvCngxMXBlcmYtMS41Lwp4MjY0LTAuMC4yMDA4MTIxOC8KeGF1dGgt MS4wLjMvCnhiYWNrbGlnaHQtMS4xLwp4Yml0bWFwcy0xLjAuMS8KeGNhbGMtMS4wLjJfMS8KeGNi LXByb3RvLTEuNS8KeGNiLXV0aWwtMC4zLjMvCnhjaGF0LTIuOC42XzIvCnhjbWlzY3Byb3RvLTEu MS4yLwp4Y21zZGItMS4wLjEvCnhjdXJzb3ItdGhlbWVzLTEuMC4xXzEvCnhjdXJzb3JnZW4tMS4w LjIvCnhkZy11dGlscy0xLjAuMl80Lwp4ZG0tMS4xLjhfMi8KeGRweWluZm8tMS4wLjMvCnhkcmlp bmZvLTEuMC4yLwp4ZWFydGgtMS4xXzIvCnhlbWFjcy0yMS40LjIyLwp4ZW1hY3MtcGFja2FnZXMt MTQuMi8KeGV2LTEuMC4zLwp4ZXh0cHJvdG8tNy4wLjUvCnhmODYtaW5wdXQta2V5Ym9hcmQtMS4z LjJfMS8KeGY4Ni1pbnB1dC1tb3VzZS0xLjQuMF81Lwp4Zjg2LXZpZGVvLWF0aS02LjEyLjIvCnhm ODYtdmlkZW8taW50ZWwtMi42LjMvCnhmODYtdmlkZW8tbWFjaDY0LTYuOC4wXzIvCnhmODYtdmlk ZW8tbnYtMi4xLjEzLwp4Zjg2LXZpZGVvLW9wZW5jaHJvbWUtMC4yLjkwM18xLwp4Zjg2LXZpZGVv LXIxMjgtNi44LjBfMi8KeGY4Ni12aWRlby1yYWRlb25oZC0xLjIuNS8KeGY4Ni12aWRlby12ZXNh LTIuMS4wXzEvCnhmODZiaWdmb250cHJvdG8tMS4xLjIvCnhmODZkZ2EtMS4wLjJfMS8KeGY4NmRn YXByb3RvLTIuMC4zLwp4Zjg2bWlzY3Byb3RvLTAuOS4yLwp4Zjg2dmlkbW9kZXByb3RvLTIuMi4y Lwp4Zm1haWwtMS41LjVfNy8KeGZvcm1zLTEuMF80LDEvCnhnYW1tYS0xLjAuMi8KeGdjLTEuMC4x XzEvCnhob3N0LTEuMC4yLwp4aW5lcmFtYXByb3RvLTEuMS4yLwp4aW5pdC0xLjEuMV8xLwp4aW5w dXQtMS40LjEvCnhrYmNvbXAtMS4wLjUvCnhrYmV2ZC0xLjAuMi8KeGtidXRpbHMtMS4wLjFfMi8K eGtleWJvYXJkLWNvbmZpZy0xLjVfMS8KeGtpbGwtMS4wLjEvCnhsb2FkaW1hZ2UtNC4xLjE2XzQv Cnhsc2F0b21zLTEuMC4xLwp4bHNjbGllbnRzLTEuMC4xLwp4bWVzc2FnZS0xLjAuMl8xLwp4bWxj YXRtZ3ItMi4yLwp4bWxjaGFyZW50LTAuM18yLwp4bW9kbWFwLTEuMC4zLwp4bW9sd3QtMC43XzQv CnhvcmctNy40XzIvCnhvcmctYXBwcy03LjRfMS8KeG9yZy1jZi1maWxlcy0xLjAuMl8zLwp4b3Jn LWRvY3MtMS40LDEvCnhvcmctZHJpdmVycy03LjRfMS8KeG9yZy1mb250cy0xMDBkcGktNy40Lwp4 b3JnLWZvbnRzLTcuNC8KeG9yZy1mb250cy03NWRwaS03LjQvCnhvcmctZm9udHMtY3lyaWxsaWMt Ny40Lwp4b3JnLWZvbnRzLW1pc2NiaXRtYXBzLTcuNC8KeG9yZy1mb250cy10cnVldHlwZS03LjQv CnhvcmctZm9udHMtdHlwZTEtNy40Lwp4b3JnLWxpYnJhcmllcy03LjQvCnhvcmctbWFjcm9zLTEu Mi4xLwp4b3JnLW5lc3RzZXJ2ZXItMS42LjAsMS8KeG9yZy1zZXJ2ZXItMS42LjAsMS8KeG9yZy12 ZmJzZXJ2ZXItMS42LjAsMS8KeHByLTEuMC4yLwp4cHJvcC0xLjAuNC8KeHByb3RvLTcuMC4xNS8K eHJhbmRyLTEuMy4wLwp4cmRiLTEuMC41Lwp4cmVmcmVzaC0xLjAuMi8KeHNjcmVlbnNhdmVyLTUu MDgvCnhzZXQtMS4wLjQvCnhzZXRtb2RlLTEuMC4wLwp4c2V0cm9vdC0xLjAuMi8KeHRlcm0tMjUz Lwp4dHJhbnMtMS4yLjMvCnh2LTMuMTBhXzcvCnh2aWQtMS4yLjJfMSwxLwp4dmluZm8tMS4wLjIv Cnh3ZC0xLjAuMi8KeHdpbmluZm8tMS4wLjQvCnh3dWQtMS4wLjEvCnh6LTQuOTk5LjlfMS8KeWVs cC0yLjI2LjAvCnplbml0eS0yLjI2LjAvCnppcC0zLjAvCnpzaC00LjMuOV81Lwo= --0016e65685504a6a79048e721614-- From owner-freebsd-multimedia@FreeBSD.ORG Mon Aug 23 06:14:59 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D463B10656A5 for ; Mon, 23 Aug 2010 06:14:59 +0000 (UTC) (envelope-from henry.hu.sh@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 6559D8FC25 for ; Mon, 23 Aug 2010 06:14:58 +0000 (UTC) Received: by wwf26 with SMTP id 26so495602wwf.31 for ; Sun, 22 Aug 2010 23:14:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=cHzBCmhirsJqrBNwxD2RCd1Ed4jUhNbWSDXhGuNlets=; b=uWLk/awGQDNqrmIvxKBII59IU2XeVermZbg4+VyRMEFc0ra3i2iq4Bf7GwRWrqvoxx LjoNeNrTDXX6i+aVdtBDQ42iNJeuHHgTfwPU0esdLzTX4ARp+VmSZFY/Qsqqh7z49+7V PrYYsj0AEgVits+7OTmMWHrHQolaDA9rMuio8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=R1/vP6ytgOFqPmbrDDvrR7n4wK4S/9YrxGaBHS4FjNFeSx/OkTFqlaKZXOROxCmMgM OREvEhYt3kXL/O0KnF0w2dD4QQ+fcVjWjsF47PHxfZdPRLGBX20VFH8w2TatRH380Aw1 JtdpOJpnYLAAV3/+rV0ZFxfmpauROFnOOVCX4= Received: by 10.227.146.143 with SMTP id h15mr3786640wbv.149.1282542486196; Sun, 22 Aug 2010 22:48:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.231.156 with HTTP; Sun, 22 Aug 2010 22:47:46 -0700 (PDT) In-Reply-To: References: From: Henry Hu Date: Mon, 23 Aug 2010 13:47:46 +0800 Message-ID: To: Joseph Maxwell , freebsd-multimedia@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Subject: Re: Problem w/ gstreamer-plugins-libpng X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Aug 2010 06:14:59 -0000 My gst version: > pkg_version -vs gstreamer- gstreamer-0.10.30 =3D up-to-date with port gstreamer-ffmpeg-0.10.11_1 =3D up-to-date with port gstreamer-plugins-0.10.30,3 =3D up-to-date with port gstreamer-plugins-a52dec-0.10.15,3 =3D up-to-date with port gstreamer-plugins-bad-0.10.19_1,3 =3D up-to-date with port gstreamer-plugins-core-0.10_12 =3D up-to-date with port gstreamer-plugins-dts-0.10.19,3 =3D up-to-date with port gstreamer-plugins-dvd-0.10.15,3 =3D up-to-date with port gstreamer-plugins-faad-0.10.19,3 =3D up-to-date with port gstreamer-plugins-flac-0.10.24,3 =3D up-to-date with port gstreamer-plugins-gconf-0.10.24,3 =3D up-to-date with port gstreamer-plugins-gio-0.10.30,3 =3D up-to-date with port gstreamer-plugins-gnomevfs-0.10.30,3 =3D up-to-date with port gstreamer-plugins-good-0.10.24,3 =3D up-to-date with port gstreamer-plugins-hal-0.10.24,3 =3D up-to-date with port gstreamer-plugins-libpng-0.10.24,3 =3D up-to-date with port gstreamer-plugins-mad-0.10.15,3 =3D up-to-date with port gstreamer-plugins-mp3-0.10.0_1 =3D up-to-date with port gstreamer-plugins-mpeg2dec-0.10.15,3 =3D up-to-date with port gstreamer-plugins-ogg-0.10.30,3 =3D up-to-date with port gstreamer-plugins-pango-0.10.30,3 =3D up-to-date with port gstreamer-plugins-pulse-0.10.24,3 =3D up-to-date with port gstreamer-plugins-shout2-0.10.24,3 =3D up-to-date with port gstreamer-plugins-soup-0.10.24,3 =3D up-to-date with port gstreamer-plugins-theora-0.10.30,3 =3D up-to-date with port gstreamer-plugins-ugly-0.10.15_1,3 =3D up-to-date with port gstreamer-plugins-v4l2-0.10.24,3 =3D up-to-date with port gstreamer-plugins-vorbis-0.10.30,3 =3D up-to-date with port gstreamer-plugins-xvid-0.10.19,3 =3D up-to-date with port phonon-gstreamer-4.4.2 =3D up-to-date with port py26-gstreamer-0.10.19 =3D up-to-date with port Your versions: gstreamer-0.10.30/ gstreamer-ffmpeg-0.10.7/ gstreamer-plugins-0.10.22_1,3/ gstreamer-plugins-a52dec-0.10.11,3/ gstreamer-plugins-bad-0.10.11,3/ gstreamer-plugins-cdparanoia-0.10.22_1,3/ gstreamer-plugins-core-0.10_10/ gstreamer-plugins-dts-0.10.11,3/ gstreamer-plugins-dvd-0.10.11,3/ gstreamer-plugins-esound-0.10.14,3/ gstreamer-plugins-flac-0.10.14,3/ gstreamer-plugins-gconf-0.10.14,3/ gstreamer-plugins-gio-0.10.22_1,3/ gstreamer-plugins-good-0.10.14,3/ gstreamer-plugins-hal-0.10.14,3/ gstreamer-plugins-mad-0.10.11,3/ gstreamer-plugins-mp3-0.10.0_1/ gstreamer-plugins-mpeg2dec-0.10.11,3/ gstreamer-plugins-ogg-0.10.22_1,3/ gstreamer-plugins-pango-0.10.22_1,3/ gstreamer-plugins-soup-0.10.14,3/ gstreamer-plugins-theora-0.10.22,3/ gstreamer-plugins-ugly-0.10.11,3/ gstreamer-plugins-vorbis-0.10.22_1,3/ gstreamer-plugins-xvid-0.10.11,3/ And according to config.log: configure:23249: checking for GST_PLUGINS_BASE configure:23257: $PKG_CONFIG --exists --print-errors "$module >=3D $minver" Requested 'gstreamer-plugins-base-0.10 >=3D 0.10.30' but version of GStreamer Base Plugins Libraries is 0.10.22 configure:23260: $? =3D 1 configure:23275: $PKG_CONFIG --exists --print-errors "$module >=3D $minver" Requested 'gstreamer-plugins-base-0.10 >=3D 0.10.30' but version of GStreamer Base Plugins Libraries is 0.10.22 configure:23278: $? =3D 1 Requested 'gstreamer-plugins-base-0.10 >=3D 0.10.30' but version of GStreamer Base Plugins Libraries is 0.10.22 configure:23306: result: no configure:23310: result: no configure:23312: Requested 'gstreamer-plugins-base-0.10 >=3D 0.10.30' but version of GStreamer Base Plugins Libraries is 0.10.22 configure:23315: error: no gstreamer-plugins-base-0.10 >=3D 0.10.30 (GStreamer Base Plug-ins Library) found So please update gstreamer-plugins first... On Mon, Aug 23, 2010 at 7:42 AM, Joseph Maxwell wrote: > Failed to attach log and pkg files earlier - my apologies > > ---------- Forwarded message ---------- > From: Joseph Maxwell > Date: Sun, Aug 22, 2010 at 3:52 PM > Subject: Problem w/ gstreamer-plugins-libpng > To: multimedia@freebsd.org > > > Attempting to reinstall > /usr/ports/graphics/gstreamer-plugins-libpng. > from the ports. > > Did make deinstall etc > > make =3D=3D> > > configure: Requested 'gstreamer-0.10 >=3D 0.10.30' but version of GStream= er is > 0.10.22 > configure: error: no gstreamer-0.10 >=3D 0.10.30 (GStreamer) found > =3D=3D=3D> =A0Script "configure" failed unexpectedly. > Please report the problem to multimedia@FreeBSD.org [maintainer] and atta= ch > the > "/usr/ports/graphics/gstreamer-plugins-libpng/work/gst-plugins-good-0.10.= 24/config.log" > including the output of the failure of your make command. Also, it might = be > a good idea to provide an overview of all packages installed on your syst= em > (e.g. an `ls /var/db/pkg`). > *** Error code 1 > > Stop in /usr/ports/graphics/gstreamer-plugins-libpng. > > My ports was just updated yesterday (daily cron process) > > make ran from =A0 =A0 =A0 =A0 =A0 =A0 =A0 /usr/ports/graphics/gstreamer-p= lugins-libpng > > _______________________________________________ > freebsd-multimedia@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia > To unsubscribe, send any mail to "freebsd-multimedia-unsubscribe@freebsd.= org" > > --=20 Cheers, Henry From owner-freebsd-multimedia@FreeBSD.ORG Mon Aug 23 07:27:13 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA63110656A3; Mon, 23 Aug 2010 07:27:13 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe01.swip.net [212.247.154.1]) by mx1.freebsd.org (Postfix) with ESMTP id C7B288FC21; Mon, 23 Aug 2010 07:27:12 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=+aufMl16ZjoZikD717oZHt/II3iOLg17uabV0d0CmU0= c=1 sm=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=BYoYLfrPASm7W___lM4A:9 a=ZBgizSBePDyoWE4SqlCgHD_LVOkA:4 a=wPNLvfGTeEIA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:117 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe01.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 10702642; Mon, 23 Aug 2010 09:16:23 +0200 Received-SPF: softfail receiver=mailfe01.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: freebsd-multimedia@freebsd.org Date: Mon, 23 Aug 2010 09:13:15 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> In-Reply-To: <4C71A635.6070205@freebsd.org> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'( =?iso-8859-1?q?=3B=5FIjlA=3A=0A=09hGE=2E=2EEw?=, =?iso-8859-1?q?XAQ*o=23=5C/M=7ESC=3DS1-f9=7BEzRfT=27=7CHhll5Q=5Dha5Bt-s=7Co?= =?iso-8859-1?q?TlKMusi=3A1e=5BwJl=7Dkd=7DGR=0A=09Z0adGx-x=5F0zGbZj=27e?=(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008230913.15246.hselasky@freebsd.org> Cc: me@janh.de, kde@freebsd.org, Joe Marcus Clarke , Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Aug 2010 07:27:13 -0000 On Monday 23 August 2010 00:35:33 Joe Marcus Clarke wrote: > Actually, I'd prefer if there was a file or socket from which I could > read to get this data. hps, is this doable? That is, could I have a > file or socket that would allow me to map a USB bus/addr to a video (or > dvb) device ID? I could add an IOCTL that reports that. I think a socket would be overkill. --HPS From owner-freebsd-multimedia@FreeBSD.ORG Mon Aug 23 07:28:29 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7208D106567A; Mon, 23 Aug 2010 07:28:29 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe14.tele2.se [212.247.155.161]) by mx1.freebsd.org (Postfix) with ESMTP id 6EC9D8FC1B; Mon, 23 Aug 2010 07:28:28 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=g8NZzGB4F15ilha4X6wA:9 a=IVh4sZdtwXq2mpBAI8hCU6YbpbkA:4 a=wPNLvfGTeEIA:10 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe14.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 651155094; Mon, 23 Aug 2010 09:18:22 +0200 Received-SPF: softfail receiver=mailfe14.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: Joe Marcus Clarke Date: Mon, 23 Aug 2010 09:14:30 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> In-Reply-To: <4C71A635.6070205@freebsd.org> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'(; _IjlA: hGE..Ew, XAQ*o#\/M~SC=S1-f9{EzRfT'|Hhll5Q]ha5Bt-s|oTlKMusi:1e[wJl}kd}GR Z0adGx-x_0zGbZj'e(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008230914.30762.hselasky@freebsd.org> Cc: me@janh.de, kde@freebsd.org, Juergen Lock , freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Aug 2010 07:28:29 -0000 > > > > I have Cc'd hps, maybe he has an idea how to get the device index > > > > out of a running webcamd for hal to use... (maybe webcamd should > > also do a setproctitle()?) > > Actually, I'd prefer if there was a file or socket from which I could > read to get this data. hps, is this doable? That is, could I have a > file or socket that would allow me to map a USB bus/addr to a video (or > dvb) device ID? I think something like this has been discussed before, that perhaps webcamd, when it is ready updates hald, if present in the system. Could you provide me the snprintf() I need and where to send it? --HPS From owner-freebsd-multimedia@FreeBSD.ORG Mon Aug 23 07:30:20 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 625B810656A7; Mon, 23 Aug 2010 07:30:20 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 1B5928FC16; Mon, 23 Aug 2010 07:30:19 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7N7UILg000384; Mon, 23 Aug 2010 03:30:18 -0400 (EDT) Received: from 108-123-136-255.pools.spcsdns.net (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7N7UDoe029227; Mon, 23 Aug 2010 03:30:13 -0400 (EDT) Message-ID: <4C722383.2040906@freebsd.org> Date: Mon, 23 Aug 2010 03:30:11 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Hans Petter Selasky References: <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> <201008230913.15246.hselasky@freebsd.org> In-Reply-To: <201008230913.15246.hselasky@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-multimedia@freebsd.org, me@janh.de, kde@freebsd.org, Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Aug 2010 07:30:20 -0000 On 8/23/10 3:13 AM, Hans Petter Selasky wrote: > On Monday 23 August 2010 00:35:33 Joe Marcus Clarke wrote: >> Actually, I'd prefer if there was a file or socket from which I could >> read to get this data. hps, is this doable? That is, could I have a >> file or socket that would allow me to map a USB bus/addr to a video (or >> dvb) device ID? > > I could add an IOCTL that reports that. I think a socket would be overkill. An ioctl would be fine. I was thinking of a socket a la devd, but an ioctl or static PID-like file would work as well. Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Mon Aug 23 11:07:03 2010 Return-Path: Delivered-To: freebsd-multimedia@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94C26106564A for ; Mon, 23 Aug 2010 11:07:03 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 824DA8FC19 for ; Mon, 23 Aug 2010 11:07:03 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o7NB73wU089140 for ; Mon, 23 Aug 2010 11:07:03 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o7NB720I089138 for freebsd-multimedia@FreeBSD.org; Mon, 23 Aug 2010 11:07:02 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 23 Aug 2010 11:07:02 GMT Message-Id: <201008231107.o7NB720I089138@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-multimedia@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-multimedia@FreeBSD.org X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Aug 2010 11:07:03 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o ports/149765 multimedia [PATCH] audio/faac: improve build patches o kern/148741 multimedia [sound] Headphones are deaf (do not work) on Lenovo Th o kern/147504 multimedia [oss] [panic] panic: dev_pager_getpage: map function r p kern/147466 multimedia [snd_hda] [patch] Thinkpad t510, codecs not recognized o kern/146758 multimedia [sound] [patch] fix volume control in spicds o kern/146031 multimedia [snd_hda] race condition when kldunload snd_hda sound o kern/144659 multimedia [pcm] The distortion of the sound playback of music at o kern/143505 multimedia [pcm] FreeBSD 8.0-RELEASE (x64) won't make sound card o kern/141826 multimedia [snd_hda] load of snd_hda module fails o kern/140591 multimedia [PATCH][sound] No sound output on lineout/headphone ja o kern/140453 multimedia [sound] No sound inside Virtualbox on 50% volume o kern/137589 multimedia [snd_uaudio] snd_uaudio.ko (USB audio driver) doesn't o kern/134767 multimedia [sound] [snd_hda] [regression] Sigmatel STAC9205X no s o kern/132848 multimedia [sound] [snd_emu10kx] driver problem with card init, s o kern/132511 multimedia [sound] [snd_hda] Probing ALC888 codec on ASRock K10N7 o kern/129604 multimedia [sound] Sound stops with error: pcm0:virtual:dsp0.vp0: o kern/127131 multimedia [bktr] /usr/src/sys/dev/bktr/bktr_os.c, line 469: wron s kern/125756 multimedia [sound] [patch] cannot detect soft-modem on HDA bus o kern/124319 multimedia [sound] [snd_emu10k1] [regression] Cannot record from o kern/122086 multimedia [sound] maestro sound driver is working, but mixer ini p kern/121156 multimedia [sound] [patch] Turn on inverted external amplifier se o kern/120857 multimedia [sound] [snd_emu10k1] snd_emu10k1 driver issues a warn o kern/120780 multimedia [sound] [snd_hda] snd_hda doesn't work on Dell Latitut o kern/119973 multimedia [sound] [snd_maestro] [regression] snd_maestro only wo o kern/119931 multimedia [sound] No sound card detected on ASUS "K8V-X SE R2.00 o kern/119759 multimedia [sound] [snd_emu10k1] [regression] Can not record anyt f kern/115666 multimedia [sound] Microphone does not work o kern/115300 multimedia [sound] [snd_hda] [regression] snd_hda(4) fails to att o kern/114760 multimedia [sound] [snd_cmi] snd_cmi driver causing sporadic syst s kern/113950 multimedia [sound] [patch] [request] add per-vchan mixer support o kern/111767 multimedia [sound] ATI SB450 High Definition Audio Controller sou o kern/107516 multimedia [sound] [snd_emu10k1] - skips, clicks and lag after a o kern/107051 multimedia [sound] only 2 channels output works for the ALC850 (o o kern/104874 multimedia [sound] [snd_emu10k1] kldload snd_emu10k1 hangs system o kern/104626 multimedia [sound] FreeBSD 6.2 does not support SoundBlaster Audi o kern/101417 multimedia [sound] 4-speakers output not possible on Asus A8V-Del o kern/100859 multimedia [sound] [snd_ich] snd_ich broken on GIGABYTE 915 syste o kern/98752 multimedia [sound] Intel ich6 82801 FB - on Packard Bell A8810 la o kern/98504 multimedia [sound] Sound is distorted with SB Live 5.1 o kern/98496 multimedia [sound] [snd_ich] some functions don't work in my soun o kern/97609 multimedia [sound] Load Sound Module - VIA8233 - fails o kern/97535 multimedia [sound] [snd_mss] doesn't work in 6.0-RELEASE and abov o kern/96538 multimedia [sound] emu10k1-driver inverts channels o kern/95086 multimedia [sound] uaudio line in problem with sbdm lx o kern/94279 multimedia [sound] [snd_neomagic] snd_neomagic crashes on FreeBSD o kern/93986 multimedia [sound] Acer TravelMate 4652LMi pcm0 channel dead o kern/92512 multimedia [sound] distorted mono output with emu10k1 o kern/87782 multimedia [sound] snd_t4dwave and pcm0:record:0: record interrup s kern/83697 multimedia [sound] [snd_mss] [patch] support, docs added for full o kern/82043 multimedia [sound] snd_emu10k1 - mixer does not work. o kern/81146 multimedia [sound] Sound isn't working AT ALL for Sis7012 onboard o kern/80632 multimedia [sound] pcm driver missing support for CMI8738 auxilla o kern/79912 multimedia [sound] sound broken for 2 VIA chipsets: interrupt sto o kern/79905 multimedia [sound] sis7018 sound module problem o kern/79678 multimedia [sound] sound works except recording from any source f kern/72995 multimedia [sound] Intel ICH2 (82801BA) - sound nearly inaudible o kern/63204 multimedia [sound] /dev/mixer broken with ESS Maestro-2E (still o o kern/60677 multimedia [sound] [patch] No reaction of volume controy key on I s kern/60599 multimedia [bktr] [partial patch] No sound for ATI TV Wonder (ste o kern/37600 multimedia [sound] [partial patch] t4dwave drive doesn't record. o kern/23546 multimedia [sound] [snd_csa] [patch] csa DMA-interrupt problem 61 problems total. From owner-freebsd-multimedia@FreeBSD.ORG Tue Aug 24 20:24:12 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BFEF81065673; Tue, 24 Aug 2010 20:24:12 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 167E38FC0A; Tue, 24 Aug 2010 20:24:11 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id 4EA8A1E0021A; Tue, 24 Aug 2010 22:24:10 +0200 (CEST) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.4/8.14.3) with ESMTP id o7OKLJWA039943; Tue, 24 Aug 2010 22:21:19 +0200 (CEST) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.4/8.14.3/Submit) id o7OKLIZG039942; Tue, 24 Aug 2010 22:21:18 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Tue, 24 Aug 2010 22:21:18 +0200 To: Hans Petter Selasky Message-ID: <20100824202118.GA38687@triton8.kn-bremen.de> References: <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> <201008230914.30762.hselasky@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201008230914.30762.hselasky@freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: me@janh.de, kde@freebsd.org, Juergen Lock , freebsd-multimedia@freebsd.org, Joe Marcus Clarke , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 20:24:12 -0000 On Mon, Aug 23, 2010 at 09:14:30AM +0200, Hans Petter Selasky wrote: > > > > > > I have Cc'd hps, maybe he has an idea how to get the device index > > > > > > out of a running webcamd for hal to use... (maybe webcamd should > > > also do a setproctitle()?) > > > > Actually, I'd prefer if there was a file or socket from which I could > > read to get this data. hps, is this doable? That is, could I have a > > file or socket that would allow me to map a USB bus/addr to a video (or > > dvb) device ID? > > I think something like this has been discussed before, that perhaps webcamd, > when it is ready updates hald, if present in the system. > > Could you provide me the snprintf() I need and where to send it? Ok I just got the new kaffeine working for direct dvb (i.e. without xvdr://) with both the dvb-s2 and dvb-t tuners by invoking hal-device --add for each dvb device node like below. (well, ignoring audio issues on dvb-s2 h264 channels but those can't have anything to do with hal...) So it seems you can take the udi name that hal uses for the device (or is that always 'usb_device___noserial'?), add a string to it like '_dvb_', use that as arg to 'hal-device --add', and then give that process mostly static info like mine on stdin where only dvb.device (the device node) and info.parent (the original udi name) vary: (Linux also adds linux.device_file, linux.hotplug_type, linux.subsystem, and linux.sysfs_path as you can see in my Linux lshal output earlier in this thread, http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-August/011203.html but it seems at least kaffeine doesn't need those.) #! /bin/sh # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 hal-device --add usb_device_2304_21f_noserial_dvb_0 < Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9610B1065672; Tue, 24 Aug 2010 21:08:51 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe07.swip.net [212.247.154.193]) by mx1.freebsd.org (Postfix) with ESMTP id 5F8BA8FC20; Tue, 24 Aug 2010 21:08:49 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=8nVFKzxAJNCZJh2yHDOpnep+nZeeqVU+af0AVP5CZ7Y= c=1 sm=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=ArtyDNf3ZL9q3spDVYUA:9 a=l0eE-pk80KWydiZhspEA:7 a=pQMMQ5VQxpOOOM1I-GlvW5g6ibAA:4 a=wPNLvfGTeEIA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:117 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe07.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 10207168; Tue, 24 Aug 2010 23:08:46 +0200 Received-SPF: softfail receiver=mailfe07.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: Juergen Lock Date: Tue, 24 Aug 2010 23:04:54 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <201008230914.30762.hselasky@freebsd.org> <20100824202118.GA38687@triton8.kn-bremen.de> In-Reply-To: <20100824202118.GA38687@triton8.kn-bremen.de> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'( =?iso-8859-1?q?=3B=5FIjlA=3A=0A=09hGE=2E=2EEw?=, =?iso-8859-1?q?XAQ*o=23=5C/M=7ESC=3DS1-f9=7BEzRfT=27=7CHhll5Q=5Dha5Bt-s=7Co?= =?iso-8859-1?q?TlKMusi=3A1e=5BwJl=7Dkd=7DGR=0A=09Z0adGx-x=5F0zGbZj=27e?=(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008242304.54247.hselasky@freebsd.org> Cc: me@janh.de, kde@freebsd.org, freebsd-multimedia@freebsd.org, Joe Marcus Clarke , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:08:51 -0000 On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: > #! /bin/sh > # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 > hal-device --add usb_device_2304_21f_noserial_dvb_0 < dvb.device = '/dev/dvb/adapter0/demux0' (string) > info.capabilities = {'dvb'} (string list) > info.category = 'dvb' (string) > info.parent = > '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > info.product = 'DVB Device' (string) > info.subsystem = 'dvb' (string) > EOF > hal-device --add usb_device_2304_21f_noserial_dvb_1 < dvb.device = '/dev/dvb/adapter0/dvr0' (string) > info.capabilities = {'dvb'} (string list) > info.category = 'dvb' (string) > info.parent = > '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > info.product = 'DVB Device' (string) > info.subsystem = 'dvb' (string) > EOF > hal-device --add usb_device_2304_21f_noserial_dvb_2 < Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C85E3106564A; Tue, 24 Aug 2010 21:11:32 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 7DEC48FC1B; Tue, 24 Aug 2010 21:11:32 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLBUVa018535; Tue, 24 Aug 2010 17:11:30 -0400 (EDT) Received: from fruit-rollup.marcuscom.com (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLBTqP016249; Tue, 24 Aug 2010 17:11:30 -0400 (EDT) Message-ID: <4C743581.2070100@freebsd.org> Date: Tue, 24 Aug 2010 17:11:29 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Juergen Lock References: <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> <201008230914.30762.hselasky@freebsd.org> <20100824202118.GA38687@triton8.kn-bremen.de> In-Reply-To: <20100824202118.GA38687@triton8.kn-bremen.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: me@janh.de, kde@freebsd.org, Hans Petter Selasky , freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:11:32 -0000 On 8/24/10 4:21 PM, Juergen Lock wrote: > On Mon, Aug 23, 2010 at 09:14:30AM +0200, Hans Petter Selasky wrote: >>>> >>>> I have Cc'd hps, maybe he has an idea how to get the device index >>>> >>>> out of a running webcamd for hal to use... (maybe webcamd should >>>> also do a setproctitle()?) >>> >>> Actually, I'd prefer if there was a file or socket from which I could >>> read to get this data. hps, is this doable? That is, could I have a >>> file or socket that would allow me to map a USB bus/addr to a video (or >>> dvb) device ID? >> >> I think something like this has been discussed before, that perhaps webcamd, >> when it is ready updates hald, if present in the system. >> >> Could you provide me the snprintf() I need and where to send it? > > Ok I just got the new kaffeine working for direct dvb (i.e. without > xvdr://) with both the dvb-s2 and dvb-t tuners by invoking > hal-device --add for each dvb device node like below. (well, > ignoring audio issues on dvb-s2 h264 channels but those can't have > anything to do with hal...) > > So it seems you can take the udi name that hal uses for the device > (or is that always 'usb_device___noserial'?), add a string > to it like '_dvb_', use that as arg to 'hal-device --add', > and then give that process mostly static info like mine on stdin > where only dvb.device (the device node) and info.parent (the original > udi name) vary: (Linux also adds linux.device_file, linux.hotplug_type, > linux.subsystem, and linux.sysfs_path as you can see in my Linux > lshal output earlier in this thread, The USB Devices are named as usb_device_vendorID_product_ID_serialNo (noserial if there is no ASCII serial number). The parent may be important, so the output of lshal may need to be properly known, but you could also just set it to the dummy /org/freedesktop/Hal/devices/computer value (i.e. its parent is the root of the tree). If this works for both dvb and v4l, we could remove the patches in hal, and just have webcamd do our dirty work. Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Tue Aug 24 21:12:12 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C47D1106570A; Tue, 24 Aug 2010 21:12:12 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 764008FC14; Tue, 24 Aug 2010 21:12:12 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLCBRI018541; Tue, 24 Aug 2010 17:12:11 -0400 (EDT) Received: from fruit-rollup.marcuscom.com (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLCAHT016994; Tue, 24 Aug 2010 17:12:11 -0400 (EDT) Message-ID: <4C7435AA.50805@freebsd.org> Date: Tue, 24 Aug 2010 17:12:10 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Hans Petter Selasky References: <4C66C4BC.4040504@janh.de> <201008230914.30762.hselasky@freebsd.org> <20100824202118.GA38687@triton8.kn-bremen.de> <201008242304.54247.hselasky@freebsd.org> In-Reply-To: <201008242304.54247.hselasky@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: me@janh.de, kde@freebsd.org, Juergen Lock , freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:12:12 -0000 On 8/24/10 5:04 PM, Hans Petter Selasky wrote: > On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: >> #! /bin/sh >> # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 >> hal-device --add usb_device_2304_21f_noserial_dvb_0 <> dvb.device = '/dev/dvb/adapter0/demux0' (string) >> info.capabilities = {'dvb'} (string list) >> info.category = 'dvb' (string) >> info.parent = >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) >> info.product = 'DVB Device' (string) >> info.subsystem = 'dvb' (string) >> EOF >> hal-device --add usb_device_2304_21f_noserial_dvb_1 <> dvb.device = '/dev/dvb/adapter0/dvr0' (string) >> info.capabilities = {'dvb'} (string list) >> info.category = 'dvb' (string) >> info.parent = >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) >> info.product = 'DVB Device' (string) >> info.subsystem = 'dvb' (string) >> EOF >> hal-device --add usb_device_2304_21f_noserial_dvb_2 < > Hi, > > Could you have changed this into "execve()" calls (man execve) and add these > to webcamd.c whenever cuse_dev_create() is called? Also for /dev/videoX > entries. Then we don't need to patch HAL? Yeah, if webcamd can notify hal that new dvb and v4l devices are available (and what those devices' capabilities are) then we can remove the patches from hal. Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Tue Aug 24 21:13:03 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED7C81065695; Tue, 24 Aug 2010 21:13:03 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 8B7B38FC17; Tue, 24 Aug 2010 21:13:03 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLD2ue018661; Tue, 24 Aug 2010 17:13:02 -0400 (EDT) Received: from fruit-rollup.marcuscom.com (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLD28s017857; Tue, 24 Aug 2010 17:13:02 -0400 (EDT) Message-ID: <4C7435DE.7060106@freebsd.org> Date: Tue, 24 Aug 2010 17:13:02 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Hans Petter Selasky References: <4C66C4BC.4040504@janh.de> <201008230914.30762.hselasky@freebsd.org> <20100824202118.GA38687@triton8.kn-bremen.de> <201008242304.54247.hselasky@freebsd.org> <4C7435AA.50805@freebsd.org> In-Reply-To: <4C7435AA.50805@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: me@janh.de, kde@freebsd.org, Juergen Lock , freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:13:04 -0000 On 8/24/10 5:12 PM, Joe Marcus Clarke wrote: > On 8/24/10 5:04 PM, Hans Petter Selasky wrote: >> On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: >>> #! /bin/sh >>> # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 >>> hal-device --add usb_device_2304_21f_noserial_dvb_0 <>> dvb.device = '/dev/dvb/adapter0/demux0' (string) >>> info.capabilities = {'dvb'} (string list) >>> info.category = 'dvb' (string) >>> info.parent = >>> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) >>> info.product = 'DVB Device' (string) >>> info.subsystem = 'dvb' (string) >>> EOF >>> hal-device --add usb_device_2304_21f_noserial_dvb_1 <>> dvb.device = '/dev/dvb/adapter0/dvr0' (string) >>> info.capabilities = {'dvb'} (string list) >>> info.category = 'dvb' (string) >>> info.parent = >>> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) >>> info.product = 'DVB Device' (string) >>> info.subsystem = 'dvb' (string) >>> EOF >>> hal-device --add usb_device_2304_21f_noserial_dvb_2 <> >> Hi, >> >> Could you have changed this into "execve()" calls (man execve) and add these >> to webcamd.c whenever cuse_dev_create() is called? Also for /dev/videoX >> entries. Then we don't need to patch HAL? > > Yeah, if webcamd can notify hal that new dvb and v4l devices are > available (and what those devices' capabilities are) then we can remove > the patches from hal. Oh, and webcamd's rc.d script will need to be updated to depend on hald. Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Tue Aug 24 21:21:34 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0D8010656C4; Tue, 24 Aug 2010 21:21:34 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe04.swip.net [212.247.154.97]) by mx1.freebsd.org (Postfix) with ESMTP id CD9A48FC1E; Tue, 24 Aug 2010 21:21:33 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=bqAX4Es/FymT96iuQFWdNJXS7SazJpmZM5WIJFHIREc= c=1 sm=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=Q2iUx90YNlKbYAF472QA:9 a=qzJECee2gBapu4z5K86xVuHt070A:4 a=wPNLvfGTeEIA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:117 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe04.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 11228050; Tue, 24 Aug 2010 23:21:30 +0200 Received-SPF: softfail receiver=mailfe04.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: freebsd-multimedia@freebsd.org Date: Tue, 24 Aug 2010 23:17:37 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <4C7435AA.50805@freebsd.org> <4C7435DE.7060106@freebsd.org> In-Reply-To: <4C7435DE.7060106@freebsd.org> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'(; _IjlA: hGE..Ew, XAQ*o#\/M~SC=S1-f9{EzRfT'|Hhll5Q]ha5Bt-s|oTlKMusi:1e[wJl}kd}GR Z0adGx-x_0zGbZj'e(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008242317.37648.hselasky@freebsd.org> Cc: me@janh.de, kde@freebsd.org, Joe Marcus Clarke , Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:21:34 -0000 On Tuesday 24 August 2010 23:13:02 Joe Marcus Clarke wrote: > Oh, and webcamd's rc.d script will need to be updated to depend on hald. That's a problem, because then we need to make devd rc-script depend on hald too. --HPS From owner-freebsd-multimedia@FreeBSD.ORG Tue Aug 24 21:50:43 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 81CC610656AB; Tue, 24 Aug 2010 21:50:43 +0000 (UTC) (envelope-from marcus@freebsd.org) Received: from av-tac-rtp.cisco.com (hen.cisco.com [64.102.19.198]) by mx1.freebsd.org (Postfix) with ESMTP id 35FE28FC17; Tue, 24 Aug 2010 21:50:42 +0000 (UTC) X-TACSUNS: Virus Scanned Received: from rooster.cisco.com (localhost.cisco.com [127.0.0.1]) by av-tac-rtp.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLogoJ021345; Tue, 24 Aug 2010 17:50:42 -0400 (EDT) Received: from fruit-rollup.marcuscom.com (jclarke-pc.cisco.com [172.18.254.236]) by rooster.cisco.com (8.13.8+Sun/8.13.8) with ESMTP id o7OLofE1023268; Tue, 24 Aug 2010 17:50:41 -0400 (EDT) Message-ID: <4C743EB1.60608@freebsd.org> Date: Tue, 24 Aug 2010 17:50:41 -0400 From: Joe Marcus Clarke Organization: FreeBSD, Inc. User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 MIME-Version: 1.0 To: Hans Petter Selasky References: <4C66C4BC.4040504@janh.de> <4C7435AA.50805@freebsd.org> <4C7435DE.7060106@freebsd.org> <201008242317.37648.hselasky@freebsd.org> In-Reply-To: <201008242317.37648.hselasky@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-multimedia@freebsd.org, me@janh.de, kde@freebsd.org, Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Aug 2010 21:50:43 -0000 On 8/24/10 5:17 PM, Hans Petter Selasky wrote: > On Tuesday 24 August 2010 23:13:02 Joe Marcus Clarke wrote: >> Oh, and webcamd's rc.d script will need to be updated to depend on hald. > > That's a problem, because then we need to make devd rc-script depend on hald > too. That can't happen as hald requires devd for device hotplug updates. If webcamd is calling hal-device, why does devd need to depend on hald? Joe -- Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome From owner-freebsd-multimedia@FreeBSD.ORG Wed Aug 25 07:28:25 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61C3B106566B; Wed, 25 Aug 2010 07:28:25 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe03.swip.net [212.247.154.65]) by mx1.freebsd.org (Postfix) with ESMTP id 5C5E68FC15; Wed, 25 Aug 2010 07:28:23 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=tumaaA6jyRO6uOJXwJ9zBqfKx0+WtA7m4Qh1fZXYtZM= c=1 sm=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=EePm1JbKptIs49ezEdcA:9 a=M5zq-a1HLVbINvOLIwNwCZ-KIWIA:4 a=wPNLvfGTeEIA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:117 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe03.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 11332822; Wed, 25 Aug 2010 09:28:20 +0200 Received-SPF: softfail receiver=mailfe03.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: Joe Marcus Clarke Date: Wed, 25 Aug 2010 09:24:27 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <201008242317.37648.hselasky@freebsd.org> <4C743EB1.60608@freebsd.org> In-Reply-To: <4C743EB1.60608@freebsd.org> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'(; _IjlA: hGE..Ew, XAQ*o#\/M~SC=S1-f9{EzRfT'|Hhll5Q]ha5Bt-s|oTlKMusi:1e[wJl}kd}GR Z0adGx-x_0zGbZj'e(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008250924.27854.hselasky@freebsd.org> Cc: freebsd-multimedia@freebsd.org, me@janh.de, kde@freebsd.org, Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Aug 2010 07:28:25 -0000 On Tuesday 24 August 2010 23:50:41 Joe Marcus Clarke wrote: > On 8/24/10 5:17 PM, Hans Petter Selasky wrote: > > On Tuesday 24 August 2010 23:13:02 Joe Marcus Clarke wrote: > >> Oh, and webcamd's rc.d script will need to be updated to depend on hald. > > > > That's a problem, because then we need to make devd rc-script depend on > > hald too. > > That can't happen as hald requires devd for device hotplug updates. If > webcamd is calling hal-device, why does devd need to depend on hald? > I didn't know that. Then it should be Ok. --HPS From owner-freebsd-multimedia@FreeBSD.ORG Wed Aug 25 21:46:45 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 251091065695; Wed, 25 Aug 2010 21:46:45 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 95B3C8FC13; Wed, 25 Aug 2010 21:46:44 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id 27E971E00076; Wed, 25 Aug 2010 23:46:43 +0200 (CEST) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.4/8.14.3) with ESMTP id o7PLffaU009221; Wed, 25 Aug 2010 23:41:41 +0200 (CEST) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.4/8.14.3/Submit) id o7PLffTi009220; Wed, 25 Aug 2010 23:41:41 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Wed, 25 Aug 2010 23:41:41 +0200 To: Joe Marcus Clarke Message-ID: <20100825214141.GA8685@triton8.kn-bremen.de> References: <4C66C4BC.4040504@janh.de> <201008230914.30762.hselasky@freebsd.org> <20100824202118.GA38687@triton8.kn-bremen.de> <201008242304.54247.hselasky@freebsd.org> <4C7435AA.50805@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4C7435AA.50805@freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: me@janh.de, kde@freebsd.org, Hans Petter Selasky , Juergen Lock , freebsd-multimedia@freebsd.org, gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Aug 2010 21:46:45 -0000 On Tue, Aug 24, 2010 at 05:12:10PM -0400, Joe Marcus Clarke wrote: > On 8/24/10 5:04 PM, Hans Petter Selasky wrote: > > On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: > >> #! /bin/sh > >> # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 > >> hal-device --add usb_device_2304_21f_noserial_dvb_0 < >> dvb.device = '/dev/dvb/adapter0/demux0' (string) > >> info.capabilities = {'dvb'} (string list) > >> info.category = 'dvb' (string) > >> info.parent = > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > >> info.product = 'DVB Device' (string) > >> info.subsystem = 'dvb' (string) > >> EOF > >> hal-device --add usb_device_2304_21f_noserial_dvb_1 < >> dvb.device = '/dev/dvb/adapter0/dvr0' (string) > >> info.capabilities = {'dvb'} (string list) > >> info.category = 'dvb' (string) > >> info.parent = > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > >> info.product = 'DVB Device' (string) > >> info.subsystem = 'dvb' (string) > >> EOF > >> hal-device --add usb_device_2304_21f_noserial_dvb_2 < > > > Hi, > > > > Could you have changed this into "execve()" calls (man execve) and add these > > to webcamd.c whenever cuse_dev_create() is called? Also for /dev/videoX > > entries. Then we don't need to patch HAL? > > Yeah, if webcamd can notify hal that new dvb and v4l devices are > available (and what those devices' capabilities are) then we can remove > the patches from hal. Ok I now made that an extra process (so it can open() /dev/videoX normally and also that way webcamd itself doesn't have to link libhal and possible problems with fork() and threads are avoided), webcamd then just feeds it the device nodes on stdin. Untested with v4l devices since I don't have one here, and I also built the helper manually for now and put it into PATH. And the code can still be cleaned up... helper built as: cc -o webcamd-hal-helper -Wall webcamd-hal-helper.c $(pkg-config --cflags hal) $(pkg-config --libs hal) -I/usr/local/include Patch also at: http://people.freebsd.org/~nox/tmp/webcamd-hal.patch HTH, :) Juergen Index: webcamd.c =================================================================== --- webcamd.c (revision 1621) +++ webcamd.c (working copy) @@ -37,6 +37,11 @@ #include +#ifndef HALHELPER +/* Helper process that feeds webcamd cuse4bsd device nodes into hal */ +#define HALHELPER "webcamd-hal-helper" +#endif + static cuse_open_t v4b_open; static cuse_close_t v4b_close; static cuse_read_t v4b_read; @@ -76,6 +81,9 @@ static int do_fork = 0; static int do_realtime = 1; static struct pidfh *local_pid = NULL; +#ifdef HALHELPER +static FILE *fp_halhelper = NULL; +#endif char global_fw_prefix[128] = {"/boot/modules"}; @@ -309,6 +317,13 @@ printf("Creating /dev/"); printf(devnames[n / F_V4B_SUBDEV_MAX], temp); printf("\n"); +#ifdef HALHELPER + if (fp_halhelper) { + fprintf(fp_halhelper, "/dev/"); + fprintf(fp_halhelper, devnames[n / F_V4B_SUBDEV_MAX], temp); + fprintf(fp_halhelper, "\n"); + } +#endif ndev++; } @@ -354,6 +369,10 @@ pidfile_remove(local_pid); local_pid = NULL; } +#ifdef HALHELPER + if (fp_halhelper) + pclose(fp_halhelper); +#endif } int @@ -375,6 +394,24 @@ pidfile_write(local_pid); } +#ifdef HALHELPER + snprintf(buf, sizeof(buf), "%d", bus); + setenv("HAL_PROP_USB_BUS_NUMBER", buf, 1); + snprintf(buf, sizeof(buf), "%d", addr); + setenv("HAL_PROP_USB_PORT_NUMBER", buf, 1); + snprintf(buf, sizeof(buf), "%d", 0); + setenv("HAL_PROP_USB_INTERFACE_NUMBER", buf, 1); + + if ((fp_halhelper = popen(HALHELPER, "w")) == NULL) { + /* XXX */ + return (EEXIST); + } + /* Use line buffering */ + setvbuf(fp_halhelper, (char *)NULL, _IOLBF, 0); + /* Keep going if helper exits (e.g. because hal is not running...) */ + signal(SIGPIPE, SIG_IGN); +#endif + printf("Attached ugen%d.%d[%d] to cuse unit %d\n", bus, addr, index, u_videodev); --- /dev/null 2010-08-25 23:11:00.000000000 +0200 +++ webcamd-hal-helper.c 2010-08-25 22:32:04.000000000 +0200 @@ -0,0 +1,303 @@ +/*************************************************************************** + * CVSID: $Id$ + * + * webcamd-hal-helper.c : Notify hal of webcamd cuse4bsd device nodes + * + * build as: + * cc -o webcamd-hal-helper -Wall webcamd-hal-helper.c $(pkg-config --cflags hal) $(pkg-config --libs hal) -I/usr/local/include + * + * Uses code from... + * + * probe-video4linux.c : Probe video4linux devices + * Adapted for FreeBSD by : Joe Marcus Clarke + * + * Copyright (C) 2007 Nokia Corporation + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + **************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hal/libhal.h" + +#define DEBUG + +#ifdef DEBUG +#define h_info printf +#else +#define h_info(...) /* */ +#endif + +typedef struct { + char *udi; + char *real_udi; +} new_dev_t; + +static char * +find_usb_udi (LibHalContext *ctx, int bus, int addr) +{ + int i, num_devices; + + char **u_devs = libhal_manager_find_device_string_match + (ctx, "info.bus", "usb_device", &num_devices, NULL); + + if (!u_devs || !num_devices) + return NULL; + + for (i = 0; i < num_devices; ++i) { + if (libhal_device_get_property_int(ctx, u_devs[i], + "usb_device.bus_number", NULL) == bus && + libhal_device_get_property_int(ctx, u_devs[i], + "usb_device.port_number", NULL) == addr) + return u_devs[i]; + } + return NULL; +} + +int +main (int argc, char **argv) +{ + int ret = 1; + int fd = -1; + int bus = -1; + int addr = -1; + int intf = -1; + int dvbindex = 0; + char *device_file = NULL; + char *busstr; + char *addrstr; + char *intfstr; + struct video_capability v1cap; + struct v4l2_capability v2cap; + + DBusError error; + DBusConnection *conn; + LibHalContext *hal_ctx; + LibHalChangeSet *cset; + + busstr = getenv ("HAL_PROP_USB_BUS_NUMBER"); + if (! busstr) + goto out; + addrstr = getenv ("HAL_PROP_USB_PORT_NUMBER"); + if (! addrstr) + goto out; + intfstr = getenv ("HAL_PROP_USB_INTERFACE_NUMBER"); + if (! intfstr) + goto out; + + bus = atoi (busstr); + addr = atoi (addrstr); + intf = atoi (intfstr); + + if (intf != 0) + goto out; + + dbus_error_init(&error); + if (!(conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) { + fprintf(stderr, "error: dbus_bus_get: %s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + return 2; + } + + if (!(hal_ctx = libhal_ctx_new())) return 3; + if (!libhal_ctx_set_dbus_connection(hal_ctx, conn)) return 4; + if (!libhal_ctx_init(hal_ctx, &error)) { + if (dbus_error_is_set(&error)) { + fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message); + dbus_error_free (&error); + } + fprintf (stderr, "Could not initialise connection to hald.\n" + "Normally this means the HAL daemon (hald) is not running or not ready.\n"); + return 5; + } + + char *hal_udi = find_usb_udi (hal_ctx, bus, addr); + if (hal_udi == NULL) { + fprintf(stderr, "Device not found in hal: usb bus %d, address %d\n", + bus, addr); + goto out; + } + + char line[0x1000]; + + /* give a meaningful process title for ps(1) */ + setproctitle("%s (bus: %i, addr: %i)", hal_udi, bus, addr); + + while (42) { + size_t len; + + device_file = fgets(line, sizeof line, stdin); + if (device_file == NULL || !(len = strlen(device_file)) || + device_file[len - 1] != '\n') + break; + device_file[len - 1] = '\0'; + + if (!strncmp(device_file, "/dev/video", sizeof "/dev/video" - 1)) { + cset = libhal_device_new_changeset (hal_udi); + + h_info ("Doing probe-video4linux-hal for %s (udi=%s)\n", device_file, hal_udi); + + fd = open (device_file, O_RDONLY); + if (fd < 0) { + fprintf(stderr, "Cannot open %s: %s\n", device_file, strerror (errno)); + goto out; + } + + if (ioctl (fd, VIDIOC_QUERYCAP, &v2cap) == 0) { + libhal_changeset_set_property_string (cset, + "video4linux.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "video4linux"); + libhal_changeset_set_property_string (cset, + "video4linux.version", "2"); + + libhal_changeset_set_property_string (cset, + "info.product", (const char *)v2cap.card); + + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux", NULL); + if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_capture", NULL); + } if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_output", NULL); + } if ((v2cap.capabilities & V4L2_CAP_VIDEO_OVERLAY) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_overlay", NULL); + } if ((v2cap.capabilities & V4L2_CAP_AUDIO) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.audio", NULL); + } if ((v2cap.capabilities & V4L2_CAP_TUNER) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.tuner", NULL); + } if ((v2cap.capabilities & V4L2_CAP_RADIO) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.radio", NULL); + } + } else { + h_info (("ioctl VIDIOC_QUERYCAP failed\n")); + + if (ioctl (fd, VIDIOCGCAP, &v1cap) == 0) { + libhal_changeset_set_property_string (cset, + "video4linux.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "video4linux"); + libhal_changeset_set_property_string (cset, + "video4linux.version", "1"); + + libhal_changeset_set_property_string (cset, + "info.product", v1cap.name); + + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux", NULL); + if ((v1cap.type & VID_TYPE_CAPTURE) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_capture", NULL); + } if ((v1cap.type & VID_TYPE_OVERLAY) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_overlay", NULL); + } if (v1cap.audios > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.audio", NULL); + } if ((v1cap.type & VID_TYPE_TUNER) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.tuner", NULL); + } + } else { + h_info (("ioctl VIDIOCGCAP failed; not a v4l device\n")); + } + } + + libhal_device_commit_changeset (hal_ctx, cset, NULL); + libhal_device_free_changeset (cset); + + close (fd); + } else if (!strncmp(device_file, "/dev/dvb/adapter", sizeof "/dev/dvb/adapter" - 1)) { + char *dvbudi; + new_dev_t new_dev; + + if (asprintf(&dvbudi, "%s_dvb_%d", hal_udi, dvbindex++) == -1) { + perror("asprintf"); + goto out; + } + new_dev.udi = strdup(dvbudi); + int dev_exists = libhal_device_exists(hal_ctx, dvbudi, NULL); + + if (dev_exists) { + new_dev.real_udi = strdup(new_dev.udi); + } else { + new_dev.real_udi = libhal_new_device(hal_ctx, &error); + + if (!new_dev.real_udi) { + fprintf(stderr, "%s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + free(new_dev.real_udi); + + ret = 22; + goto out; + } + + //printf("tmp udi: %s\n", new_dev.real_udi); + } + + cset = libhal_device_new_changeset (new_dev.real_udi); + + h_info ("Doing add-dvb-hal for %s (udi=%s)\n", device_file, new_dev.udi); + libhal_changeset_set_property_string (cset, + "dvb.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "dvb"); + libhal_changeset_set_property_string (cset, + "info.parent", hal_udi); + libhal_changeset_set_property_string (cset, + "info.product", "DVB Device"); + libhal_changeset_set_property_string (cset, + "info.subsystem", "dvb"); + libhal_device_add_capability (hal_ctx, new_dev.real_udi, "dvb", NULL); + + libhal_device_commit_changeset (hal_ctx, cset, NULL); + libhal_device_free_changeset (cset); + + if (!dev_exists && + !libhal_device_commit_to_gdl(hal_ctx, new_dev.real_udi, new_dev.udi, &error)) { + fprintf(stderr, "%s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + free(new_dev.real_udi); + + ret = 23; + goto out; + } + } else { + printf("Unhandled device %s\n", device_file); + } + } + + ret = 0; + +out: + if (fd >= 0) + close (fd); + + return ret; +} From owner-freebsd-multimedia@FreeBSD.ORG Wed Aug 25 21:54:03 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 954C61065698; Wed, 25 Aug 2010 21:54:03 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe08.swip.net [212.247.154.225]) by mx1.freebsd.org (Postfix) with ESMTP id 8AD438FC17; Wed, 25 Aug 2010 21:54:02 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=A9i2abt5RTkKnggEwMfGtMsecE7KHeOxIgKEeBb2Lvo= c=1 sm=1 a=ivRC_LpHlL4A:10 a=8nJEP1OIZ-IA:10 a=M8b_wTzEtboA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=6I5d2MoRAAAA:8 a=8Op3mD2uhU6W424Vr4cA:9 a=zU0t65C9BywTRlbtPIIA:7 a=HC-w9wRa-t_72QU5SBF_ozPX-bwA:4 a=wPNLvfGTeEIA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:117 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe08.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 11128868; Wed, 25 Aug 2010 23:53:57 +0200 Received-SPF: softfail receiver=mailfe08.swip.net; client-ip=188.126.201.140; envelope-from=hselasky@freebsd.org From: Hans Petter Selasky To: freebsd-multimedia@freebsd.org Date: Wed, 25 Aug 2010 23:50:05 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-STABLE; KDE/4.4.5; amd64; ; ) References: <4C66C4BC.4040504@janh.de> <4C7435AA.50805@freebsd.org> <20100825214141.GA8685@triton8.kn-bremen.de> In-Reply-To: <20100825214141.GA8685@triton8.kn-bremen.de> X-Face: +~\`s("[*|O,="7?X@L.elg*F"OA\I/3%^p8g?ab%RN'(; _IjlA: hGE..Ew, XAQ*o#\/M~SC=S1-f9{EzRfT'|Hhll5Q]ha5Bt-s|oTlKMusi:1e[wJl}kd}GR Z0adGx-x_0zGbZj'e(Y[(UNle~)8CQWXW@:DX+9)_YlB[tIccCPN$7/L' MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201008252350.05592.hselasky@freebsd.org> Cc: me@janh.de, kde@freebsd.org, Joe Marcus Clarke , Juergen Lock , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Aug 2010 21:54:03 -0000 On Wednesday 25 August 2010 23:41:41 Juergen Lock wrote: > On Tue, Aug 24, 2010 at 05:12:10PM -0400, Joe Marcus Clarke wrote: > > On 8/24/10 5:04 PM, Hans Petter Selasky wrote: > > > On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: > > >> #! /bin/sh > > >> # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 > > >> hal-device --add usb_device_2304_21f_noserial_dvb_0 < > >> dvb.device = '/dev/dvb/adapter0/demux0' (string) > > >> info.capabilities = {'dvb'} (string list) > > >> info.category = 'dvb' (string) > > >> info.parent = > > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > > >> info.product = 'DVB Device' (string) > > >> info.subsystem = 'dvb' (string) > > >> EOF > > >> hal-device --add usb_device_2304_21f_noserial_dvb_1 < > >> dvb.device = '/dev/dvb/adapter0/dvr0' (string) > > >> info.capabilities = {'dvb'} (string list) > > >> info.category = 'dvb' (string) > > >> info.parent = > > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > > >> info.product = 'DVB Device' (string) > > >> info.subsystem = 'dvb' (string) > > >> EOF > > >> hal-device --add usb_device_2304_21f_noserial_dvb_2 < > > > > > Hi, > > > > > > Could you have changed this into "execve()" calls (man execve) and add > > > these to webcamd.c whenever cuse_dev_create() is called? Also for > > > /dev/videoX entries. Then we don't need to patch HAL? > > > > Yeah, if webcamd can notify hal that new dvb and v4l devices are > > available (and what those devices' capabilities are) then we can remove > > the patches from hal. > > Ok I now made that an extra process (so it can open() /dev/videoX > normally and also that way webcamd itself doesn't have to link > libhal and possible problems with fork() and threads are avoided), > webcamd then just feeds it the device nodes on stdin. > > Untested with v4l devices since I don't have one here, and > I also built the helper manually for now and put it into PATH. > And the code can still be cleaned up... > > helper built as: > > cc -o webcamd-hal-helper -Wall webcamd-hal-helper.c $(pkg-config --cflags > hal) $(pkg-config --libs hal) -I/usr/local/include > > Patch also at: > > http://people.freebsd.org/~nox/tmp/webcamd-hal.patch > > HTH, :) > Juergen Looks good. Could you also register an atexit() function, that cleans up the HAL registry when webcamd exits? --HPS From owner-freebsd-multimedia@FreeBSD.ORG Thu Aug 26 18:38:03 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5475F10656A6; Thu, 26 Aug 2010 18:38:03 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 78F6A8FC17; Thu, 26 Aug 2010 18:38:02 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id 754531E0017B; Thu, 26 Aug 2010 20:38:01 +0200 (CEST) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.4/8.14.3) with ESMTP id o7QIZhfN039371; Thu, 26 Aug 2010 20:35:43 +0200 (CEST) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.4/8.14.3/Submit) id o7QIZhxG039370; Thu, 26 Aug 2010 20:35:43 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Thu, 26 Aug 2010 20:35:43 +0200 To: Hans Petter Selasky Message-ID: <20100826183543.GA39319@triton8.kn-bremen.de> References: <4C66C4BC.4040504@janh.de> <4C7435AA.50805@freebsd.org> <20100825214141.GA8685@triton8.kn-bremen.de> <201008252350.05592.hselasky@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201008252350.05592.hselasky@freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: me@janh.de, kde@freebsd.org, Juergen Lock , freebsd-multimedia@freebsd.org, Joe Marcus Clarke , gnome@freebsd.org Subject: Re: kaffeine-1.0 and webcamd based DVB-T? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Aug 2010 18:38:03 -0000 On Wed, Aug 25, 2010 at 11:50:05PM +0200, Hans Petter Selasky wrote: > On Wednesday 25 August 2010 23:41:41 Juergen Lock wrote: > > On Tue, Aug 24, 2010 at 05:12:10PM -0400, Joe Marcus Clarke wrote: > > > On 8/24/10 5:04 PM, Hans Petter Selasky wrote: > > > > On Tuesday 24 August 2010 22:21:18 Juergen Lock wrote: > > > >> #! /bin/sh > > > >> # add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0 > > > >> hal-device --add usb_device_2304_21f_noserial_dvb_0 < > > >> dvb.device = '/dev/dvb/adapter0/demux0' (string) > > > >> info.capabilities = {'dvb'} (string list) > > > >> info.category = 'dvb' (string) > > > >> info.parent = > > > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > > > >> info.product = 'DVB Device' (string) > > > >> info.subsystem = 'dvb' (string) > > > >> EOF > > > >> hal-device --add usb_device_2304_21f_noserial_dvb_1 < > > >> dvb.device = '/dev/dvb/adapter0/dvr0' (string) > > > >> info.capabilities = {'dvb'} (string list) > > > >> info.category = 'dvb' (string) > > > >> info.parent = > > > >> '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial' (string) > > > >> info.product = 'DVB Device' (string) > > > >> info.subsystem = 'dvb' (string) > > > >> EOF > > > >> hal-device --add usb_device_2304_21f_noserial_dvb_2 < > > > > > > > Hi, > > > > > > > > Could you have changed this into "execve()" calls (man execve) and add > > > > these to webcamd.c whenever cuse_dev_create() is called? Also for > > > > /dev/videoX entries. Then we don't need to patch HAL? > > > > > > Yeah, if webcamd can notify hal that new dvb and v4l devices are > > > available (and what those devices' capabilities are) then we can remove > > > the patches from hal. > > > > Ok I now made that an extra process (so it can open() /dev/videoX > > normally and also that way webcamd itself doesn't have to link > > libhal and possible problems with fork() and threads are avoided), > > webcamd then just feeds it the device nodes on stdin. > > > > Untested with v4l devices since I don't have one here, and > > I also built the helper manually for now and put it into PATH. > > And the code can still be cleaned up... > > > > helper built as: > > > > cc -o webcamd-hal-helper -Wall webcamd-hal-helper.c $(pkg-config --cflags > > hal) $(pkg-config --libs hal) -I/usr/local/include > > > > Patch also at: > > > > http://people.freebsd.org/~nox/tmp/webcamd-hal.patch > > > > HTH, :) > > Juergen > > Looks good. > > Could you also register an atexit() function, that cleans up the HAL registry > when webcamd exits? Ok, done. (Tho that already happened automagically when unplugging the device because the /dev/dvb/adapterX/* are registered as childs of the usb device's hal entry...) Patch also at: http://people.freebsd.org/~nox/tmp/webcamd-hal.patch Index: webcamd.c =================================================================== --- webcamd.c (revision 1621) +++ webcamd.c (working copy) @@ -37,6 +37,11 @@ #include +#ifndef HALHELPER +/* Helper process that feeds webcamd cuse4bsd device nodes into hal */ +#define HALHELPER "webcamd-hal-helper" +#endif + static cuse_open_t v4b_open; static cuse_close_t v4b_close; static cuse_read_t v4b_read; @@ -76,6 +81,9 @@ static int do_fork = 0; static int do_realtime = 1; static struct pidfh *local_pid = NULL; +#ifdef HALHELPER +static FILE *fp_halhelper = NULL; +#endif char global_fw_prefix[128] = {"/boot/modules"}; @@ -309,6 +317,13 @@ printf("Creating /dev/"); printf(devnames[n / F_V4B_SUBDEV_MAX], temp); printf("\n"); +#ifdef HALHELPER + if (fp_halhelper) { + fprintf(fp_halhelper, "/dev/"); + fprintf(fp_halhelper, devnames[n / F_V4B_SUBDEV_MAX], temp); + fprintf(fp_halhelper, "\n"); + } +#endif ndev++; } @@ -354,6 +369,10 @@ pidfile_remove(local_pid); local_pid = NULL; } +#ifdef HALHELPER + if (fp_halhelper) + pclose(fp_halhelper); +#endif } int @@ -375,6 +394,24 @@ pidfile_write(local_pid); } +#ifdef HALHELPER + snprintf(buf, sizeof(buf), "%d", bus); + setenv("HAL_PROP_USB_BUS_NUMBER", buf, 1); + snprintf(buf, sizeof(buf), "%d", addr); + setenv("HAL_PROP_USB_PORT_NUMBER", buf, 1); + snprintf(buf, sizeof(buf), "%d", 0); + setenv("HAL_PROP_USB_INTERFACE_NUMBER", buf, 1); + + if ((fp_halhelper = popen(HALHELPER, "w")) == NULL) { + /* XXX */ + return (EEXIST); + } + /* Use line buffering */ + setvbuf(fp_halhelper, (char *)NULL, _IOLBF, 0); + /* Keep going if helper exits (e.g. because hal is not running...) */ + signal(SIGPIPE, SIG_IGN); +#endif + printf("Attached ugen%d.%d[%d] to cuse unit %d\n", bus, addr, index, u_videodev); --- /dev/null 2010-08-26 20:22:01.000000000 +0200 +++ webcamd-hal-helper.c 2010-08-26 20:00:07.000000000 +0200 @@ -0,0 +1,348 @@ +/*************************************************************************** + * CVSID: $Id$ + * + * webcamd-hal-helper.c : Notify hal of webcamd cuse4bsd device nodes + * (yes this is a little ugly and could use some cleanup but it works + * and I'm lazy :) + * Hacked together by : Juergen Lock + * + * Takes env vars HAL_PROP_USB_BUS_NUMBER, HAL_PROP_USB_PORT_NUMBER, + * and HAL_PROP_USB_INTERFACE_NUMBER to identify the usb device in + * question, reads names of v4l/dvb device nodes to add to hal on + * stdin, and accepts -n as arg in which case it doesn't clean up + * (remove new device nodes from hal) on eof/exit/signal. + * + * Build as: + * cc -o webcamd-hal-helper -Wall webcamd-hal-helper.c $(pkg-config --cflags hal) $(pkg-config --libs hal) -I/usr/local/include + * + * Uses code from... + * + * probe-video4linux.c : Probe video4linux devices + * Adapted for FreeBSD by : Joe Marcus Clarke + * + * Copyright (C) 2007 Nokia Corporation + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + **************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hal/libhal.h" + +#define DEBUG + +#ifdef DEBUG +#define h_info printf +#else +#define h_info(...) /* */ +#endif + +typedef struct { + char *udi; + char *real_udi; +} new_dev_t; + +static char *hal_udi = NULL; +static int dvbindex = 0; +static LibHalContext *hal_ctx = NULL; + +static char * +find_usb_udi (LibHalContext *ctx, int bus, int addr) +{ + int i, num_devices; + + char **u_devs = libhal_manager_find_device_string_match + (ctx, "info.bus", "usb_device", &num_devices, NULL); + + if (!u_devs || !num_devices) + return NULL; + + for (i = 0; i < num_devices; ++i) { + if (libhal_device_get_property_int(ctx, u_devs[i], + "usb_device.bus_number", NULL) == bus && + libhal_device_get_property_int(ctx, u_devs[i], + "usb_device.port_number", NULL) == addr) + return u_devs[i]; + } + return NULL; +} + +static void +cleanup () +{ + int i; + + if (!hal_udi || !dvbindex) + return; + for (i = 0; i < dvbindex; ++i) { + char *dvbudi; + + if (asprintf(&dvbudi, "%s_dvb_%d", hal_udi, i) == -1) { + perror("asprintf"); + break; + } + h_info ("Removing %s\n", dvbudi); + libhal_remove_device(hal_ctx, dvbudi, NULL); + free(dvbudi); + } + dvbindex = 0; +} + +static void +termsig (int unused) +{ + cleanup(); + exit(0); +} + +int +main (int argc, char **argv) +{ + int ret = 1; + int fd = -1; + int bus = -1; + int addr = -1; + int intf = -1; + char *device_file = NULL; + char *busstr; + char *addrstr; + char *intfstr; + struct video_capability v1cap; + struct v4l2_capability v2cap; + + DBusError error; + DBusConnection *conn; + LibHalChangeSet *cset; + + busstr = getenv ("HAL_PROP_USB_BUS_NUMBER"); + if (! busstr) + goto out; + addrstr = getenv ("HAL_PROP_USB_PORT_NUMBER"); + if (! addrstr) + goto out; + intfstr = getenv ("HAL_PROP_USB_INTERFACE_NUMBER"); + if (! intfstr) + goto out; + + bus = atoi (busstr); + addr = atoi (addrstr); + intf = atoi (intfstr); + + if (intf != 0) + goto out; + + dbus_error_init(&error); + if (!(conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) { + fprintf(stderr, "error: dbus_bus_get: %s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + return 2; + } + + if (!(hal_ctx = libhal_ctx_new())) return 3; + if (!libhal_ctx_set_dbus_connection(hal_ctx, conn)) return 4; + if (!libhal_ctx_init(hal_ctx, &error)) { + if (dbus_error_is_set(&error)) { + fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message); + dbus_error_free (&error); + } + fprintf (stderr, "Could not initialise connection to hald.\n" + "Normally this means the HAL daemon (hald) is not running or not ready.\n"); + return 5; + } + + hal_udi = find_usb_udi (hal_ctx, bus, addr); + if (hal_udi == NULL) { + fprintf(stderr, "Device not found in hal: usb bus %d, address %d\n", + bus, addr); + goto out; + } + + char line[0x1000]; + + /* give a meaningful process title for ps(1) */ + setproctitle("%s (bus: %i, addr: %i)", hal_udi, bus, addr); + + if (argc < 2 || strcmp(argv[1], "-n")) { + atexit(&cleanup); + signal(SIGTERM, &termsig); + signal(SIGINT, &termsig); + } + + while (42) { + size_t len; + + device_file = fgets(line, sizeof line, stdin); + if (device_file == NULL || !(len = strlen(device_file)) || + device_file[len - 1] != '\n') + break; + device_file[len - 1] = '\0'; + + if (!strncmp(device_file, "/dev/video", sizeof "/dev/video" - 1)) { + cset = libhal_device_new_changeset (hal_udi); + + h_info ("Doing probe-video4linux-hal for %s (udi=%s)\n", device_file, hal_udi); + + fd = open (device_file, O_RDONLY); + if (fd < 0) { + fprintf(stderr, "Cannot open %s: %s\n", device_file, strerror (errno)); + goto out; + } + + if (ioctl (fd, VIDIOC_QUERYCAP, &v2cap) == 0) { + libhal_changeset_set_property_string (cset, + "video4linux.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "video4linux"); + libhal_changeset_set_property_string (cset, + "video4linux.version", "2"); + + libhal_changeset_set_property_string (cset, + "info.product", (const char *)v2cap.card); + + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux", NULL); + if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_capture", NULL); + } if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_output", NULL); + } if ((v2cap.capabilities & V4L2_CAP_VIDEO_OVERLAY) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_overlay", NULL); + } if ((v2cap.capabilities & V4L2_CAP_AUDIO) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.audio", NULL); + } if ((v2cap.capabilities & V4L2_CAP_TUNER) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.tuner", NULL); + } if ((v2cap.capabilities & V4L2_CAP_RADIO) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.radio", NULL); + } + } else { + h_info (("ioctl VIDIOC_QUERYCAP failed\n")); + + if (ioctl (fd, VIDIOCGCAP, &v1cap) == 0) { + libhal_changeset_set_property_string (cset, + "video4linux.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "video4linux"); + libhal_changeset_set_property_string (cset, + "video4linux.version", "1"); + + libhal_changeset_set_property_string (cset, + "info.product", v1cap.name); + + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux", NULL); + if ((v1cap.type & VID_TYPE_CAPTURE) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_capture", NULL); + } if ((v1cap.type & VID_TYPE_OVERLAY) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.video_overlay", NULL); + } if (v1cap.audios > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.audio", NULL); + } if ((v1cap.type & VID_TYPE_TUNER) > 0) { + libhal_device_add_capability (hal_ctx, hal_udi, "video4linux.tuner", NULL); + } + } else { + h_info (("ioctl VIDIOCGCAP failed; not a v4l device\n")); + } + } + + libhal_device_commit_changeset (hal_ctx, cset, NULL); + libhal_device_free_changeset (cset); + + close (fd); + } else if (!strncmp(device_file, "/dev/dvb/adapter", sizeof "/dev/dvb/adapter" - 1)) { + char *dvbudi; + new_dev_t new_dev; + + if (asprintf(&dvbudi, "%s_dvb_%d", hal_udi, dvbindex++) == -1) { + perror("asprintf"); + goto out; + } + new_dev.udi = strdup(dvbudi); + int dev_exists = libhal_device_exists(hal_ctx, dvbudi, NULL); + + if (dev_exists) { + new_dev.real_udi = strdup(new_dev.udi); + } else { + new_dev.real_udi = libhal_new_device(hal_ctx, &error); + + if (!new_dev.real_udi) { + fprintf(stderr, "%s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + free(new_dev.real_udi); + + ret = 22; + goto out; + } + + //printf("tmp udi: %s\n", new_dev.real_udi); + } + + cset = libhal_device_new_changeset (new_dev.real_udi); + + h_info ("Doing add-dvb-hal for %s (udi=%s)\n", device_file, new_dev.udi); + libhal_changeset_set_property_string (cset, + "dvb.device", device_file); + libhal_changeset_set_property_string (cset, + "info.category", "dvb"); + libhal_changeset_set_property_string (cset, + "info.parent", hal_udi); + libhal_changeset_set_property_string (cset, + "info.product", "DVB Device"); + libhal_changeset_set_property_string (cset, + "info.subsystem", "dvb"); + libhal_device_add_capability (hal_ctx, new_dev.real_udi, "dvb", NULL); + + libhal_device_commit_changeset (hal_ctx, cset, NULL); + libhal_device_free_changeset (cset); + + if (!dev_exists && + !libhal_device_commit_to_gdl(hal_ctx, new_dev.real_udi, new_dev.udi, &error)) { + fprintf(stderr, "%s: %s\n", error.name, error.message); + LIBHAL_FREE_DBUS_ERROR (&error); + free(new_dev.real_udi); + + ret = 23; + goto out; + } + } else { + printf("Unhandled device %s\n", device_file); + } + } + + ret = 0; + +out: + if (fd >= 0) + close (fd); + + return ret; +} From owner-freebsd-multimedia@FreeBSD.ORG Sat Aug 28 21:00:20 2010 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2E6F910656A6 for ; Sat, 28 Aug 2010 21:00:20 +0000 (UTC) (envelope-from buganini@gmail.com) Received: from mail-iw0-f182.google.com (mail-iw0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id F0FAB8FC12 for ; Sat, 28 Aug 2010 21:00:19 +0000 (UTC) Received: by iwn36 with SMTP id 36so4163727iwn.13 for ; Sat, 28 Aug 2010 14:00:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=nX2UrL8wrvr+aZuAOozd2OHG4zFIsILFaAp9Zaw8eso=; b=TGe970ThQJPV1zk/JZMmmBmNhlVZVGhTvVOEVnV2W0badF2PevI/j9peEjMKIEtliS ELERNhJ5m0Lfle9p4JBHRC228bIgLRnAhmnh25hcC0mekLuk09K0Ga6uo+ZT7UGVy0ZW GHBfK+nu0MfbpvxcVqzKiNLsDZdmofYBiOX+g= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=sRVw92x3nu22+kO7C30v7lXImbpYyP1WK9TzKHo9IG5D4WKuzDUOWTDZIRx4ea2kdF JPXNyZGGs1IvbRuvF43u7TR652WFDuR3bkltGB79ZuFCQY6aX60/maAfsW5E6K3NeViK UCkijbuwm2LKJ3ErK8p79doo1gTX6X376xIhQ= MIME-Version: 1.0 Received: by 10.231.36.77 with SMTP id s13mr2795969ibd.190.1283027495409; Sat, 28 Aug 2010 13:31:35 -0700 (PDT) Received: by 10.231.10.202 with HTTP; Sat, 28 Aug 2010 13:31:35 -0700 (PDT) Date: Sat, 28 Aug 2010 20:31:35 +0000 Message-ID: From: Buganini To: freebsd-multimedia@freebsd.org Content-Type: text/plain; charset=UTF-8 Subject: bitperfect make incorrect sample rate in oss X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Aug 2010 21:00:20 -0000 Hi, when I set dev.pcm.0.bitperfect=1 audacious and flashplayer play faster than normal, and sound pitch become higher audacious can be fixed by using OSS4 output plugin, but there is no such settings for flashplayer. It that expected behavior? Thanks Buganini