From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 59ED313825A for ; Mon, 16 May 2016 09:39:50 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2099114239; Mon, 16 May 2016 09:39:40 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 91B44E07FA for ; Mon, 16 May 2016 09:39:38 +0000 (UTC) Received: from smtpd.astrali.lan (unknown [37.120.59.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: hd_brummy) by smtp.gentoo.org (Postfix) with ESMTPSA id 2C961340DF5 for ; Mon, 16 May 2016 09:39:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by server.astrali.lan (Postfix) with ESMTP id 5E3F043C71 for ; Mon, 16 May 2016 11:39:31 +0200 (CEST) X-Virus-Scanned: amavisd-new at astrali.lan Received: from smtpd.astrali.lan ([127.0.0.1]) by localhost (server.astrali.lan [127.0.0.1]) (amavisd-new, port 10024) with LMTP id xWejyGF9HxfN for ; Mon, 16 May 2016 11:39:23 +0200 (CEST) Received: from [192.168.3.9] (newmain.astrali.lan [192.168.3.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtpd.astrali.lan (Postfix) with ESMTPS id CC43A41291 for ; Mon, 16 May 2016 11:39:23 +0200 (CEST) To: gentoo-dev@lists.gentoo.org From: Joerg Bornkessel Subject: [gentoo-dev] eclass/vdr-plugin-2.eclass EAPI=6 changes, plz review X-Enigmail-Draft-Status: N1110 Message-ID: <5739954B.4030102@astrali.lan> Date: Mon, 16 May 2016 11:39:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090607050400070003020809" X-Archives-Salt: 3f384a16-c6d2-4ffe-9b59-7552a0a29f36 X-Archives-Hash: be5bc4c765f5ddabdee499e93bf3b920 This is a multi-part message in MIME format. --------------090607050400070003020809 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hallo, after my last commit disaster, i bring my changes to review before i break some things again. - Added changes to make it work with eapi=6 - removed some unneeded code parts (never they was used in any ebuilds, i though they was integrated to make the eclass more flexibel,...) -- vdr-plugin-2.eclass 2016-05-15 22:03:21.807417485 +0200 +++ vdr-plugin-2.eclass.new 2016-05-15 22:01:10.000000000 +0200 @@ -1,4 +1,4 @@ -# Copyright 1999-2015 Gentoo Foundation +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -90,7 +90,7 @@ # @CODE # Applying your own local/user patches: -# This is done by using the +# This is done by using the # (EAPI = 4,5) epatch_user() function of the eutils.eclass, # (EAPI = 6) eapply_user function integrated in EAPI = 6. # Simply add your patches into one of these directories: @@ -104,10 +104,7 @@ inherit flag-o-matic toolchain-funcs unpacker case ${EAPI:-0} in - 4|5) - ;; - 6) - ewarn "EAPI 6 support for test purpose only, plz report bugs to vdr@gentoo.org" + 4|5|6) ;; *) die "EAPI ${EAPI} unsupported." ;; @@ -156,6 +153,7 @@ # EBUILD=${CATEGORY}/${PN} # EBUILD_V=${PVR} # EOT +# obsolet? fix me later... { echo "VDRPLUGIN_DB=1" echo "CREATOR=ECLASS" @@ -232,6 +230,7 @@ #sed -i Makefile \ # -e "s:^DVBDIR.*$:DVBDIR = ${DVB_INCLUDE_DIR}:" \ # -e 's:-I$(DVBDIR)/include:-I$(DVBDIR):' + # obsolet? fix me later... if ! grep -q APIVERSION Makefile; then ebegin " Converting to APIVERSION" @@ -289,7 +288,7 @@ linguas_support() { # Patching Makefile for linguas support. # Only locales, enabled through the LINGUAS (make.conf) variable will be -# "compiled" and installed. +# compiled and installed. einfo "Patching for Linguas support" einfo "available Languages for ${P} are:" @@ -311,12 +310,9 @@ vdr_i18n() { # i18n handling was deprecated since >=media-video/vdr-1.5.9, # finally with >=media-video/vdr-1.7.27 it has been dropped entirely and some -# plugins will fail to "compile" because they're still using the old variant. +# plugins will fail to compile because they're still using the old variant. # Simply remove the i18n.o object from Makefile (OBJECT) and # remove "static const tI18nPhrase*" from i18n.h. -# -# Plugins that are still using the old method will be pmasked until they're -# fixed or in case of maintainer timeout they'll be masked for removal. gettext_missing @@ -391,6 +387,7 @@ # Plugins need to be compiled with position independent code, otherwise linking # VDR against it will fail + # depricated if fi, as we have only >=vdr-2 in the tree, fix me later... if has_version ">=media-video/vdr-1.7.13"; then append-cxxflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE fi @@ -500,7 +497,9 @@ die "vdr-plugin-2_src_prepare not called!" fi - [[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" + [[ ${EAPI} == [45] ]] && [[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" + [[ ${EAPI} == "6" ]] && [[ ${PATCHES[@]} ]] && eapply "${PATCHES[@]}" + debug-print "$FUNCNAME: applying user patches" vdr-plugin-2_src_util prepare @@ -522,14 +521,12 @@ fi cd "${S}" - BUILD_TARGETS=${BUILD_TARGETS:-${VDRPLUGIN_MAKE_TARGET:-all }} - emake ${BUILD_PARAMS} \ - ${BUILD_TARGETS} \ - LOCALEDIR="${TMP_LOCALE_DIR}" \ - LOCDIR="${TMP_LOCALE_DIR}" \ - LIBDIR="${S}" \ - TMPDIR="${T}" \ - || die "emake failed" + emake all ${BUILD_PARAMS} \ + LOCALEDIR="${TMP_LOCALE_DIR}" \ + LOCDIR="${TMP_LOCALE_DIR}" \ + LIBDIR="${S}" \ + TMPDIR="${T}" \ + || die "emake all failed" ;; esac @@ -570,12 +567,11 @@ local SOFILE_STRING=$(grep SOFILE Makefile) if [[ -n ${SOFILE_STRING} ]]; then - BUILD_TARGETS=${BUILD_TARGETS:-${VDRPLUGIN_MAKE_TARGET:-install }} - einstall ${BUILD_PARAMS} \ - ${BUILD_TARGETS} \ - TMPDIR="${T}" \ - DESTDIR="${D}" \ - || die "einstall (makefile target) failed" + emake install \ + ${BUILD_PARAMS} \ + TMPDIR="${T}" \ + DESTDIR="${D}" \ + || die "emake install (makefile target) failed" else dev_check "Plugin use still the old Makefile handling" insinto "${VDR_PLUGIN_DIR}" @@ -609,9 +605,14 @@ create_header_checksum_file ${vdr_plugin_list} create_plugindb_file ${vdr_plugin_list} - local docfile - for docfile in README* HISTORY CHANGELOG; do - [[ -f ${docfile} ]] && dodoc ${docfile} + local commondoc=( README* HISTORY CHANGELOG ) + for docfile in "${commondoc[@]}"; do + if [[ ${EAPI} == "6" ]]; then + local DOCS="${DOCS} ${docfile}" + [[ -f ${docfile} ]] && einstalldocs "${DOCS[@]}" + else + [[ -f ${docfile} ]] && dodoc ${docfile} + fi done # if VDR_CONFD_FILE is empty and ${FILESDIR}/confd exists take it Attached: vdr-plugin-2.eclass vdr-plugin-2.eclass.diff vdr-plugin-2.eclass.new Cheers /dev/joerg -- Joerg Bornkessel GnuPG Key: 0x93EB5F4DAA5832A1 Fingerprint: 0E0A A1EE 1DF4 41D7 A3F5 21C2 93EB 5F4D AA58 32A1 --------------090607050400070003020809 Content-Type: text/plain; charset=UTF-8; name="vdr-plugin-2.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vdr-plugin-2.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDE1IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRJZCQKCiMgQEVDTEFTUzogdmRyLXBsdWdpbi0yLmVjbGFzcwojIEBNQUlOVEFJTkVSOgoj IEdlbnRvbyBWRFIgUHJvamVjdCA8dmRyQGdlbnRvby5vcmc+CiMgQEFVVEhPUjoKIyBNYXR0 aGlhcyBTY2h3YXJ6b3R0IDx6emFtQGdlbnRvby5vcmc+CiMgSm9lcmcgQm9ybmtlc3NlbCA8 aGRfYnJ1bW15QGdlbnRvby5vcmc+CiMgQ2hyaXN0aWFuIFJ1cHBlcnQgPGlkbDByQGdlbnRv by5vcmc+CiMgKHVuZGlzY2xvc2VkIGNvbnRyaWJ1dG9ycykKIyBAQkxVUkI6IGNvbW1vbiB2 ZHIgcGx1Z2luIGVidWlsZCBmdW5jdGlvbnMKIyBAREVTQ1JJUFRJT046CiMgRWNsYXNzIGZv ciBlYXNpbmcgbWFpbnRlbmFuY2Ugb2YgdmRyIHBsdWdpbiBlYnVpbGRzCgojIEBFQ0xBU1Mt VkFSSUFCTEU6IFZEUl9DT05GRF9GSUxFCiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJ T046CiMgQSBwbHVnaW4gY29uZmlnIGZpbGUgY2FuIGJlIHNwZWNpZmllZCB0aHJvdWdoIHRo ZSAkVkRSX0NPTkZEX0ZJTEUgdmFyaWFibGUsIGl0CiMgZGVmYXVsdHMgdG8gJHtGSUxFU0RJ Un0vY29uZmQuIEVhY2ggY29uZmlnIGZpbGUgd2lsbCBiZSBpbnN0YWxsZWQgYXMgZS5nLgoj ICR7RH0vZXRjL2NvbmYuZC92ZHIuJHtWRFJQTFVHSU59CgojIEBFQ0xBU1MtVkFSSUFCTEU6 IFZEUl9SQ0FERE9OX0ZJTEUKIyBAREVGQVVMVF9VTlNFVAojIEBERVNDUklQVElPTjoKIyBJ bnN0YWxsaW5nIHJjLWFkZG9uIGZpbGVzIGlzIGJhc2ljYWxseSB0aGUgc2FtZSBhcyBmb3Ig cGx1Z2luIGNvbmZpZyBmaWxlcwojIChzZWUgYWJvdmUpLCBpdCdzIGp1c3QgdXNpbmcgdGhl ICRWRFJfUkNBRERPTl9GSUxFIHZhcmlhYmxlIGluc3RlYWQuCiMgVGhlIGRlZmF1bHQgdmFs dWUgd2hlbiAkVkRSX1JDQURET05fRklMRSBpcyB1bmRlZmluZWQgaXM6CiMgJHtGSUxFU0RJ Un0vcmMtYWRkb24uc2ggYW5kIHdpbGwgYmUgaW5zdGFsbGVkIGFzCiMgJHtWRFJfUkNfRElS fS9wbHVnaW4tJHtWRFJQTFVHSU59LnNoCiMKIyBUaGUgcmMtYWRkb24gZmlsZXMgd2lsbCBi ZSBzb3VyY2VkIGJ5IHRoZSBzdGFydHNjcmlwdCB3aGVuIHRoZSBzcGVjaWZpYyBwbHVnaW4K IyBoYXMgYmVlbiBlbmFibGVkLgojIHJjLWFkZG9uIGZpbGVzIG1heSBiZSB1c2VkIHRvIHBy ZXBhcmUgZXZlcnl0aGluZyB0aGF0IGlzIG5lY2Vzc2FyeSBmb3IgdGhlCiMgcGx1Z2luIHN0 YXJ0L3N0b3AsIGxpa2UgcGFzc2luZyBleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQg c28gb24uCiMKIyBOT1RFOiByYy1hZGRvbiBmaWxlcyBtdXN0IGJlIHZhbGlkIHNoZWxsIHNj cmlwdHMhCgojIEBFQ0xBU1MtVkFSSUFCTEU6IEdFTlRPT19WRFJfQ09ORElUSU9OQUwKIyBA REVGQVVMVF9VTlNFVAojIEBERVNDUklQVElPTjoKIyBUaGlzIGlzIGEgaGFjayBmb3IgZWJ1 aWxkcyBsaWtlIHZkci14aW5lbGlib3V0cHV0IHRoYXQgd2FudCB0bwojIGNvbmRpdGlvbmFs bHkgaW5zdGFsbCBhIHZkci1wbHVnaW4KCiMgQEVDTEFTUy1WQVJJQUJMRTogUE9fU1VCRElS CiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJT046CiMgQnkgZGVmYXVsdCwgdHJhbnNs YXRpb24gYXJlIGZvdW5kIGluIiR7U30iL3BvIGJ1dCB0aGlzCiMgZGVmYXVsdCBjYW4gYmUg b3ZlcnJpZGRlbiBieSBkZWZpbmluZyBQT19TVUJESVIuCiMKIyBFeGFtcGxlOgojIEBDT0RF CiMgUE9fU1VCRElSPSJibGEgZm9vL2JsYSIKIyBAQ09ERQoKIyBARUNMQVNTLVZBUklBQkxF OiBWRFJfTUFJTlRBSU5FUl9NT0RFCiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJT046 CiMgT3V0cHV0IGZyb20gZnVuY3Rpb24gZGV2X2NoZWNrIGlmIGl0IGlzIGRlZmluZWQgaW4g ZWJ1aWxkIG9yIGVjbGFzcywKIyBoZWxwZnVsbCBmb3IgZ2VudG9vIGVidWlsZCBkZXZlbG9w ZXIKIwojIFRoaXMgd2lsbCBhbHNvIGluc3RhbGwgYW55IGRlYnVnIGZpbGVzIGluIC91c3Iv c2hhcmUvdmRyL21haW50YWluZXItZGF0YQojCiMgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBz ZXQgYnkgdXNlciBpbiBtYWtlLmNvbmYuIEVidWlsZHMgbXVzdCBub3Qgc2V0CiMgaXQuCiMK IyBWRFJfTUFJTlRBSU5FUl9NT0RFPTEKCiMgQEZVTkNUSU9OOiBmaXhfdmRyX2xpYnNpX2lu Y2x1ZGUKIyBAREVTQ1JJUFRJT046CiMgUGx1Z2lucyBmYWlsZWQgb24gY29tcGlsZSB3aXRo IHdyb25nIHBhdGggb2YgbGlic2kgaW5jbHVkZXMsCiMgdGhpcyBjYW4gYmUgZml4ZWQgYnkg J2Z1bmN0aW9uICsgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZXMnCiMKIyBFeGFtcGxl OgojIEBDT0RFCiMgZml4X3Zkcl9saWJzaV9pbmNsdWRlIGJsYS5jIGZvby5jCiMgQENPREUK CiMgQEZVTkNUSU9OOiByZW1vdmVfaTE4bl9pbmNsdWRlCiMgQERFU0NSSVBUSU9OOgojIENv bXBpbGUgd2lsbCBmYWlsIGlmIHBsdWdpbiBzdGlsbCB1c2UgdGhlIG9sZCBpMThuIGxhbmd1 YWdlIGhhbmRsaW5nLAojIG1vc3QgcGFydHMgYXJlIGZpeGVkIGJ5IHZkci1wbHVnaW4tMi5l Y2xhc3MgaW50ZXJuYWwgZnVuY3Rpb25zIGl0c2VsZi4KIyBSZW1vdmUgdW5uZWVkZWQgaTE4 Lm4gaW5jbHVkZXMgZnJvbSBmaWxlcywgaWYgdGhleSBhcmUgc3RpbGwgd3JvbmcgdGhlcmUs CiMgdGhpcyBjYW4gYmUgZml4ZWQgYnkgJ2Z1bmN0aW9uICsgc3BhY2Ugc2VwYXJhdGVkIGxp c3Qgb2YgZmlsZXMiCiMKIyBFeGFtcGxlOgojIEBDT0RFCiMgcmVtb3ZlX2kxOG5faW5jbHVk ZSBibGEubiBmb28ubgojIEBDT0RFCgojIEFwcGx5aW5nIHlvdXIgb3duIGxvY2FsL3VzZXIg cGF0Y2hlczoKIyBUaGlzIGlzIGRvbmUgYnkgdXNpbmcgdGhlIAojIChFQVBJID0gNCw1KSBl cGF0Y2hfdXNlcigpIGZ1bmN0aW9uIG9mIHRoZSBldXRpbHMuZWNsYXNzLAojIChFQVBJID0g NikgZWFwcGx5X3VzZXIgZnVuY3Rpb24gaW50ZWdyYXRlZCBpbiBFQVBJID0gNi4KIyBTaW1w bHkgYWRkIHlvdXIgcGF0Y2hlcyBpbnRvIG9uZSBvZiB0aGVzZSBkaXJlY3RvcmllczoKIyAv ZXRjL3BvcnRhZ2UvcGF0Y2hlcy88Q0FURUdPUlk+LzxQRnxQfFBOPi8KIyBRdW90ZTogd2hl cmUgdGhlIGZpcnN0IG9mIHRoZXNlIHRocmVlIGRpcmVjdG9yaWVzIHRvIGV4aXN0IHdpbGwg YmUgdGhlIG9uZSB0bwojIHVzZSwgaWdub3JpbmcgYW55IG1vcmUgZ2VuZXJhbCBkaXJlY3Rv cmllcyB3aGljaCBtaWdodCBleGlzdCBhcyB3ZWxsLgojCiMgRm9yIG1vcmUgZGV0YWlscyBh Ym91dCBpdCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIGV1dGlscy5jbGFzcy4KCltbICR7 RUFQSX0gPT0gWzQ1XSBdXSAmJiBpbmhlcml0IGV1dGlscyBtdWx0aWxpYgppbmhlcml0IGZs YWctby1tYXRpYyB0b29sY2hhaW4tZnVuY3MgdW5wYWNrZXIKCmNhc2UgJHtFQVBJOi0wfSBp bgoJNHw1KQoJOzsKCTYpCglld2FybiAiRUFQSSA2IHN1cHBvcnQgZm9yIHRlc3QgcHVycG9z ZSBvbmx5LCBwbHogcmVwb3J0IGJ1Z3MgdG8gdmRyQGdlbnRvby5vcmciCgk7OwoJKikgZGll ICJFQVBJICR7RUFQSX0gdW5zdXBwb3J0ZWQuIgoJOzsKZXNhYwoKRVhQT1JUX0ZVTkNUSU9O UyBwa2dfc2V0dXAgc3JjX3VucGFjayBzcmNfcHJlcGFyZSBzcmNfY29tcGlsZSBzcmNfaW5z dGFsbCBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybSBwa2dfY29uZmlnCgpJVVNFPSIiCgojIE5h bWUgb2YgdGhlIHBsdWdpbiBzdHJpcHBlZCBmcm9tIGFsbCB2ZHJwbHVnaW4tLCB2ZHItIGFu ZCAtY3ZzIHByZS0gYW5kIHBvc3RmaXhlcwpWRFJQTFVHSU49IiR7UE4vI3ZkcnBsdWdpbi0v fSIKVkRSUExVR0lOPSIke1ZEUlBMVUdJTi8jdmRyLS99IgpWRFJQTFVHSU49IiR7VkRSUExV R0lOLyUtY3ZzL30iCgpERVNDUklQVElPTj0idmRyIFBsdWdpbjogJHtWRFJQTFVHSU59IChi YXNlZCBvbiB2ZHItcGx1Z2luLTIuZWNsYXNzKSIKCiMgV29ya3MgaW4gbW9zdCBjYXNlcwpT PSIke1dPUktESVJ9LyR7VkRSUExVR0lOfS0ke1BWfSIKCiMgZGVwZW5kIG9uIGhlYWRlcnMg Zm9yIERWQi1kcml2ZXIKQ09NTU9OX0RFUEVORD0iPj1tZWRpYS10di9nZW50b28tdmRyLXNj cmlwdHMtMC40LjIiCgpERVBFTkQ9IiR7Q09NTU9OX0RFUEVORH0KCXZpcnR1YWwvbGludXh0 di1kdmItaGVhZGVycyIKUkRFUEVORD0iJHtDT01NT05fREVQRU5EfQoJPj1hcHAtZXNlbGVj dC9lc2VsZWN0LXZkci0wLjAuMiIKCmlmIFtbICIke0dFTlRPT19WRFJfQ09ORElUSU9OQUw6 LW5vfSIgPSAieWVzIiBdXTsgdGhlbgoJSVVTRT0iJHtJVVNFfSB2ZHIiCglERVBFTkQ9InZk cj8gKCAke0RFUEVORH0gKSIKCVJERVBFTkQ9InZkcj8gKCAke1JERVBFTkR9ICkiCmZpCgoj IE5ldyBtZXRob2Qgb2Ygc3RvcmluZyBwbHVnaW5kYgojICAgQ2FsbGVkIGZyb20gc3JjX2lu c3RhbGwKIyAgIGZpbGUgbWFpbnRhaW5lZCBieSBub3JtYWwgcG9ydGFnZS1tZXRob2RzCmNy ZWF0ZV9wbHVnaW5kYl9maWxlKCkgewoJbG9jYWwgTkVXX1ZEUlBMVUdJTkRCX0RJUj0vdXNy L3NoYXJlL3Zkci92ZHJwbHVnaW4tcmVidWlsZC8KCWxvY2FsIERCX0ZJTEU9IiR7TkVXX1ZE UlBMVUdJTkRCX0RJUn0vJHtDQVRFR09SWX0tJHtQRn0iCglpbnNpbnRvICIke05FV19WRFJQ TFVHSU5EQl9ESVJ9IgoKIwlCVUc6IHBvcnRhZ2UtMi4xLjRfcmM5IHdpbGwgZGVsZXRlIHRo ZSBFQlVJTEQ9IGxpbmUsIHNvIHdlIGNhbm5vdCB1c2UgdGhpcyBjb2RlLgojCWNhdCA8PC1F T1QgPiAiJHtEfS8ke0RCX0ZJTEV9IgojCQlWRFJQTFVHSU5fREI9MQojCQlDUkVBVE9SPUVD TEFTUwojCQlFQlVJTEQ9JHtDQVRFR09SWX0vJHtQTn0KIwkJRUJVSUxEX1Y9JHtQVlJ9CiMJ RU9UCgl7CgkJZWNobyAiVkRSUExVR0lOX0RCPTEiCgkJZWNobyAiQ1JFQVRPUj1FQ0xBU1Mi CgkJZWNobyAiRUJVSUxEPSR7Q0FURUdPUll9LyR7UE59IgoJCWVjaG8gIkVCVUlMRF9WPSR7 UFZSfSIKCQllY2hvICJQTFVHSU5TPVwiJEBcIiIKCX0gPiAiJHtEfS8ke0RCX0ZJTEV9Igp9 CgpjcmVhdGVfaGVhZGVyX2NoZWNrc3VtX2ZpbGUoKSB7CgkjIERhbmdlcjogTm90IHVzaW5n ICRST09UIGhlcmUsIGFzIGNvbXBpbGUgd2lsbCBhbHNvIG5vdCB1c2UgaXQgISEhCgkjIElm IHZkciBpbiAkUk9PVCBhbmQgLyBkaWZmZXIsIHBsdWdpbnMgd2lsbCBub3QgcnVuIGFueXdh eQoKCWxvY2FsIENIS1NVTT0iaGVhZGVyLW1kNS12ZHIiCgoJaWYgW1sgLWYgJHtWRFJfQ0hF Q0tTVU1fRElSfS9oZWFkZXItbWQ1LXZkciBdXTsgdGhlbgoJCWNwICIke1ZEUl9DSEVDS1NV TV9ESVJ9L2hlYWRlci1tZDUtdmRyIiAiJHtDSEtTVU19IgoJZWxpZiB0eXBlIC1wIG1kNXN1 bSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KCQkoCgkJCWNkICIke1ZEUl9JTkNMVURFX0RJUn0i CgkJCW1kNXN1bSAqLmggbGlic2kvKi5ofExDX0FMTD1DIHNvcnQgLS1rZXk9MgoJCSkgPiAi JHtDSEtTVU19IgoJZWxzZQoJCWRpZSAiQ291bGQgbm90IGNyZWF0ZSBtZDUgY2hlY2tzdW0g b2YgaGVhZGVycyIKCWZpCgoJaW5zaW50byAiJHtWRFJfQ0hFQ0tTVU1fRElSfSIKCWxvY2Fs IHBfbmFtZQoJZm9yIHBfbmFtZTsgZG8KCQluZXdpbnMgIiR7Q0hLU1VNfSIgImhlYWRlci1t ZDUtJHtwX25hbWV9IgoJZG9uZQp9CgpmaXhfdmRyX2xpYnNpX2luY2x1ZGUoKSB7CglkZXZf Y2hlY2sgIkZpeGluZyBpbmNsdWRlIG9mIGxpYnNpLWhlYWRlcnMiCglsb2NhbCBmCglmb3Ig ZjsgZG8KCQlzZWQgLWkgIiR7Zn0iIFwKCQkJLWUgJy8jaW5jbHVkZS9zOiJcKC4qbGlic2ku KlwpIjo8XDE+OicgXAoJCQktZSAnLyNpbmNsdWRlL3M6PC4qXChsaWJzaS8uKlwpPjo8dmRy L1wxPjonCglkb25lCn0KCnZkcl9wYXRjaG1ha2VmaWxlKCkgewoJZWluZm8gIlBhdGNoaW5n IE1ha2VmaWxlIgoJW1sgLWUgTWFrZWZpbGUgXV0gfHwgZGllICJNYWtlZmlsZSBvZiBwbHVn aW4gY2FuIG5vdCBiZSBmb3VuZCEiCgljcCBNYWtlZmlsZSAiJHtXT1JLRElSfSIvTWFrZWZp bGUuYmVmb3JlCgoJIyBwbHVnaW4gbWFrZWZpbGVzIHVzZSBWRFJESVIgaW4gc3RyYW5nZSB3 YXlzCgkjIGFzc3VtcHRpb25zOgoJIyAgIDEuICQoVkRSRElSKSBjb250YWlucyBNYWtlLmNv bmZpZwoJIyAgIDIuICQoVkRSRElSKSBjb250YWlucyBjb25maWcuaAoJIyAgIDMuICQoVkRS RElSKS9pbmNsdWRlL3ZkciBjb250YWlucyB0aGUgaGVhZGVycwoJIyAgIDQuICQoVkRSRElS KSBjb250YWlucyBtYWluIHZkciBNYWtlZmlsZQoJIyAgIDUuICQoVkRSRElSKS9sb2NhbGUg ZXhpc3RzCgkjICAgNi4gJChWRFJESVIpIGFsbG93cyB0byBhY2Nlc3MgdmRyIHNvdXJjZSBm aWxlcwoJIwoJIyBXZSBvbmx5IGhhdmUgb25lIGRpcmVjdG9yeSAoZm9yIG5vdyAvdXNyL2lu Y2x1ZGUvdmRyKSwKCSMgdGhhdCBjb250YWlucyB2ZHItaGVhZGVycyBhbmQgTWFrZS5jb25m aWcuCgkjIFRvIHNhdGlzZnkgMS0zIHdlIGRvIHRoaXM6CgkjICAgU2V0IFZEUkRJUj0vdXNy L2luY2x1ZGUvdmRyCgkjICAgU2V0IFZEUklOQ0RJUj0vdXNyL2luY2x1ZGUKCSMgICBDaGFu Z2UgJChWRFJESVIpL2luY2x1ZGUgdG8gJChWRFJJTkNESVIpCgoJc2VkIC1pIE1ha2VmaWxl IFwKCQktZSAiczpeVkRSRElSLiokOlZEUkRJUiA9ICR7VkRSX0lOQ0xVREVfRElSfToiIFwK CQktZSAiL15WRFJESVIvYSBWRFJJTkNESVIgPSAke1ZEUl9JTkNMVURFX0RJUiUvdmRyfSIg XAoJCS1lICcvVkRSSU5DRElSLio9LyFzOiQoVkRSRElSKS9pbmNsdWRlOiQoVkRSSU5DRElS KTonIFwKCQlcCgkJLWUgJ3M6LUkkKERWQkRJUikvaW5jbHVkZTo6JyBcCgkJLWUgJ3M6LUkk KERWQkRJUik6OicKCgkjIG1heSBiZSBuZWVkZWQgZm9yIG11bHRpcHJvdG86Cgkjc2VkIC1p IE1ha2VmaWxlIFwKCSMJLWUgInM6XkRWQkRJUi4qJDpEVkJESVIgPSAke0RWQl9JTkNMVURF X0RJUn06IiBcCgkjCS1lICdzOi1JJChEVkJESVIpL2luY2x1ZGU6LUkkKERWQkRJUik6JwoK CWlmICEgZ3JlcCAtcSBBUElWRVJTSU9OIE1ha2VmaWxlOyB0aGVuCgkJZWJlZ2luICIgIENv bnZlcnRpbmcgdG8gQVBJVkVSU0lPTiIKCQlzZWQgLWkgTWFrZWZpbGUgXAoJCQktZSAnczpe QVBJVkVSU0lPTiA9IDpBUElWRVJTSU9OID89IDonIFwKCQkJLWUgJ3M6JChMSUJESVIpLyRA LiQoVkRSVkVSU0lPTik6JChMSUJESVIpLyRALiQoQVBJVkVSU0lPTik6JyBcCgkJCS1lICcv VkRSVkVSU0lPTiA9L2FcQVBJVkVSU0lPTiA9ICQoc2hlbGwgc2VkIC1uZSAnIiciJy9kZWZp bmUgQVBJVkVSU0lPTi9zL14uKiJcXCguKlxcKSIuKiQkL1xcMS9wJyInIicgJChWRFJESVIp L2NvbmZpZy5oKScKCQllZW5kICQ/CglmaQoKCSMgQ29ycmVjdGluZyBDb21waWxlLUZsYWdz CgkjIERvIG5vdCBvdmVyd3JpdGUgQ1hYRkxBR1MsIGFkZCBMREZMQUdTIGlmIG1pc3NpbmcK CXNlZCAtaSBNYWtlZmlsZSBcCgkJLWUgJy9eQ1hYRkxBR1NbWzpzcGFjZTpdXSo9L3MvPS8/ PS8nIFwKCQktZSAnL0xERkxBR1MvIXM6LXNoYXJlZDokKExERkxBR1MpIC1zaGFyZWQ6JwoK CSMgRGlzYWJsaW5nIGZpbGUgc3RyaXBwaW5nLCB0aGUgcGFja2FnZSBtYW5hZ2VyIHRha2Vz IGNhcmUgb2YgaXQKCXNlZCAtaSBNYWtlZmlsZSBcCgkJLWUgJy9ALipzdHJpcC9kJyBcCgkJ LWUgJy9zdHJpcCBcJChMSUJESVIpXC9cJEAvZCcgXAoJCS1lICdzL1NUUklQLio9LiokL1NU UklQID0gdHJ1ZS8nCgoJIyBVc2UgYSBmaWxlIGluc3RlYWQgb2YgYSB2YXJpYWJsZSBhcyBz aW5nbGUtc3RlcHBpbmcgdmlhIGVidWlsZAoJIyBkZXN0cm95cyBlbnZpcm9ubWVudC4KCXRv dWNoICIke1dPUktESVJ9Ii8udmRyLXBsdWdpbl9tYWtlZmlsZV9wYXRjaGVkCn0KCmRldl9j aGVjaygpIHsKCSMgQSBsb3QgdXNlZnVsIGRlYnVnIGluZm9zCgkjIHNldCBWRFJfTUFJTlRB SU5FUl9NT0RFPSIxIiBpbiBtYWtlLmNvbmYKCWlmIFtbIC1uICR7VkRSX01BSU5UQUlORVJf TU9ERX0gXV07IHRoZW4KCQllZXJyb3IgIlx0IEdlbnRvbyBEZXZlbG9wZXIgRGVidWc6ICRA IgoJZmkKfQoKZ2V0dGV4dF9taXNzaW5nKCkgewoJIyBwbHVnaW5zIHdpdGhvdXQgY29udmVy dGluZyB0byBnZXR0ZXh0CgoJbG9jYWwgR0VUVEVYVF9NSVNTSU5HPSQoIGdyZXAgeGdldHRl eHQgTWFrZWZpbGUgKQoJaWYgW1sgLXogJHtHRVRURVhUX01JU1NJTkd9IF1dOyB0aGVuCgkJ ZGV2X2NoZWNrICJQbHVnaW4gaXNuJ3QgY29udmVydGVkIHRvIGdldHRleHQgaGFuZGxpbmcg XG4iCglmaQp9CgpkZXRlY3RfcG9fZGlyKCkgewoJIyBoZWxwZXIgZnVuY3Rpb24KCglbWyAt ZiBwbyBdXSAmJiBsb2NhbCBwb19kaXI9IiR7U30iCglsb2NhbCBwb19zdWJkaXI9KCAke1N9 LyR7UE9fU1VCRElSfSApCglsb2NhbCBmCgoJcG9maWxlX2Rpcj0oICR7cG9fZGlyfSAke3Bv X3N1YmRpclsqXX0gKQp9CgpsaW5ndWFzX3N1cHBvcnQoKSB7CiMJUGF0Y2hpbmcgTWFrZWZp bGUgZm9yIGxpbmd1YXMgc3VwcG9ydC4KIwlPbmx5IGxvY2FsZXMsIGVuYWJsZWQgdGhyb3Vn aCB0aGUgTElOR1VBUyAobWFrZS5jb25mKSB2YXJpYWJsZSB3aWxsIGJlCiMJImNvbXBpbGVk IiBhbmQgaW5zdGFsbGVkLgoKCWVpbmZvICJQYXRjaGluZyBmb3IgTGluZ3VhcyBzdXBwb3J0 IgoJZWluZm8gImF2YWlsYWJsZSBMYW5ndWFnZXMgZm9yICR7UH0gYXJlOiIKCglkZXRlY3Rf cG9fZGlyCgoJZm9yIGYgaW4gJHtwb2ZpbGVfZGlyWypdfTsgZG8KCQlQTFVHSU5fTElOR1VB Uz0kKCBscyAke2Z9L3BvIC0taWdub3JlPSIqLnBvdCIgfCBzZWQgLWUgInM6LnBvOjpnIiB8 IGN1dCAtZF8gLWYxIHwgdHIgXFxcMDEyICcgJyApCgkJZWluZm8gIkxJTkdVQVM9XCIke1BM VUdJTl9MSU5HVUFTfVwiIgoKCQlzZWQgLWkgJHtmfS9NYWtlZmlsZSBcCgkJCS1lICdzOlwk KHdpbGRjYXJkW1s6c3BhY2U6XV0qXCQoUE9ESVIpL1wqLnBvKTpcJChmb3JlYWNoIGRpcixc JChMSU5HVUFTKSxcJCh3aWxkY2FyZCBcJChQT0RJUilcL1wkKGRpcilcKi5wbykpOicgXAoJ CQl8fCBkaWUgInNlZCBmYWlsZWQgZm9yIExpbmd1YXMiCglkb25lCgoJc3RyaXAtbGluZ3Vh cyAke1BMVUdJTl9MSU5HVUFTfSBlbgp9Cgp2ZHJfaTE4bigpIHsKIyAJaTE4biBoYW5kbGlu ZyB3YXMgZGVwcmVjYXRlZCBzaW5jZSA+PW1lZGlhLXZpZGVvL3Zkci0xLjUuOSwKIwlmaW5h bGx5IHdpdGggPj1tZWRpYS12aWRlby92ZHItMS43LjI3IGl0IGhhcyBiZWVuIGRyb3BwZWQg ZW50aXJlbHkgYW5kIHNvbWUKIwlwbHVnaW5zIHdpbGwgZmFpbCB0byAiY29tcGlsZSIgYmVj YXVzZSB0aGV5J3JlIHN0aWxsIHVzaW5nIHRoZSBvbGQgdmFyaWFudC4KIwlTaW1wbHkgcmVt b3ZlIHRoZSBpMThuLm8gb2JqZWN0IGZyb20gTWFrZWZpbGUgKE9CSkVDVCkgYW5kCiMJcmVt b3ZlICJzdGF0aWMgY29uc3QgdEkxOG5QaHJhc2UqIiBmcm9tIGkxOG4uaC4KIwojCVBsdWdp bnMgdGhhdCBhcmUgc3RpbGwgdXNpbmcgdGhlIG9sZCBtZXRob2Qgd2lsbCBiZSBwbWFza2Vk IHVudGlsIHRoZXkncmUKIwlmaXhlZCBvciBpbiBjYXNlIG9mIG1haW50YWluZXIgdGltZW91 dCB0aGV5J2xsIGJlIG1hc2tlZCBmb3IgcmVtb3ZhbC4KCglnZXR0ZXh0X21pc3NpbmcKCgls b2NhbCBJMThOX09CSkVDVD0kKCBncmVwIGkxOG4ubyBNYWtlZmlsZSApCglpZiBbWyAtbiAk e0kxOE5fT0JKRUNUfSBdXTsgdGhlbgoKCQlpZiBbWyAiJHtLRUVQX0kxOE5PQkpFQ1Q6LW5v fSIgPSAieWVzIiBdXTsgdGhlbgoJCQlkZXZfY2hlY2sgIkZvcmNlZCB0byBrZWVwIGkxOG4u byIKCQllbHNlCgkJCXNlZCAtaSAiczppMThuLm86OmciIE1ha2VmaWxlCgkJCWRldl9jaGVj ayAiT0JKRUNUIGkxOG4ubyBmb3VuZCIKCQkJZGV2X2NoZWNrICJyZW1vdmVkIHBlciBzZWQg XG4iCgkJZmkKCgllbHNlCgkJZGV2X2NoZWNrICJPQkpFQ1QgaTE4bi5vIG5vdCBmb3VuZCBp biBNYWtlZmlsZSIKCQlkZXZfY2hlY2sgImFsbCBmaW5lIG9yIG1hbnVhbCByZXZpZXcgbmVl ZGVkPyBcbiIKCWZpCgoJbG9jYWwgSTE4Tl9TVFJJTkc9JCggW1sgLWUgaTE4bi5oIF1dICYm IGdyZXAgdEkxOG5QaHJhc2UgaTE4bi5oICkKCWlmIFtbIC1uICR7STE4Tl9TVFJJTkd9IF1d OyB0aGVuCgkJc2VkIC1pICJzOl5leHRlcm5bWzpzcGFjZTpdXSpjb25zdFtbOnNwYWNlOl1d KnRJMThuUGhyYXNlOi8vc3RhdGljIGNvbnN0IHRJMThuUGhyYXNlOiIgaTE4bi5oCgkJZGV2 X2NoZWNrICJvYnNvbGV0ZSB0STE4blBocmFzZSBmb3VuZCIKCQlkZXZfY2hlY2sgImRpc2Fi bGVkIHBlciBzZWQsIHBsZWFzZSByZWNoZWNrIFxuIgoJZWxzZQoJCWRldl9jaGVjayAib2Jz b2xldGUgdEkxOG5QaHJhc2Ugbm90IGZvdW5kLCBmaW5lLi4uIgoJCWRldl9jaGVjayAicGxl YXNlIHJldmlldywgbWF5IGJlIGluIHN1YmRpci4uLiBcbiIKCWZpCn0KCnJlbW92ZV9pMThu X2luY2x1ZGUoKSB7CgkjIHJlbW92ZSB1bmVlZGVkIGkxOC5uIGluY2x1ZGVzCgoJbG9jYWwg ZgoJZm9yIGY7IGRvCgkJc2VkIC1pICIke2Z9IiBcCgkJLWUgInM6XiNpbmNsdWRlW1s6c3Bh Y2U6XV0qXCJpMThuLmhcIjovLzoiCglkb25lCgoJZGV2X2NoZWNrICJyZW1vdmVkIGkxOG4u aCBpbmNsdWRlIGluICR7QH0iCn0KCnZkci1wbHVnaW4tMl9wcmludF9lbmFibGVfY29tbWFu ZCgpIHsKCWxvY2FsIHBfbmFtZSBjPTAgbD0iIgoJZm9yIHBfbmFtZSBpbiAke3Zkcl9wbHVn aW5fbGlzdH07IGRvCgkJYz0kKCggYysxICkpCgkJbD0iJGwgJHtwX25hbWUjdmRyLX0iCglk b25lCgoJZWxvZwoJY2FzZSAkYyBpbgoJMSkJZWxvZyAiSW5zdGFsbGVkIHBsdWdpbiR7bH0i IDs7CgkqKQllbG9nICJJbnN0YWxsZWQgJGMgcGx1Z2luczoke2x9IiA7OwoJZXNhYwoJZWxv ZyAiVG8gYWN0aXZhdGUgYSBwbHVnaW4gZXhlY3V0ZSB0aGlzIGNvbW1hbmQ6IgoJZWxvZyAi XHRlc2VsZWN0IHZkci1wbHVnaW4gZW5hYmxlIDxwbHVnaW5fbmFtZT4gLi4uIgoJZWxvZwp9 CgpoYXNfdmRyKCkgewoJW1sgLWYgIiR7VkRSX0lOQ0xVREVfRElSfSIvY29uZmlnLmggXV0K fQoKIyMgZXhwb3J0ZWQgZnVuY3Rpb25zCgp2ZHItcGx1Z2luLTJfcGtnX3NldHVwKCkgewoJ IyBtaXNzaW5nICR7Y2hvc3R9LSB0YWcKCXRjLWV4cG9ydCBDQyBDWFgKCgkjIC1mUElDIGlz IG5lZWRlZCBmb3Igc2hhcmVkIG9iamVjdHMgb24gc29tZSBwbGF0Zm9ybXMgKGFtZDY0IGFu ZCBvdGhlcnMpCglhcHBlbmQtZmxhZ3MgLWZQSUMKCgkjIFBsdWdpbnMgbmVlZCB0byBiZSBj b21waWxlZCB3aXRoIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUsIG90aGVyd2lzZSBsaW5r aW5nCgkjIFZEUiBhZ2FpbnN0IGl0IHdpbGwgZmFpbAoJaWYgaGFzX3ZlcnNpb24gIj49bWVk aWEtdmlkZW8vdmRyLTEuNy4xMyI7IHRoZW4KCQlhcHBlbmQtY3h4ZmxhZ3MgLURfRklMRV9P RkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0xBUkdFRklMRTY0X1NPVVJD RQoJZmkKCgkjIFdoZXJlIHNob3VsZCB0aGUgcGx1Z2lucyBsaXZlIGluIHRoZSBmaWxlc3lz dGVtCglWRFJfUExVR0lOX0RJUj0kKHBrZy1jb25maWcgLS12YXJpYWJsZT1saWJkaXIgdmRy KQoKCVZEUl9DSEVDS1NVTV9ESVI9IiR7VkRSX1BMVUdJTl9ESVIlL3BsdWdpbnN9L2NoZWNr c3VtcyIKCglWRFJfUkNfRElSPSIvdXNyL3NoYXJlL3Zkci9yY3NjcmlwdCIKCgkjIFBhdGhl cyB0byBpbmNsdWRlcwoJVkRSX0lOQ0xVREVfRElSPSIvdXNyL2luY2x1ZGUvdmRyIgoJRFZC X0lOQ0xVREVfRElSPSIvdXNyL2luY2x1ZGUiCgoJVE1QX0xPQ0FMRV9ESVI9IiR7V09SS0RJ Un0vdG1wLWxvY2FsZSIKCglMT0NESVI9JChwa2ctY29uZmlnIC0tdmFyaWFibGU9bG9jZGly IHZkcikKCglpZiAhIGhhc192ZHI7IHRoZW4KCQkjIHNldCB0byBpbnZhbGlkIHZhbHVlcyB0 byBkZXRlY3QgYWJ1c2VzCgkJVkRSVkVSU0lPTj0iZWNsYXNzX25vX3Zkcl9pbnN0YWxsZWQi CgkJQVBJVkVSU0lPTj0iZWNsYXNzX25vX3Zkcl9pbnN0YWxsZWQiCgoJCWlmIFtbICIke0dF TlRPT19WRFJfQ09ORElUSU9OQUw6LW5vfSIgPSAieWVzIiBdXSAmJiAhIHVzZSB2ZHI7IHRo ZW4KCQkJZWluZm8gIlZEUiBub3QgZm91bmQhIgoJCWVsc2UKCQkJIyBpZiB2ZHIgaXMgcmVx dWlyZWQKCQkJZGllICJWRFIgbm90IGZvdW5kISIKCQlmaQoJCXJldHVybgoJZmkKCglWRFJW RVJTSU9OPSQoYXdrIC1GJyInICcvZGVmaW5lIFZEUlZFUlNJT04vIHtwcmludCAkMn0nICIk e1ZEUl9JTkNMVURFX0RJUn0iL2NvbmZpZy5oKQoJQVBJVkVSU0lPTj0kKHBrZy1jb25maWcg LS12YXJpYWJsZT1hcGl2ZXJzaW9uIHZkcikKCgllaW5mbyAiQ29tcGlsaW5nIGFnYWluc3Qi CgllaW5mbyAiXHR2ZHItJHtWRFJWRVJTSU9OfSBbQVBJIHZlcnNpb24gJHtBUElWRVJTSU9O fV0iCgoJaWYgW1sgLW4gIiR7VkRSX0xPQ0FMX1BBVENIRVNfRElSfSIgXV07IHRoZW4KCQll ZXJyb3IgIlVzaW5nIFZEUl9MT0NBTF9QQVRDSEVTX0RJUiBpcyBkZXByZWNhdGVkISIKCQll ZXJyb3IgIlBsZWFzZSBtb3ZlIGFsbCB5b3VyIHBhdGNoZXMgaW50byIKCQllZXJyb3IgIiR7 RVJPT1R9L2V0Yy9wb3J0YWdlL3BhdGNoZXMvJHtDQVRFR09SWX0vJHtQfSIKCQllZXJyb3Ig ImFuZCByZW1vdmUgb3IgdW5zZXQgdGhlIFZEUl9MT0NBTF9QQVRDSEVTX0RJUiB2YXJpYWJs ZS4iCgkJZGllCglmaQp9Cgp2ZHItcGx1Z2luLTJfc3JjX3V0aWwoKSB7Cgl3aGlsZSBbICIk MSIgXTsgZG8KCQljYXNlICIkMSIgaW4KCQlhbGwpCgkJCXZkci1wbHVnaW4tMl9zcmNfdXRp bCB1bnBhY2sgYWRkX2xvY2FsX3BhdGNoIHBhdGNobWFrZWZpbGUgbGluZ3Vhc19wYXRjaCBp MThuCgkJCTs7CgkJcHJlcGFyZSkKCQkJdmRyLXBsdWdpbi0yX3NyY191dGlsIGFkZF9sb2Nh bF9wYXRjaCBwYXRjaG1ha2VmaWxlIGxpbmd1YXNfcGF0Y2ggaTE4bgoJCQk7OwoJCXVucGFj aykKCQkJdW5wYWNrZXJfc3JjX3VucGFjawoJCQk7OwoJCWFkZF9sb2NhbF9wYXRjaCkKCQkJ Y2QgIiR7U30iIHx8IGRpZSAiQ291bGQgbm90IGNoYW5nZSB0byBwbHVnaW4tc291cmNlLWRp cmVjdG9yeSEiCgkJCWlmIFtbICR7RUFQSX0gPT0gNiBdXTsgdGhlbgoJCQkJZWFwcGx5X3Vz ZXIKCQkJZWxzZQoJCQkJZXBhdGNoX3VzZXIKCQkJZmkKCQkJOzsKCQlwYXRjaG1ha2VmaWxl KQoJCQljZCAiJHtTfSIgfHwgZGllICJDb3VsZCBub3QgY2hhbmdlIHRvIHBsdWdpbi1zb3Vy Y2UtZGlyZWN0b3J5ISIKCQkJdmRyX3BhdGNobWFrZWZpbGUKCQkJOzsKCQlpMThuKQoJCQl2 ZHJfaTE4bgoJCQk7OwoJCWxpbmd1YXNfcGF0Y2gpCgkJCWxpbmd1YXNfc3VwcG9ydAoJCQk7 OwoJCWVzYWMKCgkJc2hpZnQKCWRvbmUKfQoKdmRyLXBsdWdpbi0yX3NyY191bnBhY2soKSB7 CglpZiBbWyAteiAke1ZEUl9JTkNMVURFX0RJUn0gXV07IHRoZW4KCQllZXJyb3IgIldyb25n IHVzZSBvZiB2ZHItcGx1Z2luLTIuZWNsYXNzLiIKCQllZXJyb3IgIkFuIGVidWlsZCBmb3Ig YSB2ZHItcGx1Z2luIHdpbGwgbm90IHdvcmsgd2l0aG91dCBjYWxsaW5nIHZkci1wbHVnaW4t Ml9zcmNfdW5wYWNrLiIKCQllY2hvCgkJZWVycm9yICJQbGVhc2UgcmVwb3J0IHRoaXMgYXQg YnVncy5nZW50b28ub3JnLiIKCQlkaWUgInZkci1wbHVnaW4tMl9zcmNfdW5wYWNrIG5vdCBj YWxsZWQhIgoJZmkKCglpZiBbIC16ICIkMSIgXTsgdGhlbgoJCXZkci1wbHVnaW4tMl9zcmNf dXRpbCB1bnBhY2sKCWVsc2UKCQl2ZHItcGx1Z2luLTJfc3JjX3V0aWwgJEAKCWZpCn0KCnZk ci1wbHVnaW4tMl9zcmNfcHJlcGFyZSgpIHsKCWlmIFtbIC16ICR7VkRSX0lOQ0xVREVfRElS fSBdXTsgdGhlbgoJCWVlcnJvciAiV3JvbmcgdXNlIG9mIHZkci1wbHVnaW4tMi5lY2xhc3Mu IgoJCWVlcnJvciAiQW4gZWJ1aWxkIGZvciBhIHZkci1wbHVnaW4gd2lsbCBub3Qgd29yayB3 aXRob3V0IGNhbGxpbmcgdmRyLXBsdWdpbi0yX3NyY19wcmVwYXJlLiIKCQllY2hvCgkJZWVy cm9yICJQbGVhc2UgcmVwb3J0IHRoaXMgYXQgYnVncy5nZW50b28ub3JnLiIKCQlkaWUgInZk ci1wbHVnaW4tMl9zcmNfcHJlcGFyZSBub3QgY2FsbGVkISIKCWZpCgoJW1sgJHtQQVRDSEVT W0BdfSBdXSAmJiBlcGF0Y2ggIiR7UEFUQ0hFU1tAXX0iCglkZWJ1Zy1wcmludCAiJEZVTkNO QU1FOiBhcHBseWluZyB1c2VyIHBhdGNoZXMiCgoJdmRyLXBsdWdpbi0yX3NyY191dGlsIHBy ZXBhcmUKfQoKdmRyLXBsdWdpbi0yX3NyY19jb21waWxlKCkgewoJWyAteiAiJDEiIF0gJiYg dmRyLXBsdWdpbi0yX3NyY19jb21waWxlIGNvbXBpbGUKCgl3aGlsZSBbICIkMSIgXTsgZG8K CQljYXNlICIkMSIgaW4KCQljb21waWxlKQoJCQlpZiBbWyAhIC1mICR7V09SS0RJUn0vLnZk ci1wbHVnaW5fbWFrZWZpbGVfcGF0Y2hlZCBdXTsgdGhlbgoJCQkJZWVycm9yICJXcm9uZyB1 c2Ugb2YgdmRyLXBsdWdpbi0yLmVjbGFzcy4iCgkJCQllZXJyb3IgIkFuIGVidWlsZCBmb3Ig YSB2ZHItcGx1Z2luIHdpbGwgbm90IHdvcmsgd2l0aG91dCIKCQkJCWVlcnJvciAiY2FsbGlu ZyB2ZHItcGx1Z2luLTJfc3JjX2NvbXBpbGUgdG8gcGF0Y2ggdGhlIE1ha2VmaWxlLiIKCQkJ CWVjaG8KCQkJCWVlcnJvciAiUGxlYXNlIHJlcG9ydCB0aGlzIGF0IGJ1Z3MuZ2VudG9vLm9y Zy4iCgkJCQlkaWUgInZkci1wbHVnaW4tMl9zcmNfY29tcGlsZSBub3QgY2FsbGVkISIKCQkJ ZmkKCQkJY2QgIiR7U30iCgoJCQlCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VUUzotJHtW RFJQTFVHSU5fTUFLRV9UQVJHRVQ6LWFsbCB9fQoJCQkJZW1ha2UgJHtCVUlMRF9QQVJBTVN9 IFwKCQkJCQkke0JVSUxEX1RBUkdFVFN9IFwKCQkJCQlMT0NBTEVESVI9IiR7VE1QX0xPQ0FM RV9ESVJ9IiBcCgkJCQkJTE9DRElSPSIke1RNUF9MT0NBTEVfRElSfSIgXAoJCQkJCUxJQkRJ Uj0iJHtTfSIgXAoJCQkJCVRNUERJUj0iJHtUfSIgXAoJCQkJCXx8IGRpZSAiZW1ha2UgZmFp bGVkIgoJCQk7OwoJCWVzYWMKCgkJc2hpZnQKCWRvbmUKfQoKdmRyLXBsdWdpbi0yX3NyY19p bnN0YWxsKCkgewoJaWYgW1sgLXogJHtWRFJfSU5DTFVERV9ESVJ9IF1dOyB0aGVuCgkJZWVy cm9yICJXcm9uZyB1c2Ugb2YgdmRyLXBsdWdpbi0yLmVjbGFzcy4iCgkJZWVycm9yICJBbiBl YnVpbGQgZm9yIGEgdmRyLXBsdWdpbiB3aWxsIG5vdCB3b3JrIHdpdGhvdXQgY2FsbGluZyB2 ZHItcGx1Z2luLTJfc3JjX2luc3RhbGwuIgoJCWVjaG8KCQllZXJyb3IgIlBsZWFzZSByZXBv cnQgdGhpcyBhdCBidWdzLmdlbnRvby5vcmcuIgoJCWRpZSAidmRyLXBsdWdpbi0yX3NyY19p bnN0YWxsIG5vdCBjYWxsZWQhIgoJZmkKCgljZCAiJHtXT1JLRElSfSIKCglpZiBbWyAtbiAk e1ZEUl9NQUlOVEFJTkVSX01PREV9IF1dOyB0aGVuCgkJbG9jYWwgbW5hbWU9IiR7UH0tTWFr ZWZpbGUiCgkJY3AgIiR7U30iL01ha2VmaWxlICIke21uYW1lfS5wYXRjaGVkIgoJCWNwIE1h a2VmaWxlLmJlZm9yZSAiJHttbmFtZX0uYmVmb3JlIgoKCQlkaWZmIC11ICIke21uYW1lfS5i ZWZvcmUiICIke21uYW1lfS5wYXRjaGVkIiA+ICIke21uYW1lfS5kaWZmIgoKCQlpbnNpbnRv ICIvdXNyL3NoYXJlL3Zkci9tYWludGFpbmVyLWRhdGEvbWFrZWZpbGUtY2hhbmdlcyIKCQlk b2lucyAiJHttbmFtZX0uZGlmZiIKCgkJaW5zaW50byAiL3Vzci9zaGFyZS92ZHIvbWFpbnRh aW5lci1kYXRhL21ha2VmaWxlLWJlZm9yZSIKCQlkb2lucyAiJHttbmFtZX0uYmVmb3JlIgoK CQlpbnNpbnRvICIvdXNyL3NoYXJlL3Zkci9tYWludGFpbmVyLWRhdGEvbWFrZWZpbGUtcGF0 Y2hlZCIKCQlkb2lucyAiJHttbmFtZX0ucGF0Y2hlZCIKCglmaQoKCWNkICIke1N9IgoKCWxv Y2FsIFNPRklMRV9TVFJJTkc9JChncmVwIFNPRklMRSBNYWtlZmlsZSkKCWlmIFtbIC1uICR7 U09GSUxFX1NUUklOR30gXV07IHRoZW4KCQlCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VU UzotJHtWRFJQTFVHSU5fTUFLRV9UQVJHRVQ6LWluc3RhbGwgfX0KCQllaW5zdGFsbCAke0JV SUxEX1BBUkFNU30gXAoJCQkke0JVSUxEX1RBUkdFVFN9IFwKCQkJVE1QRElSPSIke1R9IiBc CgkJCURFU1RESVI9IiR7RH0iIFwKCQkJfHwgZGllICJlaW5zdGFsbCAobWFrZWZpbGUgdGFy Z2V0KSBmYWlsZWQiCgllbHNlCgkJZGV2X2NoZWNrICJQbHVnaW4gdXNlIHN0aWxsIHRoZSBv bGQgTWFrZWZpbGUgaGFuZGxpbmciCgkJaW5zaW50byAiJHtWRFJfUExVR0lOX0RJUn0iCgkJ ZG9pbnMgbGlidmRyLSouc28uKgoJZmkKCglpZiBbWyAtZCAke1RNUF9MT0NBTEVfRElSfSBd XTsgdGhlbgoJCWVpbmZvICJJbnN0YWxsaW5nIGxvY2FsZXMiCgkJY2QgIiR7VE1QX0xPQ0FM RV9ESVJ9IgoKCQlsb2NhbCBsaW5ndWFzCgkJZm9yIGxpbmd1YXMgaW4gJHtMSU5HVUFTWypd fTsgZG8KCQlpbnNpbnRvICIke0xPQ0RJUn0iCgkJY3AgLXIgLS1wYXJlbnRzICR7bGluZ3Vh c30qICR7RH0vJHtMT0NESVJ9CgkJZG9uZQoJZmkKCgljZCAiJHtEfS91c3IvJChnZXRfbGli ZGlyKS92ZHIvcGx1Z2lucyIKCgkjIGNyZWF0ZSBsaXN0IG9mIGFsbCBjcmVhdGVkIHBsdWdp biBsaWJzCgl2ZHJfcGx1Z2luX2xpc3Q9IiIKCWxvY2FsIHBfbmFtZQoJZm9yIHAgaW4gbGli dmRyLSouc28uKjsgZG8KCQlwX25hbWU9IiR7cCUuc28qfSIKCQlwX25hbWU9IiR7cF9uYW1l I2xpYn0iCgkJdmRyX3BsdWdpbl9saXN0PSIke3Zkcl9wbHVnaW5fbGlzdH0gJHtwX25hbWV9 IgoJZG9uZQoKCWNkICIke1N9IgoKCWNyZWF0ZV9oZWFkZXJfY2hlY2tzdW1fZmlsZSAke3Zk cl9wbHVnaW5fbGlzdH0KCWNyZWF0ZV9wbHVnaW5kYl9maWxlICR7dmRyX3BsdWdpbl9saXN0 fQoKCWxvY2FsIGRvY2ZpbGUKCWZvciBkb2NmaWxlIGluIFJFQURNRSogSElTVE9SWSBDSEFO R0VMT0c7IGRvCgkJW1sgLWYgJHtkb2NmaWxlfSBdXSAmJiBkb2RvYyAke2RvY2ZpbGV9Cglk b25lCgoJIyBpZiBWRFJfQ09ORkRfRklMRSBpcyBlbXB0eSBhbmQgJHtGSUxFU0RJUn0vY29u ZmQgZXhpc3RzIHRha2UgaXQKCVtbIC16ICR7VkRSX0NPTkZEX0ZJTEV9IF1dICYmIFtbIC1l ICR7RklMRVNESVJ9L2NvbmZkIF1dICYmIFZEUl9DT05GRF9GSUxFPSR7RklMRVNESVJ9L2Nv bmZkCgoJaWYgW1sgLW4gJHtWRFJfQ09ORkRfRklMRX0gXV07IHRoZW4KCQluZXdjb25mZCAi JHtWRFJfQ09ORkRfRklMRX0iIHZkci4ke1ZEUlBMVUdJTn0KCWZpCgoJIyBpZiBWRFJfUkNB RERPTl9GSUxFIGlzIGVtcHR5IGFuZCAke0ZJTEVTRElSfS9yYy1hZGRvbi5zaCBleGlzdHMg dGFrZSBpdAoJW1sgLXogJHtWRFJfUkNBRERPTl9GSUxFfSBdXSAmJiBbWyAtZSAke0ZJTEVT RElSfS9yYy1hZGRvbi5zaCBdXSAmJiBWRFJfUkNBRERPTl9GSUxFPSR7RklMRVNESVJ9L3Jj LWFkZG9uLnNoCgoJaWYgW1sgLW4gJHtWRFJfUkNBRERPTl9GSUxFfSBdXTsgdGhlbgoJCWlu c2ludG8gIiR7VkRSX1JDX0RJUn0iCgkJbmV3aW5zICIke1ZEUl9SQ0FERE9OX0ZJTEV9IiBw bHVnaW4tJHtWRFJQTFVHSU59LnNoCglmaQp9Cgp2ZHItcGx1Z2luLTJfcGtnX3Bvc3RpbnN0 KCkgewoJdmRyLXBsdWdpbi0yX3ByaW50X2VuYWJsZV9jb21tYW5kCgoJaWYgW1sgLW4gIiR7 VkRSX0NPTkZEX0ZJTEV9IiBdXTsgdGhlbgoJCWVsb2cgIlBsZWFzZSBoYXZlIGEgbG9vayBh dCB0aGUgY29uZmlnLWZpbGUiCgkJZWxvZyAiXHQvZXRjL2NvbmYuZC92ZHIuJHtWRFJQTFVH SU59IgoJCWVsb2cKCWZpCn0KCnZkci1wbHVnaW4tMl9wa2dfcG9zdHJtKCkgewo6Cn0KCnZk ci1wbHVnaW4tMl9wa2dfY29uZmlnKCkgewo6Cn0K --------------090607050400070003020809 Content-Type: text/plain; charset=UTF-8; name="vdr-plugin-2.eclass.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vdr-plugin-2.eclass.diff" LS0tIHZkci1wbHVnaW4tMi5lY2xhc3MJMjAxNi0wNS0xNSAyMjowMzoyMS44MDc0MTc0ODUg KzAyMDAKKysrIHZkci1wbHVnaW4tMi5lY2xhc3MubmV3CTIwMTYtMDUtMTUgMjI6MDE6MTAu MDAwMDAwMDAwICswMjAwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMTk5OS0yMDE1 IEdlbnRvbyBGb3VuZGF0aW9uCisjIENvcHlyaWdodCAxOTk5LTIwMTYgR2VudG9vIEZvdW5k YXRpb24KICMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2MgogIyAkSWQkCiAKQEAgLTkwLDcgKzkwLDcgQEAKICMgQENP REUKIAogIyBBcHBseWluZyB5b3VyIG93biBsb2NhbC91c2VyIHBhdGNoZXM6Ci0jIFRoaXMg aXMgZG9uZSBieSB1c2luZyB0aGUgCisjIFRoaXMgaXMgZG9uZSBieSB1c2luZyB0aGUKICMg KEVBUEkgPSA0LDUpIGVwYXRjaF91c2VyKCkgZnVuY3Rpb24gb2YgdGhlIGV1dGlscy5lY2xh c3MsCiAjIChFQVBJID0gNikgZWFwcGx5X3VzZXIgZnVuY3Rpb24gaW50ZWdyYXRlZCBpbiBF QVBJID0gNi4KICMgU2ltcGx5IGFkZCB5b3VyIHBhdGNoZXMgaW50byBvbmUgb2YgdGhlc2Ug ZGlyZWN0b3JpZXM6CkBAIC0xMDQsMTAgKzEwNCw3IEBACiBpbmhlcml0IGZsYWctby1tYXRp YyB0b29sY2hhaW4tZnVuY3MgdW5wYWNrZXIKIAogY2FzZSAke0VBUEk6LTB9IGluCi0JNHw1 KQotCTs7Ci0JNikKLQlld2FybiAiRUFQSSA2IHN1cHBvcnQgZm9yIHRlc3QgcHVycG9zZSBv bmx5LCBwbHogcmVwb3J0IGJ1Z3MgdG8gdmRyQGdlbnRvby5vcmciCisJNHw1fDYpCiAJOzsK IAkqKSBkaWUgIkVBUEkgJHtFQVBJfSB1bnN1cHBvcnRlZC4iCiAJOzsKQEAgLTE1Niw2ICsx NTMsNyBAQAogIwkJRUJVSUxEPSR7Q0FURUdPUll9LyR7UE59CiAjCQlFQlVJTERfVj0ke1BW Un0KICMJRU9UCisjCW9ic29sZXQ/IGZpeCBtZSBsYXRlci4uLgogCXsKIAkJZWNobyAiVkRS UExVR0lOX0RCPTEiCiAJCWVjaG8gIkNSRUFUT1I9RUNMQVNTIgpAQCAtMjMyLDYgKzIzMCw3 IEBACiAJI3NlZCAtaSBNYWtlZmlsZSBcCiAJIwktZSAiczpeRFZCRElSLiokOkRWQkRJUiA9 ICR7RFZCX0lOQ0xVREVfRElSfToiIFwKIAkjCS1lICdzOi1JJChEVkJESVIpL2luY2x1ZGU6 LUkkKERWQkRJUik6JworCSMgb2Jzb2xldD8gZml4IG1lIGxhdGVyLi4uCiAKIAlpZiAhIGdy ZXAgLXEgQVBJVkVSU0lPTiBNYWtlZmlsZTsgdGhlbgogCQllYmVnaW4gIiAgQ29udmVydGlu ZyB0byBBUElWRVJTSU9OIgpAQCAtMjg5LDcgKzI4OCw3IEBACiBsaW5ndWFzX3N1cHBvcnQo KSB7CiAjCVBhdGNoaW5nIE1ha2VmaWxlIGZvciBsaW5ndWFzIHN1cHBvcnQuCiAjCU9ubHkg bG9jYWxlcywgZW5hYmxlZCB0aHJvdWdoIHRoZSBMSU5HVUFTIChtYWtlLmNvbmYpIHZhcmlh YmxlIHdpbGwgYmUKLSMJImNvbXBpbGVkIiBhbmQgaW5zdGFsbGVkLgorIwljb21waWxlZCBh bmQgaW5zdGFsbGVkLgogCiAJZWluZm8gIlBhdGNoaW5nIGZvciBMaW5ndWFzIHN1cHBvcnQi CiAJZWluZm8gImF2YWlsYWJsZSBMYW5ndWFnZXMgZm9yICR7UH0gYXJlOiIKQEAgLTMxMSwx MiArMzEwLDkgQEAKIHZkcl9pMThuKCkgewogIyAJaTE4biBoYW5kbGluZyB3YXMgZGVwcmVj YXRlZCBzaW5jZSA+PW1lZGlhLXZpZGVvL3Zkci0xLjUuOSwKICMJZmluYWxseSB3aXRoID49 bWVkaWEtdmlkZW8vdmRyLTEuNy4yNyBpdCBoYXMgYmVlbiBkcm9wcGVkIGVudGlyZWx5IGFu ZCBzb21lCi0jCXBsdWdpbnMgd2lsbCBmYWlsIHRvICJjb21waWxlIiBiZWNhdXNlIHRoZXkn cmUgc3RpbGwgdXNpbmcgdGhlIG9sZCB2YXJpYW50LgorIwlwbHVnaW5zIHdpbGwgZmFpbCB0 byBjb21waWxlIGJlY2F1c2UgdGhleSdyZSBzdGlsbCB1c2luZyB0aGUgb2xkIHZhcmlhbnQu CiAjCVNpbXBseSByZW1vdmUgdGhlIGkxOG4ubyBvYmplY3QgZnJvbSBNYWtlZmlsZSAoT0JK RUNUKSBhbmQKICMJcmVtb3ZlICJzdGF0aWMgY29uc3QgdEkxOG5QaHJhc2UqIiBmcm9tIGkx OG4uaC4KLSMKLSMJUGx1Z2lucyB0aGF0IGFyZSBzdGlsbCB1c2luZyB0aGUgb2xkIG1ldGhv ZCB3aWxsIGJlIHBtYXNrZWQgdW50aWwgdGhleSdyZQotIwlmaXhlZCBvciBpbiBjYXNlIG9m IG1haW50YWluZXIgdGltZW91dCB0aGV5J2xsIGJlIG1hc2tlZCBmb3IgcmVtb3ZhbC4KIAog CWdldHRleHRfbWlzc2luZwogCkBAIC0zOTEsNiArMzg3LDcgQEAKIAogCSMgUGx1Z2lucyBu ZWVkIHRvIGJlIGNvbXBpbGVkIHdpdGggcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSwgb3Ro ZXJ3aXNlIGxpbmtpbmcKIAkjIFZEUiBhZ2FpbnN0IGl0IHdpbGwgZmFpbAorCSMgZGVwcmlj YXRlZCBpZiBmaSwgYXMgd2UgaGF2ZSBvbmx5ID49dmRyLTIgaW4gdGhlIHRyZWUsIGZpeCBt ZSBsYXRlci4uLgogCWlmIGhhc192ZXJzaW9uICI+PW1lZGlhLXZpZGVvL3Zkci0xLjcuMTMi OyB0aGVuCiAJCWFwcGVuZC1jeHhmbGFncyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xB UkdFRklMRV9TT1VSQ0UgLURfTEFSR0VGSUxFNjRfU09VUkNFCiAJZmkKQEAgLTUwMCw3ICs0 OTcsOSBAQAogCQlkaWUgInZkci1wbHVnaW4tMl9zcmNfcHJlcGFyZSBub3QgY2FsbGVkISIK IAlmaQogCi0JW1sgJHtQQVRDSEVTW0BdfSBdXSAmJiBlcGF0Y2ggIiR7UEFUQ0hFU1tAXX0i CisJW1sgJHtFQVBJfSA9PSBbNDVdIF1dICYmIFtbICR7UEFUQ0hFU1tAXX0gXV0gJiYgZXBh dGNoICIke1BBVENIRVNbQF19IgorCVtbICR7RUFQSX0gPT0gIjYiIF1dICYmIFtbICR7UEFU Q0hFU1tAXX0gXV0gJiYgZWFwcGx5ICIke1BBVENIRVNbQF19IgorCiAJZGVidWctcHJpbnQg IiRGVU5DTkFNRTogYXBwbHlpbmcgdXNlciBwYXRjaGVzIgogCiAJdmRyLXBsdWdpbi0yX3Ny Y191dGlsIHByZXBhcmUKQEAgLTUyMiwxNCArNTIxLDEyIEBACiAJCQlmaQogCQkJY2QgIiR7 U30iCiAKLQkJCUJVSUxEX1RBUkdFVFM9JHtCVUlMRF9UQVJHRVRTOi0ke1ZEUlBMVUdJTl9N QUtFX1RBUkdFVDotYWxsIH19Ci0JCQkJZW1ha2UgJHtCVUlMRF9QQVJBTVN9IFwKLQkJCQkJ JHtCVUlMRF9UQVJHRVRTfSBcCi0JCQkJCUxPQ0FMRURJUj0iJHtUTVBfTE9DQUxFX0RJUn0i IFwKLQkJCQkJTE9DRElSPSIke1RNUF9MT0NBTEVfRElSfSIgXAotCQkJCQlMSUJESVI9IiR7 U30iIFwKLQkJCQkJVE1QRElSPSIke1R9IiBcCi0JCQkJCXx8IGRpZSAiZW1ha2UgZmFpbGVk IgorCQkJZW1ha2UgYWxsICR7QlVJTERfUEFSQU1TfSBcCisJCQkJTE9DQUxFRElSPSIke1RN UF9MT0NBTEVfRElSfSIgXAorCQkJCUxPQ0RJUj0iJHtUTVBfTE9DQUxFX0RJUn0iIFwKKwkJ CQlMSUJESVI9IiR7U30iIFwKKwkJCQlUTVBESVI9IiR7VH0iIFwKKwkJCQl8fCBkaWUgImVt YWtlIGFsbCBmYWlsZWQiCiAJCQk7OwogCQllc2FjCiAKQEAgLTU3MCwxMiArNTY3LDExIEBA CiAKIAlsb2NhbCBTT0ZJTEVfU1RSSU5HPSQoZ3JlcCBTT0ZJTEUgTWFrZWZpbGUpCiAJaWYg W1sgLW4gJHtTT0ZJTEVfU1RSSU5HfSBdXTsgdGhlbgotCQlCVUlMRF9UQVJHRVRTPSR7QlVJ TERfVEFSR0VUUzotJHtWRFJQTFVHSU5fTUFLRV9UQVJHRVQ6LWluc3RhbGwgfX0KLQkJZWlu c3RhbGwgJHtCVUlMRF9QQVJBTVN9IFwKLQkJCSR7QlVJTERfVEFSR0VUU30gXAotCQkJVE1Q RElSPSIke1R9IiBcCi0JCQlERVNURElSPSIke0R9IiBcCi0JCQl8fCBkaWUgImVpbnN0YWxs IChtYWtlZmlsZSB0YXJnZXQpIGZhaWxlZCIKKwkJZW1ha2UgaW5zdGFsbCBcCisJCSR7QlVJ TERfUEFSQU1TfSBcCisJCVRNUERJUj0iJHtUfSIgXAorCQlERVNURElSPSIke0R9IiBcCisJ CXx8IGRpZSAiZW1ha2UgaW5zdGFsbCAobWFrZWZpbGUgdGFyZ2V0KSBmYWlsZWQiCiAJZWxz ZQogCQlkZXZfY2hlY2sgIlBsdWdpbiB1c2Ugc3RpbGwgdGhlIG9sZCBNYWtlZmlsZSBoYW5k bGluZyIKIAkJaW5zaW50byAiJHtWRFJfUExVR0lOX0RJUn0iCkBAIC02MDksOSArNjA1LDE0 IEBACiAJY3JlYXRlX2hlYWRlcl9jaGVja3N1bV9maWxlICR7dmRyX3BsdWdpbl9saXN0fQog CWNyZWF0ZV9wbHVnaW5kYl9maWxlICR7dmRyX3BsdWdpbl9saXN0fQogCi0JbG9jYWwgZG9j ZmlsZQotCWZvciBkb2NmaWxlIGluIFJFQURNRSogSElTVE9SWSBDSEFOR0VMT0c7IGRvCi0J CVtbIC1mICR7ZG9jZmlsZX0gXV0gJiYgZG9kb2MgJHtkb2NmaWxlfQorCWxvY2FsIGNvbW1v bmRvYz0oIFJFQURNRSogSElTVE9SWSBDSEFOR0VMT0cgKQorCWZvciBkb2NmaWxlIGluICIk e2NvbW1vbmRvY1tAXX0iOyBkbworCQlpZiBbWyAke0VBUEl9ID09ICI2IiBdXTsgdGhlbgor CQkJbG9jYWwgRE9DUz0iJHtET0NTfSAke2RvY2ZpbGV9IgorCQkJW1sgLWYgJHtkb2NmaWxl fSBdXSAmJiBlaW5zdGFsbGRvY3MgIiR7RE9DU1tAXX0iCisJCWVsc2UKKwkJCVtbIC1mICR7 ZG9jZmlsZX0gXV0gJiYgZG9kb2MgJHtkb2NmaWxlfQorCQlmaQogCWRvbmUKIAogCSMgaWYg VkRSX0NPTkZEX0ZJTEUgaXMgZW1wdHkgYW5kICR7RklMRVNESVJ9L2NvbmZkIGV4aXN0cyB0 YWtlIGl0Cg== --------------090607050400070003020809 Content-Type: text/plain; charset=UTF-8; name="vdr-plugin-2.eclass.new" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vdr-plugin-2.eclass.new" IyBDb3B5cmlnaHQgMTk5OS0yMDE2IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRJZCQKCiMgQEVDTEFTUzogdmRyLXBsdWdpbi0yLmVjbGFzcwojIEBNQUlOVEFJTkVSOgoj IEdlbnRvbyBWRFIgUHJvamVjdCA8dmRyQGdlbnRvby5vcmc+CiMgQEFVVEhPUjoKIyBNYXR0 aGlhcyBTY2h3YXJ6b3R0IDx6emFtQGdlbnRvby5vcmc+CiMgSm9lcmcgQm9ybmtlc3NlbCA8 aGRfYnJ1bW15QGdlbnRvby5vcmc+CiMgQ2hyaXN0aWFuIFJ1cHBlcnQgPGlkbDByQGdlbnRv by5vcmc+CiMgKHVuZGlzY2xvc2VkIGNvbnRyaWJ1dG9ycykKIyBAQkxVUkI6IGNvbW1vbiB2 ZHIgcGx1Z2luIGVidWlsZCBmdW5jdGlvbnMKIyBAREVTQ1JJUFRJT046CiMgRWNsYXNzIGZv ciBlYXNpbmcgbWFpbnRlbmFuY2Ugb2YgdmRyIHBsdWdpbiBlYnVpbGRzCgojIEBFQ0xBU1Mt VkFSSUFCTEU6IFZEUl9DT05GRF9GSUxFCiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJ T046CiMgQSBwbHVnaW4gY29uZmlnIGZpbGUgY2FuIGJlIHNwZWNpZmllZCB0aHJvdWdoIHRo ZSAkVkRSX0NPTkZEX0ZJTEUgdmFyaWFibGUsIGl0CiMgZGVmYXVsdHMgdG8gJHtGSUxFU0RJ Un0vY29uZmQuIEVhY2ggY29uZmlnIGZpbGUgd2lsbCBiZSBpbnN0YWxsZWQgYXMgZS5nLgoj ICR7RH0vZXRjL2NvbmYuZC92ZHIuJHtWRFJQTFVHSU59CgojIEBFQ0xBU1MtVkFSSUFCTEU6 IFZEUl9SQ0FERE9OX0ZJTEUKIyBAREVGQVVMVF9VTlNFVAojIEBERVNDUklQVElPTjoKIyBJ bnN0YWxsaW5nIHJjLWFkZG9uIGZpbGVzIGlzIGJhc2ljYWxseSB0aGUgc2FtZSBhcyBmb3Ig cGx1Z2luIGNvbmZpZyBmaWxlcwojIChzZWUgYWJvdmUpLCBpdCdzIGp1c3QgdXNpbmcgdGhl ICRWRFJfUkNBRERPTl9GSUxFIHZhcmlhYmxlIGluc3RlYWQuCiMgVGhlIGRlZmF1bHQgdmFs dWUgd2hlbiAkVkRSX1JDQURET05fRklMRSBpcyB1bmRlZmluZWQgaXM6CiMgJHtGSUxFU0RJ Un0vcmMtYWRkb24uc2ggYW5kIHdpbGwgYmUgaW5zdGFsbGVkIGFzCiMgJHtWRFJfUkNfRElS fS9wbHVnaW4tJHtWRFJQTFVHSU59LnNoCiMKIyBUaGUgcmMtYWRkb24gZmlsZXMgd2lsbCBi ZSBzb3VyY2VkIGJ5IHRoZSBzdGFydHNjcmlwdCB3aGVuIHRoZSBzcGVjaWZpYyBwbHVnaW4K IyBoYXMgYmVlbiBlbmFibGVkLgojIHJjLWFkZG9uIGZpbGVzIG1heSBiZSB1c2VkIHRvIHBy ZXBhcmUgZXZlcnl0aGluZyB0aGF0IGlzIG5lY2Vzc2FyeSBmb3IgdGhlCiMgcGx1Z2luIHN0 YXJ0L3N0b3AsIGxpa2UgcGFzc2luZyBleHRyYSBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQg c28gb24uCiMKIyBOT1RFOiByYy1hZGRvbiBmaWxlcyBtdXN0IGJlIHZhbGlkIHNoZWxsIHNj cmlwdHMhCgojIEBFQ0xBU1MtVkFSSUFCTEU6IEdFTlRPT19WRFJfQ09ORElUSU9OQUwKIyBA REVGQVVMVF9VTlNFVAojIEBERVNDUklQVElPTjoKIyBUaGlzIGlzIGEgaGFjayBmb3IgZWJ1 aWxkcyBsaWtlIHZkci14aW5lbGlib3V0cHV0IHRoYXQgd2FudCB0bwojIGNvbmRpdGlvbmFs bHkgaW5zdGFsbCBhIHZkci1wbHVnaW4KCiMgQEVDTEFTUy1WQVJJQUJMRTogUE9fU1VCRElS CiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJT046CiMgQnkgZGVmYXVsdCwgdHJhbnNs YXRpb24gYXJlIGZvdW5kIGluIiR7U30iL3BvIGJ1dCB0aGlzCiMgZGVmYXVsdCBjYW4gYmUg b3ZlcnJpZGRlbiBieSBkZWZpbmluZyBQT19TVUJESVIuCiMKIyBFeGFtcGxlOgojIEBDT0RF CiMgUE9fU1VCRElSPSJibGEgZm9vL2JsYSIKIyBAQ09ERQoKIyBARUNMQVNTLVZBUklBQkxF OiBWRFJfTUFJTlRBSU5FUl9NT0RFCiMgQERFRkFVTFRfVU5TRVQKIyBAREVTQ1JJUFRJT046 CiMgT3V0cHV0IGZyb20gZnVuY3Rpb24gZGV2X2NoZWNrIGlmIGl0IGlzIGRlZmluZWQgaW4g ZWJ1aWxkIG9yIGVjbGFzcywKIyBoZWxwZnVsbCBmb3IgZ2VudG9vIGVidWlsZCBkZXZlbG9w ZXIKIwojIFRoaXMgd2lsbCBhbHNvIGluc3RhbGwgYW55IGRlYnVnIGZpbGVzIGluIC91c3Iv c2hhcmUvdmRyL21haW50YWluZXItZGF0YQojCiMgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBz ZXQgYnkgdXNlciBpbiBtYWtlLmNvbmYuIEVidWlsZHMgbXVzdCBub3Qgc2V0CiMgaXQuCiMK IyBWRFJfTUFJTlRBSU5FUl9NT0RFPTEKCiMgQEZVTkNUSU9OOiBmaXhfdmRyX2xpYnNpX2lu Y2x1ZGUKIyBAREVTQ1JJUFRJT046CiMgUGx1Z2lucyBmYWlsZWQgb24gY29tcGlsZSB3aXRo IHdyb25nIHBhdGggb2YgbGlic2kgaW5jbHVkZXMsCiMgdGhpcyBjYW4gYmUgZml4ZWQgYnkg J2Z1bmN0aW9uICsgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZXMnCiMKIyBFeGFtcGxl OgojIEBDT0RFCiMgZml4X3Zkcl9saWJzaV9pbmNsdWRlIGJsYS5jIGZvby5jCiMgQENPREUK CiMgQEZVTkNUSU9OOiByZW1vdmVfaTE4bl9pbmNsdWRlCiMgQERFU0NSSVBUSU9OOgojIENv bXBpbGUgd2lsbCBmYWlsIGlmIHBsdWdpbiBzdGlsbCB1c2UgdGhlIG9sZCBpMThuIGxhbmd1 YWdlIGhhbmRsaW5nLAojIG1vc3QgcGFydHMgYXJlIGZpeGVkIGJ5IHZkci1wbHVnaW4tMi5l Y2xhc3MgaW50ZXJuYWwgZnVuY3Rpb25zIGl0c2VsZi4KIyBSZW1vdmUgdW5uZWVkZWQgaTE4 Lm4gaW5jbHVkZXMgZnJvbSBmaWxlcywgaWYgdGhleSBhcmUgc3RpbGwgd3JvbmcgdGhlcmUs CiMgdGhpcyBjYW4gYmUgZml4ZWQgYnkgJ2Z1bmN0aW9uICsgc3BhY2Ugc2VwYXJhdGVkIGxp c3Qgb2YgZmlsZXMiCiMKIyBFeGFtcGxlOgojIEBDT0RFCiMgcmVtb3ZlX2kxOG5faW5jbHVk ZSBibGEubiBmb28ubgojIEBDT0RFCgojIEFwcGx5aW5nIHlvdXIgb3duIGxvY2FsL3VzZXIg cGF0Y2hlczoKIyBUaGlzIGlzIGRvbmUgYnkgdXNpbmcgdGhlCiMgKEVBUEkgPSA0LDUpIGVw YXRjaF91c2VyKCkgZnVuY3Rpb24gb2YgdGhlIGV1dGlscy5lY2xhc3MsCiMgKEVBUEkgPSA2 KSBlYXBwbHlfdXNlciBmdW5jdGlvbiBpbnRlZ3JhdGVkIGluIEVBUEkgPSA2LgojIFNpbXBs eSBhZGQgeW91ciBwYXRjaGVzIGludG8gb25lIG9mIHRoZXNlIGRpcmVjdG9yaWVzOgojIC9l dGMvcG9ydGFnZS9wYXRjaGVzLzxDQVRFR09SWT4vPFBGfFB8UE4+LwojIFF1b3RlOiB3aGVy ZSB0aGUgZmlyc3Qgb2YgdGhlc2UgdGhyZWUgZGlyZWN0b3JpZXMgdG8gZXhpc3Qgd2lsbCBi ZSB0aGUgb25lIHRvCiMgdXNlLCBpZ25vcmluZyBhbnkgbW9yZSBnZW5lcmFsIGRpcmVjdG9y aWVzIHdoaWNoIG1pZ2h0IGV4aXN0IGFzIHdlbGwuCiMKIyBGb3IgbW9yZSBkZXRhaWxzIGFi b3V0IGl0IHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgZXV0aWxzLmNsYXNzLgoKW1sgJHtF QVBJfSA9PSBbNDVdIF1dICYmIGluaGVyaXQgZXV0aWxzIG11bHRpbGliCmluaGVyaXQgZmxh Zy1vLW1hdGljIHRvb2xjaGFpbi1mdW5jcyB1bnBhY2tlcgoKY2FzZSAke0VBUEk6LTB9IGlu Cgk0fDV8NikKCTs7CgkqKSBkaWUgIkVBUEkgJHtFQVBJfSB1bnN1cHBvcnRlZC4iCgk7Owpl c2FjCgpFWFBPUlRfRlVOQ1RJT05TIHBrZ19zZXR1cCBzcmNfdW5wYWNrIHNyY19wcmVwYXJl IHNyY19jb21waWxlIHNyY19pbnN0YWxsIHBrZ19wb3N0aW5zdCBwa2dfcG9zdHJtIHBrZ19j b25maWcKCklVU0U9IiIKCiMgTmFtZSBvZiB0aGUgcGx1Z2luIHN0cmlwcGVkIGZyb20gYWxs IHZkcnBsdWdpbi0sIHZkci0gYW5kIC1jdnMgcHJlLSBhbmQgcG9zdGZpeGVzClZEUlBMVUdJ Tj0iJHtQTi8jdmRycGx1Z2luLS99IgpWRFJQTFVHSU49IiR7VkRSUExVR0lOLyN2ZHItL30i ClZEUlBMVUdJTj0iJHtWRFJQTFVHSU4vJS1jdnMvfSIKCkRFU0NSSVBUSU9OPSJ2ZHIgUGx1 Z2luOiAke1ZEUlBMVUdJTn0gKGJhc2VkIG9uIHZkci1wbHVnaW4tMi5lY2xhc3MpIgoKIyBX b3JrcyBpbiBtb3N0IGNhc2VzClM9IiR7V09SS0RJUn0vJHtWRFJQTFVHSU59LSR7UFZ9IgoK IyBkZXBlbmQgb24gaGVhZGVycyBmb3IgRFZCLWRyaXZlcgpDT01NT05fREVQRU5EPSI+PW1l ZGlhLXR2L2dlbnRvby12ZHItc2NyaXB0cy0wLjQuMiIKCkRFUEVORD0iJHtDT01NT05fREVQ RU5EfQoJdmlydHVhbC9saW51eHR2LWR2Yi1oZWFkZXJzIgpSREVQRU5EPSIke0NPTU1PTl9E RVBFTkR9Cgk+PWFwcC1lc2VsZWN0L2VzZWxlY3QtdmRyLTAuMC4yIgoKaWYgW1sgIiR7R0VO VE9PX1ZEUl9DT05ESVRJT05BTDotbm99IiA9ICJ5ZXMiIF1dOyB0aGVuCglJVVNFPSIke0lV U0V9IHZkciIKCURFUEVORD0idmRyPyAoICR7REVQRU5EfSApIgoJUkRFUEVORD0idmRyPyAo ICR7UkRFUEVORH0gKSIKZmkKCiMgTmV3IG1ldGhvZCBvZiBzdG9yaW5nIHBsdWdpbmRiCiMg ICBDYWxsZWQgZnJvbSBzcmNfaW5zdGFsbAojICAgZmlsZSBtYWludGFpbmVkIGJ5IG5vcm1h bCBwb3J0YWdlLW1ldGhvZHMKY3JlYXRlX3BsdWdpbmRiX2ZpbGUoKSB7Cglsb2NhbCBORVdf VkRSUExVR0lOREJfRElSPS91c3Ivc2hhcmUvdmRyL3ZkcnBsdWdpbi1yZWJ1aWxkLwoJbG9j YWwgREJfRklMRT0iJHtORVdfVkRSUExVR0lOREJfRElSfS8ke0NBVEVHT1JZfS0ke1BGfSIK CWluc2ludG8gIiR7TkVXX1ZEUlBMVUdJTkRCX0RJUn0iCgojCUJVRzogcG9ydGFnZS0yLjEu NF9yYzkgd2lsbCBkZWxldGUgdGhlIEVCVUlMRD0gbGluZSwgc28gd2UgY2Fubm90IHVzZSB0 aGlzIGNvZGUuCiMJY2F0IDw8LUVPVCA+ICIke0R9LyR7REJfRklMRX0iCiMJCVZEUlBMVUdJ Tl9EQj0xCiMJCUNSRUFUT1I9RUNMQVNTCiMJCUVCVUlMRD0ke0NBVEVHT1JZfS8ke1BOfQoj CQlFQlVJTERfVj0ke1BWUn0KIwlFT1QKIwlvYnNvbGV0PyBmaXggbWUgbGF0ZXIuLi4KCXsK CQllY2hvICJWRFJQTFVHSU5fREI9MSIKCQllY2hvICJDUkVBVE9SPUVDTEFTUyIKCQllY2hv ICJFQlVJTEQ9JHtDQVRFR09SWX0vJHtQTn0iCgkJZWNobyAiRUJVSUxEX1Y9JHtQVlJ9IgoJ CWVjaG8gIlBMVUdJTlM9XCIkQFwiIgoJfSA+ICIke0R9LyR7REJfRklMRX0iCn0KCmNyZWF0 ZV9oZWFkZXJfY2hlY2tzdW1fZmlsZSgpIHsKCSMgRGFuZ2VyOiBOb3QgdXNpbmcgJFJPT1Qg aGVyZSwgYXMgY29tcGlsZSB3aWxsIGFsc28gbm90IHVzZSBpdCAhISEKCSMgSWYgdmRyIGlu ICRST09UIGFuZCAvIGRpZmZlciwgcGx1Z2lucyB3aWxsIG5vdCBydW4gYW55d2F5CgoJbG9j YWwgQ0hLU1VNPSJoZWFkZXItbWQ1LXZkciIKCglpZiBbWyAtZiAke1ZEUl9DSEVDS1NVTV9E SVJ9L2hlYWRlci1tZDUtdmRyIF1dOyB0aGVuCgkJY3AgIiR7VkRSX0NIRUNLU1VNX0RJUn0v aGVhZGVyLW1kNS12ZHIiICIke0NIS1NVTX0iCgllbGlmIHR5cGUgLXAgbWQ1c3VtID4vZGV2 L251bGwgMj4mMTsgdGhlbgoJCSgKCQkJY2QgIiR7VkRSX0lOQ0xVREVfRElSfSIKCQkJbWQ1 c3VtICouaCBsaWJzaS8qLmh8TENfQUxMPUMgc29ydCAtLWtleT0yCgkJKSA+ICIke0NIS1NV TX0iCgllbHNlCgkJZGllICJDb3VsZCBub3QgY3JlYXRlIG1kNSBjaGVja3N1bSBvZiBoZWFk ZXJzIgoJZmkKCglpbnNpbnRvICIke1ZEUl9DSEVDS1NVTV9ESVJ9IgoJbG9jYWwgcF9uYW1l Cglmb3IgcF9uYW1lOyBkbwoJCW5ld2lucyAiJHtDSEtTVU19IiAiaGVhZGVyLW1kNS0ke3Bf bmFtZX0iCglkb25lCn0KCmZpeF92ZHJfbGlic2lfaW5jbHVkZSgpIHsKCWRldl9jaGVjayAi Rml4aW5nIGluY2x1ZGUgb2YgbGlic2ktaGVhZGVycyIKCWxvY2FsIGYKCWZvciBmOyBkbwoJ CXNlZCAtaSAiJHtmfSIgXAoJCQktZSAnLyNpbmNsdWRlL3M6IlwoLipsaWJzaS4qXCkiOjxc MT46JyBcCgkJCS1lICcvI2luY2x1ZGUvczo8LipcKGxpYnNpLy4qXCk+Ojx2ZHIvXDE+OicK CWRvbmUKfQoKdmRyX3BhdGNobWFrZWZpbGUoKSB7CgllaW5mbyAiUGF0Y2hpbmcgTWFrZWZp bGUiCglbWyAtZSBNYWtlZmlsZSBdXSB8fCBkaWUgIk1ha2VmaWxlIG9mIHBsdWdpbiBjYW4g bm90IGJlIGZvdW5kISIKCWNwIE1ha2VmaWxlICIke1dPUktESVJ9Ii9NYWtlZmlsZS5iZWZv cmUKCgkjIHBsdWdpbiBtYWtlZmlsZXMgdXNlIFZEUkRJUiBpbiBzdHJhbmdlIHdheXMKCSMg YXNzdW1wdGlvbnM6CgkjICAgMS4gJChWRFJESVIpIGNvbnRhaW5zIE1ha2UuY29uZmlnCgkj ICAgMi4gJChWRFJESVIpIGNvbnRhaW5zIGNvbmZpZy5oCgkjICAgMy4gJChWRFJESVIpL2lu Y2x1ZGUvdmRyIGNvbnRhaW5zIHRoZSBoZWFkZXJzCgkjICAgNC4gJChWRFJESVIpIGNvbnRh aW5zIG1haW4gdmRyIE1ha2VmaWxlCgkjICAgNS4gJChWRFJESVIpL2xvY2FsZSBleGlzdHMK CSMgICA2LiAkKFZEUkRJUikgYWxsb3dzIHRvIGFjY2VzcyB2ZHIgc291cmNlIGZpbGVzCgkj CgkjIFdlIG9ubHkgaGF2ZSBvbmUgZGlyZWN0b3J5IChmb3Igbm93IC91c3IvaW5jbHVkZS92 ZHIpLAoJIyB0aGF0IGNvbnRhaW5zIHZkci1oZWFkZXJzIGFuZCBNYWtlLmNvbmZpZy4KCSMg VG8gc2F0aXNmeSAxLTMgd2UgZG8gdGhpczoKCSMgICBTZXQgVkRSRElSPS91c3IvaW5jbHVk ZS92ZHIKCSMgICBTZXQgVkRSSU5DRElSPS91c3IvaW5jbHVkZQoJIyAgIENoYW5nZSAkKFZE UkRJUikvaW5jbHVkZSB0byAkKFZEUklOQ0RJUikKCglzZWQgLWkgTWFrZWZpbGUgXAoJCS1l ICJzOl5WRFJESVIuKiQ6VkRSRElSID0gJHtWRFJfSU5DTFVERV9ESVJ9OiIgXAoJCS1lICIv XlZEUkRJUi9hIFZEUklOQ0RJUiA9ICR7VkRSX0lOQ0xVREVfRElSJS92ZHJ9IiBcCgkJLWUg Jy9WRFJJTkNESVIuKj0vIXM6JChWRFJESVIpL2luY2x1ZGU6JChWRFJJTkNESVIpOicgXAoJ CVwKCQktZSAnczotSSQoRFZCRElSKS9pbmNsdWRlOjonIFwKCQktZSAnczotSSQoRFZCRElS KTo6JwoKCSMgbWF5IGJlIG5lZWRlZCBmb3IgbXVsdGlwcm90bzoKCSNzZWQgLWkgTWFrZWZp bGUgXAoJIwktZSAiczpeRFZCRElSLiokOkRWQkRJUiA9ICR7RFZCX0lOQ0xVREVfRElSfToi IFwKCSMJLWUgJ3M6LUkkKERWQkRJUikvaW5jbHVkZTotSSQoRFZCRElSKTonCgkjIG9ic29s ZXQ/IGZpeCBtZSBsYXRlci4uLgoKCWlmICEgZ3JlcCAtcSBBUElWRVJTSU9OIE1ha2VmaWxl OyB0aGVuCgkJZWJlZ2luICIgIENvbnZlcnRpbmcgdG8gQVBJVkVSU0lPTiIKCQlzZWQgLWkg TWFrZWZpbGUgXAoJCQktZSAnczpeQVBJVkVSU0lPTiA9IDpBUElWRVJTSU9OID89IDonIFwK CQkJLWUgJ3M6JChMSUJESVIpLyRALiQoVkRSVkVSU0lPTik6JChMSUJESVIpLyRALiQoQVBJ VkVSU0lPTik6JyBcCgkJCS1lICcvVkRSVkVSU0lPTiA9L2FcQVBJVkVSU0lPTiA9ICQoc2hl bGwgc2VkIC1uZSAnIiciJy9kZWZpbmUgQVBJVkVSU0lPTi9zL14uKiJcXCguKlxcKSIuKiQk L1xcMS9wJyInIicgJChWRFJESVIpL2NvbmZpZy5oKScKCQllZW5kICQ/CglmaQoKCSMgQ29y cmVjdGluZyBDb21waWxlLUZsYWdzCgkjIERvIG5vdCBvdmVyd3JpdGUgQ1hYRkxBR1MsIGFk ZCBMREZMQUdTIGlmIG1pc3NpbmcKCXNlZCAtaSBNYWtlZmlsZSBcCgkJLWUgJy9eQ1hYRkxB R1NbWzpzcGFjZTpdXSo9L3MvPS8/PS8nIFwKCQktZSAnL0xERkxBR1MvIXM6LXNoYXJlZDok KExERkxBR1MpIC1zaGFyZWQ6JwoKCSMgRGlzYWJsaW5nIGZpbGUgc3RyaXBwaW5nLCB0aGUg cGFja2FnZSBtYW5hZ2VyIHRha2VzIGNhcmUgb2YgaXQKCXNlZCAtaSBNYWtlZmlsZSBcCgkJ LWUgJy9ALipzdHJpcC9kJyBcCgkJLWUgJy9zdHJpcCBcJChMSUJESVIpXC9cJEAvZCcgXAoJ CS1lICdzL1NUUklQLio9LiokL1NUUklQID0gdHJ1ZS8nCgoJIyBVc2UgYSBmaWxlIGluc3Rl YWQgb2YgYSB2YXJpYWJsZSBhcyBzaW5nbGUtc3RlcHBpbmcgdmlhIGVidWlsZAoJIyBkZXN0 cm95cyBlbnZpcm9ubWVudC4KCXRvdWNoICIke1dPUktESVJ9Ii8udmRyLXBsdWdpbl9tYWtl ZmlsZV9wYXRjaGVkCn0KCmRldl9jaGVjaygpIHsKCSMgQSBsb3QgdXNlZnVsIGRlYnVnIGlu Zm9zCgkjIHNldCBWRFJfTUFJTlRBSU5FUl9NT0RFPSIxIiBpbiBtYWtlLmNvbmYKCWlmIFtb IC1uICR7VkRSX01BSU5UQUlORVJfTU9ERX0gXV07IHRoZW4KCQllZXJyb3IgIlx0IEdlbnRv byBEZXZlbG9wZXIgRGVidWc6ICRAIgoJZmkKfQoKZ2V0dGV4dF9taXNzaW5nKCkgewoJIyBw bHVnaW5zIHdpdGhvdXQgY29udmVydGluZyB0byBnZXR0ZXh0CgoJbG9jYWwgR0VUVEVYVF9N SVNTSU5HPSQoIGdyZXAgeGdldHRleHQgTWFrZWZpbGUgKQoJaWYgW1sgLXogJHtHRVRURVhU X01JU1NJTkd9IF1dOyB0aGVuCgkJZGV2X2NoZWNrICJQbHVnaW4gaXNuJ3QgY29udmVydGVk IHRvIGdldHRleHQgaGFuZGxpbmcgXG4iCglmaQp9CgpkZXRlY3RfcG9fZGlyKCkgewoJIyBo ZWxwZXIgZnVuY3Rpb24KCglbWyAtZiBwbyBdXSAmJiBsb2NhbCBwb19kaXI9IiR7U30iCgls b2NhbCBwb19zdWJkaXI9KCAke1N9LyR7UE9fU1VCRElSfSApCglsb2NhbCBmCgoJcG9maWxl X2Rpcj0oICR7cG9fZGlyfSAke3BvX3N1YmRpclsqXX0gKQp9CgpsaW5ndWFzX3N1cHBvcnQo KSB7CiMJUGF0Y2hpbmcgTWFrZWZpbGUgZm9yIGxpbmd1YXMgc3VwcG9ydC4KIwlPbmx5IGxv Y2FsZXMsIGVuYWJsZWQgdGhyb3VnaCB0aGUgTElOR1VBUyAobWFrZS5jb25mKSB2YXJpYWJs ZSB3aWxsIGJlCiMJY29tcGlsZWQgYW5kIGluc3RhbGxlZC4KCgllaW5mbyAiUGF0Y2hpbmcg Zm9yIExpbmd1YXMgc3VwcG9ydCIKCWVpbmZvICJhdmFpbGFibGUgTGFuZ3VhZ2VzIGZvciAk e1B9IGFyZToiCgoJZGV0ZWN0X3BvX2RpcgoKCWZvciBmIGluICR7cG9maWxlX2RpclsqXX07 IGRvCgkJUExVR0lOX0xJTkdVQVM9JCggbHMgJHtmfS9wbyAtLWlnbm9yZT0iKi5wb3QiIHwg c2VkIC1lICJzOi5wbzo6ZyIgfCBjdXQgLWRfIC1mMSB8IHRyIFxcXDAxMiAnICcgKQoJCWVp bmZvICJMSU5HVUFTPVwiJHtQTFVHSU5fTElOR1VBU31cIiIKCgkJc2VkIC1pICR7Zn0vTWFr ZWZpbGUgXAoJCQktZSAnczpcJCh3aWxkY2FyZFtbOnNwYWNlOl1dKlwkKFBPRElSKS9cKi5w byk6XCQoZm9yZWFjaCBkaXIsXCQoTElOR1VBUyksXCQod2lsZGNhcmQgXCQoUE9ESVIpXC9c JChkaXIpXCoucG8pKTonIFwKCQkJfHwgZGllICJzZWQgZmFpbGVkIGZvciBMaW5ndWFzIgoJ ZG9uZQoKCXN0cmlwLWxpbmd1YXMgJHtQTFVHSU5fTElOR1VBU30gZW4KfQoKdmRyX2kxOG4o KSB7CiMgCWkxOG4gaGFuZGxpbmcgd2FzIGRlcHJlY2F0ZWQgc2luY2UgPj1tZWRpYS12aWRl by92ZHItMS41LjksCiMJZmluYWxseSB3aXRoID49bWVkaWEtdmlkZW8vdmRyLTEuNy4yNyBp dCBoYXMgYmVlbiBkcm9wcGVkIGVudGlyZWx5IGFuZCBzb21lCiMJcGx1Z2lucyB3aWxsIGZh aWwgdG8gY29tcGlsZSBiZWNhdXNlIHRoZXkncmUgc3RpbGwgdXNpbmcgdGhlIG9sZCB2YXJp YW50LgojCVNpbXBseSByZW1vdmUgdGhlIGkxOG4ubyBvYmplY3QgZnJvbSBNYWtlZmlsZSAo T0JKRUNUKSBhbmQKIwlyZW1vdmUgInN0YXRpYyBjb25zdCB0STE4blBocmFzZSoiIGZyb20g aTE4bi5oLgoKCWdldHRleHRfbWlzc2luZwoKCWxvY2FsIEkxOE5fT0JKRUNUPSQoIGdyZXAg aTE4bi5vIE1ha2VmaWxlICkKCWlmIFtbIC1uICR7STE4Tl9PQkpFQ1R9IF1dOyB0aGVuCgoJ CWlmIFtbICIke0tFRVBfSTE4Tk9CSkVDVDotbm99IiA9ICJ5ZXMiIF1dOyB0aGVuCgkJCWRl dl9jaGVjayAiRm9yY2VkIHRvIGtlZXAgaTE4bi5vIgoJCWVsc2UKCQkJc2VkIC1pICJzOmkx OG4ubzo6ZyIgTWFrZWZpbGUKCQkJZGV2X2NoZWNrICJPQkpFQ1QgaTE4bi5vIGZvdW5kIgoJ CQlkZXZfY2hlY2sgInJlbW92ZWQgcGVyIHNlZCBcbiIKCQlmaQoKCWVsc2UKCQlkZXZfY2hl Y2sgIk9CSkVDVCBpMThuLm8gbm90IGZvdW5kIGluIE1ha2VmaWxlIgoJCWRldl9jaGVjayAi YWxsIGZpbmUgb3IgbWFudWFsIHJldmlldyBuZWVkZWQ/IFxuIgoJZmkKCglsb2NhbCBJMThO X1NUUklORz0kKCBbWyAtZSBpMThuLmggXV0gJiYgZ3JlcCB0STE4blBocmFzZSBpMThuLmgg KQoJaWYgW1sgLW4gJHtJMThOX1NUUklOR30gXV07IHRoZW4KCQlzZWQgLWkgInM6XmV4dGVy bltbOnNwYWNlOl1dKmNvbnN0W1s6c3BhY2U6XV0qdEkxOG5QaHJhc2U6Ly9zdGF0aWMgY29u c3QgdEkxOG5QaHJhc2U6IiBpMThuLmgKCQlkZXZfY2hlY2sgIm9ic29sZXRlIHRJMThuUGhy YXNlIGZvdW5kIgoJCWRldl9jaGVjayAiZGlzYWJsZWQgcGVyIHNlZCwgcGxlYXNlIHJlY2hl Y2sgXG4iCgllbHNlCgkJZGV2X2NoZWNrICJvYnNvbGV0ZSB0STE4blBocmFzZSBub3QgZm91 bmQsIGZpbmUuLi4iCgkJZGV2X2NoZWNrICJwbGVhc2UgcmV2aWV3LCBtYXkgYmUgaW4gc3Vi ZGlyLi4uIFxuIgoJZmkKfQoKcmVtb3ZlX2kxOG5faW5jbHVkZSgpIHsKCSMgcmVtb3ZlIHVu ZWVkZWQgaTE4Lm4gaW5jbHVkZXMKCglsb2NhbCBmCglmb3IgZjsgZG8KCQlzZWQgLWkgIiR7 Zn0iIFwKCQktZSAiczpeI2luY2x1ZGVbWzpzcGFjZTpdXSpcImkxOG4uaFwiOi8vOiIKCWRv bmUKCglkZXZfY2hlY2sgInJlbW92ZWQgaTE4bi5oIGluY2x1ZGUgaW4gJHtAfSIKfQoKdmRy LXBsdWdpbi0yX3ByaW50X2VuYWJsZV9jb21tYW5kKCkgewoJbG9jYWwgcF9uYW1lIGM9MCBs PSIiCglmb3IgcF9uYW1lIGluICR7dmRyX3BsdWdpbl9saXN0fTsgZG8KCQljPSQoKCBjKzEg KSkKCQlsPSIkbCAke3BfbmFtZSN2ZHItfSIKCWRvbmUKCgllbG9nCgljYXNlICRjIGluCgkx KQllbG9nICJJbnN0YWxsZWQgcGx1Z2luJHtsfSIgOzsKCSopCWVsb2cgIkluc3RhbGxlZCAk YyBwbHVnaW5zOiR7bH0iIDs7Cgllc2FjCgllbG9nICJUbyBhY3RpdmF0ZSBhIHBsdWdpbiBl eGVjdXRlIHRoaXMgY29tbWFuZDoiCgllbG9nICJcdGVzZWxlY3QgdmRyLXBsdWdpbiBlbmFi bGUgPHBsdWdpbl9uYW1lPiAuLi4iCgllbG9nCn0KCmhhc192ZHIoKSB7CglbWyAtZiAiJHtW RFJfSU5DTFVERV9ESVJ9Ii9jb25maWcuaCBdXQp9CgojIyBleHBvcnRlZCBmdW5jdGlvbnMK CnZkci1wbHVnaW4tMl9wa2dfc2V0dXAoKSB7CgkjIG1pc3NpbmcgJHtjaG9zdH0tIHRhZwoJ dGMtZXhwb3J0IENDIENYWAoKCSMgLWZQSUMgaXMgbmVlZGVkIGZvciBzaGFyZWQgb2JqZWN0 cyBvbiBzb21lIHBsYXRmb3JtcyAoYW1kNjQgYW5kIG90aGVycykKCWFwcGVuZC1mbGFncyAt ZlBJQwoKCSMgUGx1Z2lucyBuZWVkIHRvIGJlIGNvbXBpbGVkIHdpdGggcG9zaXRpb24gaW5k ZXBlbmRlbnQgY29kZSwgb3RoZXJ3aXNlIGxpbmtpbmcKCSMgVkRSIGFnYWluc3QgaXQgd2ls bCBmYWlsCgkjIGRlcHJpY2F0ZWQgaWYgZmksIGFzIHdlIGhhdmUgb25seSA+PXZkci0yIGlu IHRoZSB0cmVlLCBmaXggbWUgbGF0ZXIuLi4KCWlmIGhhc192ZXJzaW9uICI+PW1lZGlhLXZp ZGVvL3Zkci0xLjcuMTMiOyB0aGVuCgkJYXBwZW5kLWN4eGZsYWdzIC1EX0ZJTEVfT0ZGU0VU X0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKCWZp CgoJIyBXaGVyZSBzaG91bGQgdGhlIHBsdWdpbnMgbGl2ZSBpbiB0aGUgZmlsZXN5c3RlbQoJ VkRSX1BMVUdJTl9ESVI9JChwa2ctY29uZmlnIC0tdmFyaWFibGU9bGliZGlyIHZkcikKCglW RFJfQ0hFQ0tTVU1fRElSPSIke1ZEUl9QTFVHSU5fRElSJS9wbHVnaW5zfS9jaGVja3N1bXMi CgoJVkRSX1JDX0RJUj0iL3Vzci9zaGFyZS92ZHIvcmNzY3JpcHQiCgoJIyBQYXRoZXMgdG8g aW5jbHVkZXMKCVZEUl9JTkNMVURFX0RJUj0iL3Vzci9pbmNsdWRlL3ZkciIKCURWQl9JTkNM VURFX0RJUj0iL3Vzci9pbmNsdWRlIgoKCVRNUF9MT0NBTEVfRElSPSIke1dPUktESVJ9L3Rt cC1sb2NhbGUiCgoJTE9DRElSPSQocGtnLWNvbmZpZyAtLXZhcmlhYmxlPWxvY2RpciB2ZHIp CgoJaWYgISBoYXNfdmRyOyB0aGVuCgkJIyBzZXQgdG8gaW52YWxpZCB2YWx1ZXMgdG8gZGV0 ZWN0IGFidXNlcwoJCVZEUlZFUlNJT049ImVjbGFzc19ub192ZHJfaW5zdGFsbGVkIgoJCUFQ SVZFUlNJT049ImVjbGFzc19ub192ZHJfaW5zdGFsbGVkIgoKCQlpZiBbWyAiJHtHRU5UT09f VkRSX0NPTkRJVElPTkFMOi1ub30iID0gInllcyIgXV0gJiYgISB1c2UgdmRyOyB0aGVuCgkJ CWVpbmZvICJWRFIgbm90IGZvdW5kISIKCQllbHNlCgkJCSMgaWYgdmRyIGlzIHJlcXVpcmVk CgkJCWRpZSAiVkRSIG5vdCBmb3VuZCEiCgkJZmkKCQlyZXR1cm4KCWZpCgoJVkRSVkVSU0lP Tj0kKGF3ayAtRiciJyAnL2RlZmluZSBWRFJWRVJTSU9OLyB7cHJpbnQgJDJ9JyAiJHtWRFJf SU5DTFVERV9ESVJ9Ii9jb25maWcuaCkKCUFQSVZFUlNJT049JChwa2ctY29uZmlnIC0tdmFy aWFibGU9YXBpdmVyc2lvbiB2ZHIpCgoJZWluZm8gIkNvbXBpbGluZyBhZ2FpbnN0IgoJZWlu Zm8gIlx0dmRyLSR7VkRSVkVSU0lPTn0gW0FQSSB2ZXJzaW9uICR7QVBJVkVSU0lPTn1dIgoK CWlmIFtbIC1uICIke1ZEUl9MT0NBTF9QQVRDSEVTX0RJUn0iIF1dOyB0aGVuCgkJZWVycm9y ICJVc2luZyBWRFJfTE9DQUxfUEFUQ0hFU19ESVIgaXMgZGVwcmVjYXRlZCEiCgkJZWVycm9y ICJQbGVhc2UgbW92ZSBhbGwgeW91ciBwYXRjaGVzIGludG8iCgkJZWVycm9yICIke0VST09U fS9ldGMvcG9ydGFnZS9wYXRjaGVzLyR7Q0FURUdPUll9LyR7UH0iCgkJZWVycm9yICJhbmQg cmVtb3ZlIG9yIHVuc2V0IHRoZSBWRFJfTE9DQUxfUEFUQ0hFU19ESVIgdmFyaWFibGUuIgoJ CWRpZQoJZmkKfQoKdmRyLXBsdWdpbi0yX3NyY191dGlsKCkgewoJd2hpbGUgWyAiJDEiIF07 IGRvCgkJY2FzZSAiJDEiIGluCgkJYWxsKQoJCQl2ZHItcGx1Z2luLTJfc3JjX3V0aWwgdW5w YWNrIGFkZF9sb2NhbF9wYXRjaCBwYXRjaG1ha2VmaWxlIGxpbmd1YXNfcGF0Y2ggaTE4bgoJ CQk7OwoJCXByZXBhcmUpCgkJCXZkci1wbHVnaW4tMl9zcmNfdXRpbCBhZGRfbG9jYWxfcGF0 Y2ggcGF0Y2htYWtlZmlsZSBsaW5ndWFzX3BhdGNoIGkxOG4KCQkJOzsKCQl1bnBhY2spCgkJ CXVucGFja2VyX3NyY191bnBhY2sKCQkJOzsKCQlhZGRfbG9jYWxfcGF0Y2gpCgkJCWNkICIk e1N9IiB8fCBkaWUgIkNvdWxkIG5vdCBjaGFuZ2UgdG8gcGx1Z2luLXNvdXJjZS1kaXJlY3Rv cnkhIgoJCQlpZiBbWyAke0VBUEl9ID09IDYgXV07IHRoZW4KCQkJCWVhcHBseV91c2VyCgkJ CWVsc2UKCQkJCWVwYXRjaF91c2VyCgkJCWZpCgkJCTs7CgkJcGF0Y2htYWtlZmlsZSkKCQkJ Y2QgIiR7U30iIHx8IGRpZSAiQ291bGQgbm90IGNoYW5nZSB0byBwbHVnaW4tc291cmNlLWRp cmVjdG9yeSEiCgkJCXZkcl9wYXRjaG1ha2VmaWxlCgkJCTs7CgkJaTE4bikKCQkJdmRyX2kx OG4KCQkJOzsKCQlsaW5ndWFzX3BhdGNoKQoJCQlsaW5ndWFzX3N1cHBvcnQKCQkJOzsKCQll c2FjCgoJCXNoaWZ0Cglkb25lCn0KCnZkci1wbHVnaW4tMl9zcmNfdW5wYWNrKCkgewoJaWYg W1sgLXogJHtWRFJfSU5DTFVERV9ESVJ9IF1dOyB0aGVuCgkJZWVycm9yICJXcm9uZyB1c2Ug b2YgdmRyLXBsdWdpbi0yLmVjbGFzcy4iCgkJZWVycm9yICJBbiBlYnVpbGQgZm9yIGEgdmRy LXBsdWdpbiB3aWxsIG5vdCB3b3JrIHdpdGhvdXQgY2FsbGluZyB2ZHItcGx1Z2luLTJfc3Jj X3VucGFjay4iCgkJZWNobwoJCWVlcnJvciAiUGxlYXNlIHJlcG9ydCB0aGlzIGF0IGJ1Z3Mu Z2VudG9vLm9yZy4iCgkJZGllICJ2ZHItcGx1Z2luLTJfc3JjX3VucGFjayBub3QgY2FsbGVk ISIKCWZpCgoJaWYgWyAteiAiJDEiIF07IHRoZW4KCQl2ZHItcGx1Z2luLTJfc3JjX3V0aWwg dW5wYWNrCgllbHNlCgkJdmRyLXBsdWdpbi0yX3NyY191dGlsICRACglmaQp9Cgp2ZHItcGx1 Z2luLTJfc3JjX3ByZXBhcmUoKSB7CglpZiBbWyAteiAke1ZEUl9JTkNMVURFX0RJUn0gXV07 IHRoZW4KCQllZXJyb3IgIldyb25nIHVzZSBvZiB2ZHItcGx1Z2luLTIuZWNsYXNzLiIKCQll ZXJyb3IgIkFuIGVidWlsZCBmb3IgYSB2ZHItcGx1Z2luIHdpbGwgbm90IHdvcmsgd2l0aG91 dCBjYWxsaW5nIHZkci1wbHVnaW4tMl9zcmNfcHJlcGFyZS4iCgkJZWNobwoJCWVlcnJvciAi UGxlYXNlIHJlcG9ydCB0aGlzIGF0IGJ1Z3MuZ2VudG9vLm9yZy4iCgkJZGllICJ2ZHItcGx1 Z2luLTJfc3JjX3ByZXBhcmUgbm90IGNhbGxlZCEiCglmaQoKCVtbICR7RUFQSX0gPT0gWzQ1 XSBdXSAmJiBbWyAke1BBVENIRVNbQF19IF1dICYmIGVwYXRjaCAiJHtQQVRDSEVTW0BdfSIK CVtbICR7RUFQSX0gPT0gIjYiIF1dICYmIFtbICR7UEFUQ0hFU1tAXX0gXV0gJiYgZWFwcGx5 ICIke1BBVENIRVNbQF19IgoKCWRlYnVnLXByaW50ICIkRlVOQ05BTUU6IGFwcGx5aW5nIHVz ZXIgcGF0Y2hlcyIKCgl2ZHItcGx1Z2luLTJfc3JjX3V0aWwgcHJlcGFyZQp9Cgp2ZHItcGx1 Z2luLTJfc3JjX2NvbXBpbGUoKSB7CglbIC16ICIkMSIgXSAmJiB2ZHItcGx1Z2luLTJfc3Jj X2NvbXBpbGUgY29tcGlsZQoKCXdoaWxlIFsgIiQxIiBdOyBkbwoJCWNhc2UgIiQxIiBpbgoJ CWNvbXBpbGUpCgkJCWlmIFtbICEgLWYgJHtXT1JLRElSfS8udmRyLXBsdWdpbl9tYWtlZmls ZV9wYXRjaGVkIF1dOyB0aGVuCgkJCQllZXJyb3IgIldyb25nIHVzZSBvZiB2ZHItcGx1Z2lu LTIuZWNsYXNzLiIKCQkJCWVlcnJvciAiQW4gZWJ1aWxkIGZvciBhIHZkci1wbHVnaW4gd2ls bCBub3Qgd29yayB3aXRob3V0IgoJCQkJZWVycm9yICJjYWxsaW5nIHZkci1wbHVnaW4tMl9z cmNfY29tcGlsZSB0byBwYXRjaCB0aGUgTWFrZWZpbGUuIgoJCQkJZWNobwoJCQkJZWVycm9y ICJQbGVhc2UgcmVwb3J0IHRoaXMgYXQgYnVncy5nZW50b28ub3JnLiIKCQkJCWRpZSAidmRy LXBsdWdpbi0yX3NyY19jb21waWxlIG5vdCBjYWxsZWQhIgoJCQlmaQoJCQljZCAiJHtTfSIK CgkJCWVtYWtlIGFsbCAke0JVSUxEX1BBUkFNU30gXAoJCQkJTE9DQUxFRElSPSIke1RNUF9M T0NBTEVfRElSfSIgXAoJCQkJTE9DRElSPSIke1RNUF9MT0NBTEVfRElSfSIgXAoJCQkJTElC RElSPSIke1N9IiBcCgkJCQlUTVBESVI9IiR7VH0iIFwKCQkJCXx8IGRpZSAiZW1ha2UgYWxs IGZhaWxlZCIKCQkJOzsKCQllc2FjCgoJCXNoaWZ0Cglkb25lCn0KCnZkci1wbHVnaW4tMl9z cmNfaW5zdGFsbCgpIHsKCWlmIFtbIC16ICR7VkRSX0lOQ0xVREVfRElSfSBdXTsgdGhlbgoJ CWVlcnJvciAiV3JvbmcgdXNlIG9mIHZkci1wbHVnaW4tMi5lY2xhc3MuIgoJCWVlcnJvciAi QW4gZWJ1aWxkIGZvciBhIHZkci1wbHVnaW4gd2lsbCBub3Qgd29yayB3aXRob3V0IGNhbGxp bmcgdmRyLXBsdWdpbi0yX3NyY19pbnN0YWxsLiIKCQllY2hvCgkJZWVycm9yICJQbGVhc2Ug cmVwb3J0IHRoaXMgYXQgYnVncy5nZW50b28ub3JnLiIKCQlkaWUgInZkci1wbHVnaW4tMl9z cmNfaW5zdGFsbCBub3QgY2FsbGVkISIKCWZpCgoJY2QgIiR7V09SS0RJUn0iCgoJaWYgW1sg LW4gJHtWRFJfTUFJTlRBSU5FUl9NT0RFfSBdXTsgdGhlbgoJCWxvY2FsIG1uYW1lPSIke1B9 LU1ha2VmaWxlIgoJCWNwICIke1N9Ii9NYWtlZmlsZSAiJHttbmFtZX0ucGF0Y2hlZCIKCQlj cCBNYWtlZmlsZS5iZWZvcmUgIiR7bW5hbWV9LmJlZm9yZSIKCgkJZGlmZiAtdSAiJHttbmFt ZX0uYmVmb3JlIiAiJHttbmFtZX0ucGF0Y2hlZCIgPiAiJHttbmFtZX0uZGlmZiIKCgkJaW5z aW50byAiL3Vzci9zaGFyZS92ZHIvbWFpbnRhaW5lci1kYXRhL21ha2VmaWxlLWNoYW5nZXMi CgkJZG9pbnMgIiR7bW5hbWV9LmRpZmYiCgoJCWluc2ludG8gIi91c3Ivc2hhcmUvdmRyL21h aW50YWluZXItZGF0YS9tYWtlZmlsZS1iZWZvcmUiCgkJZG9pbnMgIiR7bW5hbWV9LmJlZm9y ZSIKCgkJaW5zaW50byAiL3Vzci9zaGFyZS92ZHIvbWFpbnRhaW5lci1kYXRhL21ha2VmaWxl LXBhdGNoZWQiCgkJZG9pbnMgIiR7bW5hbWV9LnBhdGNoZWQiCgoJZmkKCgljZCAiJHtTfSIK Cglsb2NhbCBTT0ZJTEVfU1RSSU5HPSQoZ3JlcCBTT0ZJTEUgTWFrZWZpbGUpCglpZiBbWyAt biAke1NPRklMRV9TVFJJTkd9IF1dOyB0aGVuCgkJZW1ha2UgaW5zdGFsbCBcCgkJJHtCVUlM RF9QQVJBTVN9IFwKCQlUTVBESVI9IiR7VH0iIFwKCQlERVNURElSPSIke0R9IiBcCgkJfHwg ZGllICJlbWFrZSBpbnN0YWxsIChtYWtlZmlsZSB0YXJnZXQpIGZhaWxlZCIKCWVsc2UKCQlk ZXZfY2hlY2sgIlBsdWdpbiB1c2Ugc3RpbGwgdGhlIG9sZCBNYWtlZmlsZSBoYW5kbGluZyIK CQlpbnNpbnRvICIke1ZEUl9QTFVHSU5fRElSfSIKCQlkb2lucyBsaWJ2ZHItKi5zby4qCglm aQoKCWlmIFtbIC1kICR7VE1QX0xPQ0FMRV9ESVJ9IF1dOyB0aGVuCgkJZWluZm8gIkluc3Rh bGxpbmcgbG9jYWxlcyIKCQljZCAiJHtUTVBfTE9DQUxFX0RJUn0iCgoJCWxvY2FsIGxpbmd1 YXMKCQlmb3IgbGluZ3VhcyBpbiAke0xJTkdVQVNbKl19OyBkbwoJCWluc2ludG8gIiR7TE9D RElSfSIKCQljcCAtciAtLXBhcmVudHMgJHtsaW5ndWFzfSogJHtEfS8ke0xPQ0RJUn0KCQlk b25lCglmaQoKCWNkICIke0R9L3Vzci8kKGdldF9saWJkaXIpL3Zkci9wbHVnaW5zIgoKCSMg Y3JlYXRlIGxpc3Qgb2YgYWxsIGNyZWF0ZWQgcGx1Z2luIGxpYnMKCXZkcl9wbHVnaW5fbGlz dD0iIgoJbG9jYWwgcF9uYW1lCglmb3IgcCBpbiBsaWJ2ZHItKi5zby4qOyBkbwoJCXBfbmFt ZT0iJHtwJS5zbyp9IgoJCXBfbmFtZT0iJHtwX25hbWUjbGlifSIKCQl2ZHJfcGx1Z2luX2xp c3Q9IiR7dmRyX3BsdWdpbl9saXN0fSAke3BfbmFtZX0iCglkb25lCgoJY2QgIiR7U30iCgoJ Y3JlYXRlX2hlYWRlcl9jaGVja3N1bV9maWxlICR7dmRyX3BsdWdpbl9saXN0fQoJY3JlYXRl X3BsdWdpbmRiX2ZpbGUgJHt2ZHJfcGx1Z2luX2xpc3R9CgoJbG9jYWwgY29tbW9uZG9jPSgg UkVBRE1FKiBISVNUT1JZIENIQU5HRUxPRyApCglmb3IgZG9jZmlsZSBpbiAiJHtjb21tb25k b2NbQF19IjsgZG8KCQlpZiBbWyAke0VBUEl9ID09ICI2IiBdXTsgdGhlbgoJCQlsb2NhbCBE T0NTPSIke0RPQ1N9ICR7ZG9jZmlsZX0iCgkJCVtbIC1mICR7ZG9jZmlsZX0gXV0gJiYgZWlu c3RhbGxkb2NzICIke0RPQ1NbQF19IgoJCWVsc2UKCQkJW1sgLWYgJHtkb2NmaWxlfSBdXSAm JiBkb2RvYyAke2RvY2ZpbGV9CgkJZmkKCWRvbmUKCgkjIGlmIFZEUl9DT05GRF9GSUxFIGlz IGVtcHR5IGFuZCAke0ZJTEVTRElSfS9jb25mZCBleGlzdHMgdGFrZSBpdAoJW1sgLXogJHtW RFJfQ09ORkRfRklMRX0gXV0gJiYgW1sgLWUgJHtGSUxFU0RJUn0vY29uZmQgXV0gJiYgVkRS X0NPTkZEX0ZJTEU9JHtGSUxFU0RJUn0vY29uZmQKCglpZiBbWyAtbiAke1ZEUl9DT05GRF9G SUxFfSBdXTsgdGhlbgoJCW5ld2NvbmZkICIke1ZEUl9DT05GRF9GSUxFfSIgdmRyLiR7VkRS UExVR0lOfQoJZmkKCgkjIGlmIFZEUl9SQ0FERE9OX0ZJTEUgaXMgZW1wdHkgYW5kICR7RklM RVNESVJ9L3JjLWFkZG9uLnNoIGV4aXN0cyB0YWtlIGl0CglbWyAteiAke1ZEUl9SQ0FERE9O X0ZJTEV9IF1dICYmIFtbIC1lICR7RklMRVNESVJ9L3JjLWFkZG9uLnNoIF1dICYmIFZEUl9S Q0FERE9OX0ZJTEU9JHtGSUxFU0RJUn0vcmMtYWRkb24uc2gKCglpZiBbWyAtbiAke1ZEUl9S Q0FERE9OX0ZJTEV9IF1dOyB0aGVuCgkJaW5zaW50byAiJHtWRFJfUkNfRElSfSIKCQluZXdp bnMgIiR7VkRSX1JDQURET05fRklMRX0iIHBsdWdpbi0ke1ZEUlBMVUdJTn0uc2gKCWZpCn0K CnZkci1wbHVnaW4tMl9wa2dfcG9zdGluc3QoKSB7Cgl2ZHItcGx1Z2luLTJfcHJpbnRfZW5h YmxlX2NvbW1hbmQKCglpZiBbWyAtbiAiJHtWRFJfQ09ORkRfRklMRX0iIF1dOyB0aGVuCgkJ ZWxvZyAiUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBjb25maWctZmlsZSIKCQllbG9nICJc dC9ldGMvY29uZi5kL3Zkci4ke1ZEUlBMVUdJTn0iCgkJZWxvZwoJZmkKfQoKdmRyLXBsdWdp bi0yX3BrZ19wb3N0cm0oKSB7CjoKfQoKdmRyLXBsdWdpbi0yX3BrZ19jb25maWcoKSB7CjoK fQo= --------------090607050400070003020809--