From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from pigeon.gentoo.org ([69.77.167.62] helo=lists.gentoo.org)
	by finch.gentoo.org with esmtp (Exim 4.60)
	(envelope-from <gentoo-dev+bounces-33023-garchives=archives.gentoo.org@lists.gentoo.org>)
	id 1KmacU-0008LV-0L
	for garchives@archives.gentoo.org; Sun, 05 Oct 2008 20:54:26 +0000
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 63B0BE03F8;
	Sun,  5 Oct 2008 20:54:25 +0000 (UTC)
Received: from ey-out-1920.google.com (ey-out-1920.google.com [74.125.78.150])
	by pigeon.gentoo.org (Postfix) with ESMTP id DC989E03F8
	for <gentoo-dev@lists.gentoo.org>; Sun,  5 Oct 2008 20:54:24 +0000 (UTC)
Received: by ey-out-1920.google.com with SMTP id 4so680681eyk.10
        for <gentoo-dev@lists.gentoo.org>; Sun, 05 Oct 2008 13:54:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:in-reply-to:mime-version:content-type:references
         :x-google-sender-auth;
        bh=UJfPl0GDN8TucAyPt2RmObog9GLsd0Pq0yuK3Jqlrm4=;
        b=oHccL4ipwzTGZWo1Dw1qAXRA+dvZftKVDiiHWlIqFil+y9vRZT6HzfJjsuOpzXFKhg
         VGcAqvOF4ArQ5TsTPiHsyQ9LavOIT6BVBIKoUBIvGg9JsrXwdae5rkMWvM5JIC3cAMfq
         yCIWbGVQMfiRTR1y2GcLxwB58M3Hi95d+mlAc=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:in-reply-to:mime-version
         :content-type:references:x-google-sender-auth;
        b=BbRGse4mn9KR853n09Ea6VwjQg6nHypP0BQF2yzZCXUX6QVBsecaitYlIMuer/J2uk
         Yyy27MeJtDKva/li8GY9ZjQvOiO0mqvFza1rg3Y4zzBqf7+wG3RMKVAHuupq0sJ3/Hvb
         yqmmc9oPC50iPJWPqS5cdlZoSw3jobaVWFrsM=
Received: by 10.210.20.17 with SMTP id 17mr5210267ebt.59.1223240063593;
        Sun, 05 Oct 2008 13:54:23 -0700 (PDT)
Received: by 10.210.123.18 with HTTP; Sun, 5 Oct 2008 13:54:23 -0700 (PDT)
Message-ID: <201bac3a0810051354v4e22eb6fv1837142ee3a1a2bd@mail.gmail.com>
Date: Sun, 5 Oct 2008 22:54:23 +0200
From: "Jonas Bernoulli" <jonas@bernoulli.cc>
Sender: jonasbernoulli@gmail.com
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] Re: bzr.eclass into Portage
In-Reply-To: <18664.63712.432021.661712@a1ihome1.kph.uni-mainz.de>
Precedence: bulk
List-Post: <mailto:gentoo-dev@lists.gentoo.org>
List-Help: <mailto:gentoo-dev+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-dev+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org>
X-BeenThere: gentoo-dev@lists.gentoo.org
Reply-to: gentoo-dev@lists.gentoo.org
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_39896_24720073.1223240063591"
References: <20080317193133.525ba4ab@gentoo.org> <47DF0EB6.8010300@gentoo.org>
	 <47E0994D.20705@gentoo.org> <20080320083853.65c20275@gentoo.org>
	 <47E32FDE.60805@gentoo.org> <20080321124913.00d96832@gentoo.org>
	 <18664.63712.432021.661712@a1ihome1.kph.uni-mainz.de>
X-Google-Sender-Auth: b44b32ccc151b78a
X-Archives-Salt: 7a997212-6692-4c33-90ff-32d073fa46d3
X-Archives-Hash: 60be06022c6c885806fde401d97b0a08

------=_Part_39896_24720073.1223240063591
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Here is a patch that adds support for shared repositories. Since bzr
is still a bit slow this is quite useful when using multiple branches.

For example I have modified the live emacs(-cvs) ebuild to use the bzr
mirror of emacs instead of cvs. I also have my own emacs branches, and
sometimes want to install from one of these and at other times from
trunk. Without support for shared repositories this would require the
standalone branches to be manually moved out of the way everytime I
want to switch branches. (Or worse the complete tree to be checked out
from scratch every time I switch branches.)

Please consider these changes

Jonas

--- /usr/local/portage/layman/emacs/eclass/bzr.eclass	2008-10-05
22:40:18.000000000 +0200
+++ /usr/portage/eclass/bzr.eclass	2008-10-05 10:22:12.000000000 +0200
@@ -9,6 +9,7 @@
 # @DESCRIPTION:
 # The bzr.eclass provides support for apps using the bazaar DSCM
(distributed source control management system).
 # The eclass was originally derived from the git eclass.
+# Shared repository support added by Jonas Bernoulli <jonas@bernoulli.cc>.
 #
 # Note: Just set EBZR_REPO_URI to the url of the branch and the src_unpack
 # this eclass provides will put an export of the branch in ${WORKDIR}/${PN}.
@@ -22,13 +23,23 @@
 HOMEPAGE="http://bazaar-vcs.org/"
 DESCRIPTION="Based on the ${EBZR} eclass"

-DEPEND=">=dev-util/bzr-0.92"
+DEPEND=">=dev-util/bzr-1.6"

 # @ECLASS-VARIABLE: EBZR_STORE_DIR
 # @DESCRIPTION:
 # The dir to store the bzr sources.
 EBZR_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bzr-src"

+# @ECLASS-VARIABLE: EBZR_SHARED_REPO
+# @DESCRIPTION:
+# Whether to use a shared repository (see bzr help repositories).
+EBZR_SHARED_REPO="${EBZR_SHARED_REPO:-}"
+
+# @ECLASS-VARIABLE: EBZR_INIT_REPO_CMD
+# @DESCRIPTION:
+# The bzr command to initialize the shared repository.
+EBZR_INIT_REPO_CMD="bzr init-repo"
+
 # @ECLASS-VARIABLE: EBZR_FETCH_CMD
 # @DESCRIPTION:
 # The bzr command to fetch the sources.
@@ -54,9 +65,24 @@
 # The bzr command to list revision number of the branch.
 EBZR_REVNO_CMD="bzr revno"

+# @ECLASS-VARIABLE: EBZR_INIT_REPO_OPTS
+# @DESCRIPTION:
+# Options passed to the init-repo commands.
+EBZR_INIT_REPO_OPTS="${EBZR_INIT_REPO_OPTS:-}"
+
+# @ECLASS-VARIABLE: EBZR_FETCH_OPTS
+# @DESCRIPTION:
+# Options passed to the fetch commands in additon to EBZR_OPTIONS.
+EBZR_FETCH_OPTS="${EBZR_FETCH_OPTS:-}"
+
+# @ECLASS-VARIABLE: EBZR_UPDATE_OPTS
+# @DESCRIPTION:
+# Options passed to the update commands in additon to EBZR_OPTIONS.
+EBZR_UPDATE_OPTS="${EBZR_UPDATE_OPTS:-}"
+
 # @ECLASS-VARIABLE: EBZR_OPTIONS
 # @DESCRIPTION:
-# The options passed to the fetch and update commands.
+# The common options passed to the fetch and update commands.
 EBZR_OPTIONS="${EBZR_OPTIONS:-}"

 # @ECLASS-VARIABLE: EBZR_REPO_URI
@@ -72,7 +98,7 @@
 # 		- lp://
 # @CODE
 #
-# Note: lp = https://launchpad.net
+# Note: lp = http://launchpad.net
 EBZR_REPO_URI="${EBZR_REPO_URI:-}"

 # @ECLASS-VARIABLE: EBZR_BOOTSTRAP
@@ -93,21 +119,26 @@
 # @ECLASS-VARIABLE: EBZR_BRANCH
 # @DESCRIPTION:
 # The branch to fetch in bzr_fetch().
-#
-# default: trunk
-EBZR_BRANCH="${EBZR_BRANCH:-trunk}"
+EBZR_BRANCH="${EBZR_BRANCH:-}"

 # @ECLASS-VARIABLE: EBZR_REVISION
 # @DESCRIPTION:
 # Revision to get, if not latest (see http://bazaar-vcs.org/BzrRevisionSpec)
 EBZR_REVISION="${EBZR_REVISION:-}"

-# @ECLASS-VARIABLE: EBZR_CACHE_DIR
+# @ECLASS-VARIABLE: EBZR_CACHE_REPO_DIR
 # @DESCRIPTION:
-# The dir to store the source for the package, relative to EBZR_STORE_DIR.
+# The dir name of the local shared repository (if any).
 #
 # default: ${PN}
-EBZR_CACHE_DIR="${EBZR_CACHE_DIR:-${PN}}"
+EBZR_CACHE_REPO_DIR="${EBZR_CACHE_REPO_DIR:-}"
+
+# @ECLASS-VARIABLE: EBZR_CACHE_BRANCH_DIR
+# @DESCRIPTION:
+# The dir name of the local branch.
+#
+# default: ${EBZR_BRANCH} when using a shared repository or ${PN} otherwise
+EBZR_CACHE_BRANCH_DIR="${EBZR_CACHE_BRANCH_DIR:-}"

 # @FUNCTION: bzr_fetch
 # @DESCRIPTION:
@@ -143,37 +174,64 @@

 	cd -P "${EBZR_STORE_DIR}" || die "${EBZR}: can't chdir to ${EBZR_STORE_DIR}"

-	EBZR_BRANCH_DIR="${EBZR_STORE_DIR}/${EBZR_CACHE_DIR}"
-
 	addwrite "${EBZR_STORE_DIR}"
-	addwrite "${EBZR_BRANCH_DIR}"

-	debug-print "${FUNCNAME}: EBZR_OPTIONS = ${EBZR_OPTIONS}"
+	if [[ -n ${EBZR_SHARED_REPO} ]]; then
+		# using shared repository
+		EBZR_REPO_DIR="${EBZR_STORE_DIR}/${EBZR_CACHE_REPO_DIR:-${PN}}"
+		EBZR_BRANCH_DIR="${EBZR_REPO_DIR}/${EBZR_CACHE_BRANCH_DIR:-${EBZR_BRANCH}}"
+
+		addwrite "${EBZR_REPO_DIR}"
+	else
+		# using stand-alone branch
+		EBZR_BRANCH_DIR="${EBZR_STORE_DIR}/${EBZR_CACHE_BRANCH_DIR:-${PN}}"
+	fi
+
+	addwrite "${EBZR_BRANCH_DIR}"

-	local repository
+	local branch

-	if [[ ${EBZR_REPO_URI} == */* ]]; then
-		repository="${EBZR_REPO_URI}${EBZR_BRANCH}"
+	if [[ -n ${EBZR_BRANCH} ]] ; then
+		branch="${EBZR_REPO_URI}/${EBZR_BRANCH}"
 	else
-		repository="${EBZR_REPO_URI}"
+		branch="${EBZR_REPO_URI}"
+	fi
+
+	if [[ ${EBZR_SHARED_REPO} && ! -d ${EBZR_REPO_DIR} ]] ; then
+		# create shared repository
+		debug-print "${FUNCNAME}: EBZR_INIT_REPO_OPTS = ${EBZR_INIT_REPO_OPTS}"
+
+		${EBZR_INIT_REPO_CMD} ${EBZR_INIT_REPO_OPTS} ${EBZR_REPO_DIR} \
+			|| die "${EBZR}: can't initialize shared repository."
+	fi
+
+	if [[ ${EBZR_BRANCH} == */* && ! -f $(dirname ${EBZR_BRANCH}) ]]; then
+		# prepare path to branch
+		mkdir -p "${EBZR_REPO_DIR}/$(dirname ${EBZR_BRANCH})"
 	fi

 	if [[ ! -d ${EBZR_BRANCH_DIR} ]] ; then
 		# fetch branch
 		einfo "bzr branch start -->"
-		einfo "   repository: ${repository} => ${EBZR_BRANCH_DIR}"
+		einfo "   branch: ${branch} => ${EBZR_BRANCH_DIR}"
+
+		EBZR_OPTIONS="${EBZR_OPTIONS} ${EBZR_FETCH_OPTS}"
+		debug-print "${FUNCNAME}: EBZR_OPTIONS = ${EBZR_OPTIONS}"

-		${EBZR_FETCH_CMD} ${EBZR_OPTIONS} "${repository}" "${EBZR_BRANCH_DIR}" \
-			|| die "${EBZR}: can't branch from ${repository}."
+		${EBZR_FETCH_CMD} ${EBZR_OPTIONS} "${branch}" "${EBZR_BRANCH_DIR}" \
+			|| die "${EBZR}: can't branch from ${branch}."

 	else
 		# update branch
 		einfo "bzr pull start -->"
-		einfo "   repository: ${repository}"
+		einfo "   branch: ${branch} => ${EBZR_BRANCH_DIR}"
+
+		EBZR_OPTIONS="${EBZR_OPTIONS} ${EBZR_UPDATE_OPTS}"
+		debug-print "${FUNCNAME}: EBZR_OPTIONS = ${EBZR_OPTIONS}"

 		cd "${EBZR_BRANCH_DIR}"
-		${EBZR_UPDATE_CMD} ${EBZR_OPTIONS} "${repository}" \
-			|| die "${EBZR}: can't merge from ${repository}."
+		${EBZR_UPDATE_CMD} ${EBZR_OPTIONS} "${branch}" \
+			|| die "${EBZR}: can't merge from ${branch}."
 		${EBZR_DIFFSTAT_CMD}
 	fi

On Sun, Oct 5, 2008 at 7:26 PM, Ulrich Mueller <ulm@gentoo.org> wrote:
>>>>>> On Fri, 21 Mar 2008, Christian Faulhammer wrote:
>
>> "Jorge Manuel B. S. Vicetto" <jmbsvicetto@gentoo.org>:
>>> With the help of Ingmar we did some cleanup and added support for
>>> eclass-manpages at
>>> http://git.overlays.gentoo.org/gitweb/?p=proj/desktop-effects.git;a=blob_plain;f=eclass/bzr.eclass;hb=bzr.
>>> I'll be moving the updated eclass to the master branch, testing and
>>> asking users to try it out during this weekend.
>>> This eclass is used in the overlay for the live
>>> avant-window-navigator ebuilds, so it's probably not as used/tested
>>> as the remaining packages. It has provided us the support we needed
>>> for awn, but you might need additional features or to review existing
>>> ones. Please test the updated eclass on your overlay, feel free to
>>> maintain it and, when you think its ready, add it to the tree. When
>>> you do so, I'll remove it from our overlay and we'll use the eclass
>>> on the tree.
>
>>  We have a prior version for some time now in the Emacs overlay for
>> two live ebuilds...so we go and merge your changed (ulm already
>> did), test it and report any problems.
>
> As I just learned there are (at least) three overlays using
> bzr.eclass, namely desktop-effects, emacs, and ltsp.
>
> So I think it is justified to move bzr.eclass to the Portage tree.
> Currect version of bzr.eclass is attached.
>
> Please raise your objections *now*.
>
> Ulrich

------=_Part_39896_24720073.1223240063591
Content-Type: application/octet-stream; name=bzr.eclass.patch
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fly5g28f1
Content-Disposition: attachment; filename=bzr.eclass.patch

LS0tIC91c3IvbG9jYWwvcG9ydGFnZS9sYXltYW4vZW1hY3MvZWNsYXNzL2J6ci5lY2xhc3MJMjAw
OC0xMC0wNSAyMjo0MDoxOC4wMDAwMDAwMDAgKzAyMDAKKysrIC91c3IvcG9ydGFnZS9lY2xhc3Mv
YnpyLmVjbGFzcwkyMDA4LTEwLTA1IDEwOjIyOjEyLjAwMDAwMDAwMCArMDIwMApAQCAtOSw2ICs5
LDcgQEAKICMgQERFU0NSSVBUSU9OOgogIyBUaGUgYnpyLmVjbGFzcyBwcm92aWRlcyBzdXBwb3J0
IGZvciBhcHBzIHVzaW5nIHRoZSBiYXphYXIgRFNDTSAoZGlzdHJpYnV0ZWQgc291cmNlIGNvbnRy
b2wgbWFuYWdlbWVudCBzeXN0ZW0pLgogIyBUaGUgZWNsYXNzIHdhcyBvcmlnaW5hbGx5IGRlcml2
ZWQgZnJvbSB0aGUgZ2l0IGVjbGFzcy4KKyMgU2hhcmVkIHJlcG9zaXRvcnkgc3VwcG9ydCBhZGRl
ZCBieSBKb25hcyBCZXJub3VsbGkgPGpvbmFzQGJlcm5vdWxsaS5jYz4uCiAjCiAjIE5vdGU6IEp1
c3Qgc2V0IEVCWlJfUkVQT19VUkkgdG8gdGhlIHVybCBvZiB0aGUgYnJhbmNoIGFuZCB0aGUgc3Jj
X3VucGFjawogIyB0aGlzIGVjbGFzcyBwcm92aWRlcyB3aWxsIHB1dCBhbiBleHBvcnQgb2YgdGhl
IGJyYW5jaCBpbiAke1dPUktESVJ9LyR7UE59LgpAQCAtMjIsMTMgKzIzLDIzIEBACiBIT01FUEFH
RT0iaHR0cDovL2JhemFhci12Y3Mub3JnLyIKIERFU0NSSVBUSU9OPSJCYXNlZCBvbiB0aGUgJHtF
QlpSfSBlY2xhc3MiCiAKLURFUEVORD0iPj1kZXYtdXRpbC9ienItMC45MiIKK0RFUEVORD0iPj1k
ZXYtdXRpbC9ienItMS42IgogCiAjIEBFQ0xBU1MtVkFSSUFCTEU6IEVCWlJfU1RPUkVfRElSCiAj
IEBERVNDUklQVElPTjoKICMgVGhlIGRpciB0byBzdG9yZSB0aGUgYnpyIHNvdXJjZXMuCiBFQlpS
X1NUT1JFX0RJUj0iJHtQT1JUQUdFX0FDVFVBTF9ESVNURElSLSR7RElTVERJUn19L2J6ci1zcmMi
CiAKKyMgQEVDTEFTUy1WQVJJQUJMRTogRUJaUl9TSEFSRURfUkVQTworIyBAREVTQ1JJUFRJT046
CisjIFdoZXRoZXIgdG8gdXNlIGEgc2hhcmVkIHJlcG9zaXRvcnkgKHNlZSBienIgaGVscCByZXBv
c2l0b3JpZXMpLgorRUJaUl9TSEFSRURfUkVQTz0iJHtFQlpSX1NIQVJFRF9SRVBPOi19IgorCisj
IEBFQ0xBU1MtVkFSSUFCTEU6IEVCWlJfSU5JVF9SRVBPX0NNRAorIyBAREVTQ1JJUFRJT046Cisj
IFRoZSBienIgY29tbWFuZCB0byBpbml0aWFsaXplIHRoZSBzaGFyZWQgcmVwb3NpdG9yeS4KK0VC
WlJfSU5JVF9SRVBPX0NNRD0iYnpyIGluaXQtcmVwbyIKKwogIyBARUNMQVNTLVZBUklBQkxFOiBF
QlpSX0ZFVENIX0NNRAogIyBAREVTQ1JJUFRJT046CiAjIFRoZSBienIgY29tbWFuZCB0byBmZXRj
aCB0aGUgc291cmNlcy4KQEAgLTU0LDkgKzY1LDI0IEBACiAjIFRoZSBienIgY29tbWFuZCB0byBs
aXN0IHJldmlzaW9uIG51bWJlciBvZiB0aGUgYnJhbmNoLgogRUJaUl9SRVZOT19DTUQ9ImJ6ciBy
ZXZubyIKIAorIyBARUNMQVNTLVZBUklBQkxFOiBFQlpSX0lOSVRfUkVQT19PUFRTCisjIEBERVND
UklQVElPTjoKKyMgT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGluaXQtcmVwbyBjb21tYW5kcy4KK0VC
WlJfSU5JVF9SRVBPX09QVFM9IiR7RUJaUl9JTklUX1JFUE9fT1BUUzotfSIKKworIyBARUNMQVNT
LVZBUklBQkxFOiBFQlpSX0ZFVENIX09QVFMKKyMgQERFU0NSSVBUSU9OOgorIyBPcHRpb25zIHBh
c3NlZCB0byB0aGUgZmV0Y2ggY29tbWFuZHMgaW4gYWRkaXRvbiB0byBFQlpSX09QVElPTlMuCitF
QlpSX0ZFVENIX09QVFM9IiR7RUJaUl9GRVRDSF9PUFRTOi19IgorCisjIEBFQ0xBU1MtVkFSSUFC
TEU6IEVCWlJfVVBEQVRFX09QVFMKKyMgQERFU0NSSVBUSU9OOgorIyBPcHRpb25zIHBhc3NlZCB0
byB0aGUgdXBkYXRlIGNvbW1hbmRzIGluIGFkZGl0b24gdG8gRUJaUl9PUFRJT05TLgorRUJaUl9V
UERBVEVfT1BUUz0iJHtFQlpSX1VQREFURV9PUFRTOi19IgorCiAjIEBFQ0xBU1MtVkFSSUFCTEU6
IEVCWlJfT1BUSU9OUwogIyBAREVTQ1JJUFRJT046Ci0jIFRoZSBvcHRpb25zIHBhc3NlZCB0byB0
aGUgZmV0Y2ggYW5kIHVwZGF0ZSBjb21tYW5kcy4KKyMgVGhlIGNvbW1vbiBvcHRpb25zIHBhc3Nl
ZCB0byB0aGUgZmV0Y2ggYW5kIHVwZGF0ZSBjb21tYW5kcy4KIEVCWlJfT1BUSU9OUz0iJHtFQlpS
X09QVElPTlM6LX0iCiAKICMgQEVDTEFTUy1WQVJJQUJMRTogRUJaUl9SRVBPX1VSSQpAQCAtNzIs
NyArOTgsNyBAQAogIyAJCS0gbHA6Ly8KICMgQENPREUKICMKLSMgTm90ZTogbHAgPSBodHRwczov
L2xhdW5jaHBhZC5uZXQKKyMgTm90ZTogbHAgPSBodHRwOi8vbGF1bmNocGFkLm5ldAogRUJaUl9S
RVBPX1VSST0iJHtFQlpSX1JFUE9fVVJJOi19IgogCiAjIEBFQ0xBU1MtVkFSSUFCTEU6IEVCWlJf
Qk9PVFNUUkFQCkBAIC05MywyMSArMTE5LDI2IEBACiAjIEBFQ0xBU1MtVkFSSUFCTEU6IEVCWlJf
QlJBTkNICiAjIEBERVNDUklQVElPTjoKICMgVGhlIGJyYW5jaCB0byBmZXRjaCBpbiBienJfZmV0
Y2goKS4KLSMKLSMgZGVmYXVsdDogdHJ1bmsKLUVCWlJfQlJBTkNIPSIke0VCWlJfQlJBTkNIOi10
cnVua30iCitFQlpSX0JSQU5DSD0iJHtFQlpSX0JSQU5DSDotfSIKIAogIyBARUNMQVNTLVZBUklB
QkxFOiBFQlpSX1JFVklTSU9OCiAjIEBERVNDUklQVElPTjoKICMgUmV2aXNpb24gdG8gZ2V0LCBp
ZiBub3QgbGF0ZXN0IChzZWUgaHR0cDovL2JhemFhci12Y3Mub3JnL0J6clJldmlzaW9uU3BlYykK
IEVCWlJfUkVWSVNJT049IiR7RUJaUl9SRVZJU0lPTjotfSIKIAotIyBARUNMQVNTLVZBUklBQkxF
OiBFQlpSX0NBQ0hFX0RJUgorIyBARUNMQVNTLVZBUklBQkxFOiBFQlpSX0NBQ0hFX1JFUE9fRElS
CiAjIEBERVNDUklQVElPTjoKLSMgVGhlIGRpciB0byBzdG9yZSB0aGUgc291cmNlIGZvciB0aGUg
cGFja2FnZSwgcmVsYXRpdmUgdG8gRUJaUl9TVE9SRV9ESVIuCisjIFRoZSBkaXIgbmFtZSBvZiB0
aGUgbG9jYWwgc2hhcmVkIHJlcG9zaXRvcnkgKGlmIGFueSkuCiAjCiAjIGRlZmF1bHQ6ICR7UE59
Ci1FQlpSX0NBQ0hFX0RJUj0iJHtFQlpSX0NBQ0hFX0RJUjotJHtQTn19IgorRUJaUl9DQUNIRV9S
RVBPX0RJUj0iJHtFQlpSX0NBQ0hFX1JFUE9fRElSOi19IgorCisjIEBFQ0xBU1MtVkFSSUFCTEU6
IEVCWlJfQ0FDSEVfQlJBTkNIX0RJUgorIyBAREVTQ1JJUFRJT046CisjIFRoZSBkaXIgbmFtZSBv
ZiB0aGUgbG9jYWwgYnJhbmNoLgorIworIyBkZWZhdWx0OiAke0VCWlJfQlJBTkNIfSB3aGVuIHVz
aW5nIGEgc2hhcmVkIHJlcG9zaXRvcnkgb3IgJHtQTn0gb3RoZXJ3aXNlCitFQlpSX0NBQ0hFX0JS
QU5DSF9ESVI9IiR7RUJaUl9DQUNIRV9CUkFOQ0hfRElSOi19IgogCiAjIEBGVU5DVElPTjogYnpy
X2ZldGNoCiAjIEBERVNDUklQVElPTjoKQEAgLTE0MywzNyArMTc0LDY0IEBACiAKIAljZCAtUCAi
JHtFQlpSX1NUT1JFX0RJUn0iIHx8IGRpZSAiJHtFQlpSfTogY2FuJ3QgY2hkaXIgdG8gJHtFQlpS
X1NUT1JFX0RJUn0iCiAKLQlFQlpSX0JSQU5DSF9ESVI9IiR7RUJaUl9TVE9SRV9ESVJ9LyR7RUJa
Ul9DQUNIRV9ESVJ9IgotCiAJYWRkd3JpdGUgIiR7RUJaUl9TVE9SRV9ESVJ9IgotCWFkZHdyaXRl
ICIke0VCWlJfQlJBTkNIX0RJUn0iCiAKLQlkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IEVCWlJf
T1BUSU9OUyA9ICR7RUJaUl9PUFRJT05TfSIKKwlpZiBbWyAtbiAke0VCWlJfU0hBUkVEX1JFUE99
IF1dOyB0aGVuCisJCSMgdXNpbmcgc2hhcmVkIHJlcG9zaXRvcnkKKwkJRUJaUl9SRVBPX0RJUj0i
JHtFQlpSX1NUT1JFX0RJUn0vJHtFQlpSX0NBQ0hFX1JFUE9fRElSOi0ke1BOfX0iCisJCUVCWlJf
QlJBTkNIX0RJUj0iJHtFQlpSX1JFUE9fRElSfS8ke0VCWlJfQ0FDSEVfQlJBTkNIX0RJUjotJHtF
QlpSX0JSQU5DSH19IgorCisJCWFkZHdyaXRlICIke0VCWlJfUkVQT19ESVJ9IgorCWVsc2UKKwkJ
IyB1c2luZyBzdGFuZC1hbG9uZSBicmFuY2gKKwkJRUJaUl9CUkFOQ0hfRElSPSIke0VCWlJfU1RP
UkVfRElSfS8ke0VCWlJfQ0FDSEVfQlJBTkNIX0RJUjotJHtQTn19IgorCWZpCisKKwlhZGR3cml0
ZSAiJHtFQlpSX0JSQU5DSF9ESVJ9IgogCi0JbG9jYWwgcmVwb3NpdG9yeQorCWxvY2FsIGJyYW5j
aAogCi0JaWYgW1sgJHtFQlpSX1JFUE9fVVJJfSA9PSAqLyogXV07IHRoZW4KLQkJcmVwb3NpdG9y
eT0iJHtFQlpSX1JFUE9fVVJJfSR7RUJaUl9CUkFOQ0h9IgorCWlmIFtbIC1uICR7RUJaUl9CUkFO
Q0h9IF1dIDsgdGhlbgorCQlicmFuY2g9IiR7RUJaUl9SRVBPX1VSSX0vJHtFQlpSX0JSQU5DSH0i
CiAJZWxzZQotCQlyZXBvc2l0b3J5PSIke0VCWlJfUkVQT19VUkl9IgorCQlicmFuY2g9IiR7RUJa
Ul9SRVBPX1VSSX0iCisJZmkKKworCWlmIFtbICR7RUJaUl9TSEFSRURfUkVQT30gJiYgISAtZCAk
e0VCWlJfUkVQT19ESVJ9IF1dIDsgdGhlbgorCQkjIGNyZWF0ZSBzaGFyZWQgcmVwb3NpdG9yeQor
CQlkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IEVCWlJfSU5JVF9SRVBPX09QVFMgPSAke0VCWlJf
SU5JVF9SRVBPX09QVFN9IgorCisJCSR7RUJaUl9JTklUX1JFUE9fQ01EfSAke0VCWlJfSU5JVF9S
RVBPX09QVFN9ICR7RUJaUl9SRVBPX0RJUn0gXAorCQkJfHwgZGllICIke0VCWlJ9OiBjYW4ndCBp
bml0aWFsaXplIHNoYXJlZCByZXBvc2l0b3J5LiIKKwlmaQorCisJaWYgW1sgJHtFQlpSX0JSQU5D
SH0gPT0gKi8qICYmICEgLWYgJChkaXJuYW1lICR7RUJaUl9CUkFOQ0h9KSBdXTsgdGhlbgorCQkj
IHByZXBhcmUgcGF0aCB0byBicmFuY2gKKwkJbWtkaXIgLXAgIiR7RUJaUl9SRVBPX0RJUn0vJChk
aXJuYW1lICR7RUJaUl9CUkFOQ0h9KSIKIAlmaQogCiAJaWYgW1sgISAtZCAke0VCWlJfQlJBTkNI
X0RJUn0gXV0gOyB0aGVuCiAJCSMgZmV0Y2ggYnJhbmNoCiAJCWVpbmZvICJienIgYnJhbmNoIHN0
YXJ0IC0tPiIKLQkJZWluZm8gIiAgIHJlcG9zaXRvcnk6ICR7cmVwb3NpdG9yeX0gPT4gJHtFQlpS
X0JSQU5DSF9ESVJ9IgorCQllaW5mbyAiICAgYnJhbmNoOiAke2JyYW5jaH0gPT4gJHtFQlpSX0JS
QU5DSF9ESVJ9IgorCisJCUVCWlJfT1BUSU9OUz0iJHtFQlpSX09QVElPTlN9ICR7RUJaUl9GRVRD
SF9PUFRTfSIKKwkJZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBFQlpSX09QVElPTlMgPSAke0VC
WlJfT1BUSU9OU30iCiAKLQkJJHtFQlpSX0ZFVENIX0NNRH0gJHtFQlpSX09QVElPTlN9ICIke3Jl
cG9zaXRvcnl9IiAiJHtFQlpSX0JSQU5DSF9ESVJ9IiBcCi0JCQl8fCBkaWUgIiR7RUJaUn06IGNh
bid0IGJyYW5jaCBmcm9tICR7cmVwb3NpdG9yeX0uIgorCQkke0VCWlJfRkVUQ0hfQ01EfSAke0VC
WlJfT1BUSU9OU30gIiR7YnJhbmNofSIgIiR7RUJaUl9CUkFOQ0hfRElSfSIgXAorCQkJfHwgZGll
ICIke0VCWlJ9OiBjYW4ndCBicmFuY2ggZnJvbSAke2JyYW5jaH0uIgogCiAJZWxzZQogCQkjIHVw
ZGF0ZSBicmFuY2gKIAkJZWluZm8gImJ6ciBwdWxsIHN0YXJ0IC0tPiIKLQkJZWluZm8gIiAgIHJl
cG9zaXRvcnk6ICR7cmVwb3NpdG9yeX0iCisJCWVpbmZvICIgICBicmFuY2g6ICR7YnJhbmNofSA9
PiAke0VCWlJfQlJBTkNIX0RJUn0iCisKKwkJRUJaUl9PUFRJT05TPSIke0VCWlJfT1BUSU9OU30g
JHtFQlpSX1VQREFURV9PUFRTfSIKKwkJZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBFQlpSX09Q
VElPTlMgPSAke0VCWlJfT1BUSU9OU30iCiAKIAkJY2QgIiR7RUJaUl9CUkFOQ0hfRElSfSIKLQkJ
JHtFQlpSX1VQREFURV9DTUR9ICR7RUJaUl9PUFRJT05TfSAiJHtyZXBvc2l0b3J5fSIgXAotCQkJ
fHwgZGllICIke0VCWlJ9OiBjYW4ndCBtZXJnZSBmcm9tICR7cmVwb3NpdG9yeX0uIgorCQkke0VC
WlJfVVBEQVRFX0NNRH0gJHtFQlpSX09QVElPTlN9ICIke2JyYW5jaH0iIFwKKwkJCXx8IGRpZSAi
JHtFQlpSfTogY2FuJ3QgbWVyZ2UgZnJvbSAke2JyYW5jaH0uIgogCQkke0VCWlJfRElGRlNUQVRf
Q01EfQogCWZpCiAK
------=_Part_39896_24720073.1223240063591--