From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id hsHLAz8fNWEkIAAAgWs5BA (envelope-from ) for ; Sun, 05 Sep 2021 21:49:19 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id ckcwOj4fNWFdZgAAbx9fmQ (envelope-from ) for ; Sun, 05 Sep 2021 19:49:18 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 391BD660 for ; Sun, 5 Sep 2021 21:49:16 +0200 (CEST) Received: from localhost ([::1]:47924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mMy8h-0006Z1-64 for larch@yhetil.org; Sun, 05 Sep 2021 15:49:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mMy8U-0006XF-LB for guix-patches@gnu.org; Sun, 05 Sep 2021 15:49:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:39559) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mMy8U-0001eW-D5 for guix-patches@gnu.org; Sun, 05 Sep 2021 15:49:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mMy8U-0004Q3-7E for guix-patches@gnu.org; Sun, 05 Sep 2021 15:49:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#50384] [PATCH v2] Optimise search-patch (reducing I/O) Resent-From: Maxime Devos Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 05 Sep 2021 19:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50384 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 50384@debbugs.gnu.org Received: via spool by 50384-submit@debbugs.gnu.org id=B50384.163087133216967 (code B ref 50384); Sun, 05 Sep 2021 19:49:02 +0000 Received: (at 50384) by debbugs.gnu.org; 5 Sep 2021 19:48:52 +0000 Received: from localhost ([127.0.0.1]:51105 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mMy8D-0004PS-3c for submit@debbugs.gnu.org; Sun, 05 Sep 2021 15:48:52 -0400 Received: from michel.telenet-ops.be ([195.130.137.88]:49422) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mMy88-0004PI-Nl for 50384@debbugs.gnu.org; Sun, 05 Sep 2021 15:48:43 -0400 Received: from butterfly.local ([213.132.129.254]) by michel.telenet-ops.be with bizsmtp id qKoc250065VU3ct06KocgV; Sun, 05 Sep 2021 21:48:39 +0200 Message-ID: <0ec7f0270fcccec730808f9210f074cd5339961f.camel@telenet.be> From: Maxime Devos Date: Sun, 05 Sep 2021 21:48:22 +0200 In-Reply-To: <87tuj0xaja.fsf@gnu.org> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@telenet.be> <87tuj0xaja.fsf@gnu.org> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-eExp0UHbbratciKFMMXn" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1630871319; bh=LTK4Qm30Q4MEw0udAk8n2qwU0brmPO4phFU7bKKyIbw=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=ozXpCrEY/bJAKDKo8mitE0eRvlEpDG2jgLrQXYPT2yGA+tYPU+vQS9gfiUZkfTz7P CO1cngyVZ2GxLoBRylOchUdcYIwu+LOvIQpk+k7cvDmpmj1Q9l8oOgtOjuPFD5pVZ/ jja7A03u5AVO2cR0bIeHx7FqENhb1c+lEqF/91uPmeXAMMADR4GOGxmHjhH0LQpQFF Pt51TytK6d521jUeUcgJQXAieOTKGE9qkUSlr4ydGM0Xqb54/jO+YFVD+6DYijpc/j EmiDTvc/+B4kVXtEqimDEdgxNN54TGp1VUdC856GCBV5fhC2yndILbPakfIMs9GjUJ V3FwXke+SSJAw== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1630871356; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=LTK4Qm30Q4MEw0udAk8n2qwU0brmPO4phFU7bKKyIbw=; b=koc3+JmwyacMaT69VhXymvkdcVQE4kkHR24/SemmFpDYHLhAgAzywLlM9boqZnUiPsnie5 tNGOPOZWylNYD86XDxbswnyrXS69yTupVe/4I92V21I4xKu7CZo/EE8kwH7tf2XaW+qrPN YXTrFFhxgslMgXtGburWpGhI5QYzuiYBTtcXswbIYtAOI8mcBUV+0FNI81uJfzwqjFl6dl JsCgujBFKZmRzTB+znXbW7JIg+yTBtUuMQZ9Zq5QdslSwNcnVMzqiiV7a12+MhAXczSvgq /66jrEHe/e54eHPqfZAw1BRxjcZceneBAYPV9STzr0BtTc9QE3fRfr7YV1E9Ww== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1630871356; a=rsa-sha256; cv=none; b=XFvTP9u7oFLf9pjcarW6+XmPAJW0VP0Nxo0bBIh0cf4mIw7NKnfCi6CCt3Y19KVN7b2Y6X iW1vDejWwGFFWA01IkScMk9KlEI0NVcpHuqHEkZPYlvLqh2dcfwNMtnCvmzfw51UaM0eyK VQhHf9dT7hDuFOlxU2FgH5fNL/7UtAP65OSYnhmpJRDa3AwT838WqDgae1l+uTwMw4+MDH 1lw44pGFbTyr98m5a8ynQn768Vw/BidIlwpecZkZBiwObtIj+sH25MvmVHYu1Okb3VDR2q ZDCk7kYg53bErYfbAN7ozDPFWzpfs3lr8pMT1oYzVussdasATBkYSN3o6freSA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=telenet.be header.s=r21 header.b=ozXpCrEY; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -2.31 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=telenet.be header.s=r21 header.b=ozXpCrEY; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 391BD660 X-Spam-Score: -2.31 X-Migadu-Scanner: scn0.migadu.com X-TUID: 1w+podmn6PSt --=-eExp0UHbbratciKFMMXn Content-Type: multipart/mixed; boundary="=-FFYmpQl4eyfmi+ZCpAS1" --=-FFYmpQl4eyfmi+ZCpAS1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s schreef op zo 05-09-2021 om 00:04 [+0200]: > Maxime Devos skribis: >=20 > > +(define-syntax search-patch > > + (lambda (s) > > + "Search the patch FILE-NAME and compute its hash at expansion time > > +if possible. Return #f if not found." > > + (syntax-case s () > > + ((_ file-name) > > + (string? (syntax->datum #'file-name)) > > + ;; FILE-NAME is a constant string, so the hash can be computed > > + ;; in advance. > > + (let ((patch (try-search-patch (syntax->datum #'file-name)))) > > + (if patch > > + #`(%local-patch-file file-name #,(file-hash* patch #:sele= ct? true)) > > + (begin > > + (warning (source-properties->location > > + (syntax-source #'file-name)) > > + (G_ "~a: patch not found at expansion time") > > + (syntax->datum #'ile-name)) > > + #'(%search-patch file-name))))) > > + ;; FILE-NAME is variable, so the hash cannot be pre-computed. > > + ((_ file-name) #'(%search-patch file-name)) > > + ;; search-patch is being used used in a construct like > > + ;; (map search-patch ...). > > + (id (identifier? #'id) #'%search-patch)))) >=20 > It=E2=80=99s clever=E2=80=A6 but also a bit evil, in that it changes the = semantics of > package files in a surprising way. Modifying foo.patch without > recompiling foo.scm would lead you to still use the old foo.patch, which > can be rather off-putting and error-prone IMO. I added two patches adding (limited) dependency tracking to compile-all.scm= . If a patch file is now modified or deleted, the corresponding package modul= es will be recompiled. This should remove the =E2=80=98evilness=E2=80=99 I th= ink. > To address this, =E2=80=98local-file=E2=80=99 could store the inode/mtime= + computed > store file name (rather than the SHA256). =E2=80=98local-file-compiler= =E2=80=99 would > check whether the actual file has matching inode/mtime before returning > the computed store file name. Problem is that inode/mtime are > guaranteed to differ once you=E2=80=99ve run =E2=80=9Cmake install=E2=80= =9D. :-/ An additional problem is that 'local-file-compiler' would have to 'stat' the file even if it is already in the store, undoing the (fairly limited?) performance gains of this patch series. The dependency tracking avoids this. > Intuitively, I=E2=80=99d have imagined a cache populated at run time; it = would > map, say, file name/inode/mtime to a store file name. =E2=80=98add-to-st= ore=E2=80=99 > (or some wrapper above it) would check the cache and return the store > file name directly, unless =E2=80=98valid-path?=E2=80=99 says it no longe= r exists. > Downside is that this would be a per-user cache and you=E2=80=99d still p= ay the > cost until it=E2=80=99s warm. Advantage is that you could easily tell wh= ether > it=E2=80=99s stale. >=20 > Thoughts? Intuitively, I'd have imagined doing as much as possible at compilation tim= e. The cost at compilation is only paid once (or, more correctly, at every "guix pull"), while if you delay things until runtime, you need to check th= e caches. With this patch series (+ the two patches mentioned previously), the =E2=80= =98cache=E2=80=99 is always fresh (though possibly not warm: the patch might not yet be in th= e store). Ludovic Court=C3=A8s schreef op za 04-09-2021 om 23:47 [+0200]: > Hi! >=20 > Some initial comments=E2=80=A6 >=20 > Maxime Devos skribis: >=20 > > +++ b/guix/gexp.scm > > @@ -531,13 +531,37 @@ appears." > > (define-gexp-compiler (local-file-compiler (file ) system = target) > > [...] > > + (if sha256 > > + (let ((path (fixed-output-path name sha256 #:recursive? rec= ursive?))) > > + ;; If the hash is known in advance and the store already = has the > > + ;; item, there is no need to intern the file. > > + (if (file-exists? path) > > + (mbegin %store-monad > > + ;; Tell the GC that PATH will be used, such that it= won't > > + ;; be deleted. > > + ((store-lift add-temp-root) path) > > + ;; The GC could have deleted the item before add-te= mp-root > > + ;; completed, so check again if PATH exists. > > + (if (file-exists? path) > > + (return path) > > + ;; If it has been removed, fall-back interning. > > + (intern))) > > + ;; If PATH does not yet exist, fall back to interning= . > > + (intern))) > > + (intern)))))) >=20 > =E2=80=98file-exists?=E2=80=99 won=E2=80=99t work when talking to a remot= e store (e.g., > GUIX_DAEMON_SOCKET=3Dssh://=E2=80=A6). >=20 > =E2=80=98add-temp-root=E2=80=99 doesn=E2=80=99t throw if the given store = item does not exist. > So it could be written like this: >=20 > (if sha256 > (mbegin %store-monad > (add-temp-root* item) > (if (valid-path?* item) > (return item) > (intern))) > (intern)) Done in the v2. > But then, we=E2=80=99d add one RPC for every =E2=80=98add-to-store=E2=80= =99 RPC corresponding to > a patch (you can set =E2=80=9CGUIX_PROFILING=3Drpc=E2=80=9D to see the nu= mbers), which is > not great. >=20 > Ludo=E2=80=99. Note that 'intern' is only called if the patch isn't yet in the store. In practice, the patch is almost always already in the store. For example, suppose I have a few packages in my profile. As the packages are in my profile, they had to have their derivation computed at some point, so the corresponding patches had to be interned. If I now run "guix pull && guix package -u", when computing the derivation of the updated profile, most required patches are already in the store, because patches don't change often. Likewise, if I run "guix environment guix" in one terminal, then in another= , then in yet another ... possibly for the first invocation, some patches nee= d to be interned, but for the other invocations, it's already in the store. Because fixed-output-path is now called more often, I've added a patch optimising (guix base32). Let's compare the numbers again! This time, I've run echo powersave |sudo tee /sys/devices/system/cpu/cpufreq/policy{0,1,2,3}/sc= aling_governor to make sure the CPU frequency doesn't change. On a hot (disk) cache: # After the patch series time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --no-= grafts pigx Remote procedure call summary: 5949 RPCs built-in-builders ... 1 add-to-store ... 3 add-to-store/tree ... 26 add-temp-root ... 195 valid-path? ... 195 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 312.04 MiB GC times: 17 time spent in GC: 3.34 seconds (25% of user time) # averaged over three runs real 0m14,035s user 0m14,138s sys 0m0,650s # Before the patch series time GUIX_PROFILING=3D"rpc gc" ./the-unoptimised-guix/bin/guix build -d --n= o-grafts pigx /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv Remote procedure call summary: 5749 RPCs built-in-builders ... 1 add-to-store/tree ... 26 add-to-store ... 193 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 325.24 MiB GC times: 18 time spent in GC: 3.66 seconds (26% of user time) real 0m13,700s user 0m14,051s sys 0m0,658s So on a hot disk cache, there doesn't appear to be any improvement (except for =E2=80=98time spent in GC=E2=80=99 -- presumably that's due to = the optimisations to guix/base32.scm). What about a cold cache? # After the patch series sync && echo 3 | sudo tee /proc/sys/vm/drop_caches ./the-optimised-guix/bin/guix --help time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --no-= grafts pigx /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv Remote procedure call summary: 5949 RPCs built-in-builders ... 1 add-to-store ... 3 add-to-store/tree ... 26 add-temp-root ... 195 valid-path? ... 195 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 312.03 MiB GC times: 17 time spent in GC: 3.37 seconds (23% of user time) real 1m39,178s user 0m14,557s sys 0m0,990s # Before the patch series sync && echo 3 | sudo tee /proc/sys/vm/drop_caches ./the-unoptimised-guix/bin/guix --help time GUIX_PROFILING=3D"rpc gc" ./the-unoptimised-guix/bin/guix build -d --n= o-grafts pigx Remote procedure call summary: 5749 RPCs built-in-builders ... 1 add-to-store/tree ... 26 add-to-store ... 193 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 325.25 MiB GC times: 18 time spent in GC: 3.63 seconds (25% of user time) real 1m42,100s user 0m14,690s sys 0m1,127s It seems that if the disk cache is cold, the time-to-derivation decreases a little by this patch series. Much less than I had hoped for though; I'll have to look into other areas for interesting performance gains ... Greetings, Maxime. --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0001-build-self-Implement-basic-hash-algorithm.patch" Content-Type: text/x-patch; name="v2-0001-build-self-Implement-basic-hash-algorithm.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhOGUyNGE1MjU4YWEwNTY4OWJjYWZhNzBhZjA3MWRhNTI5NmY2M2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAyMDowOTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MS85XSBidWlsZC1zZWxmOiBJbXBsZW1lbnQgYmFzaWMgJ2hhc2gtYWxnb3JpdGhtJy4KTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoZSBtb2R1bGUgKGd1aXggaGFzaCkgdXNlZCBm cm9tICdzZWFyY2gtcGF0Y2gnIGluIGEgZnV0dXJlCnBhdGNoIG5lZWRzIGl0IHRvIGJlIHByb3Bl cmx5IGRlZmluZWQgd2hlbiAoZ3VpeCBoYXNoKSBpcyBiZWluZwpjb21waWxlZC4gICdzZWFyY2gt cGF0Y2gnIGlzIHVzZWQgd2hlbiB0aGUgZGVyaXZhdGlvbiBvZiBHdWl4IGlzCmJlaW5nIGNvbXB1 dGVkLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgdGhlIOKAmHdyb25nIHR5cGUgdG8KYXBw bHk6ICM8c3ludGF4LXRyYW5zZm9ybWVyIGhhc2gtYWxnb3JpdGhtPuKAmSBlcnJvci4KCiogYnVp bGQtYXV4L2J1aWxkLXNlbGYuc2NtCiAgKGJ1aWxkLXByb2dyYW0pW2Zha2UtZ2NyeXB0LWhhc2hd OiBEZWZpbmUgaGFzaC1hbGdvcml0aG0gZm9yIHNoYTEKICBhbmQgc2hhMjU2LgotLS0KIGJ1aWxk LWF1eC9idWlsZC1zZWxmLnNjbSB8IDEzICsrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAx MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9i dWlsZC1zZWxmLnNjbSBiL2J1aWxkLWF1eC9idWlsZC1zZWxmLnNjbQppbmRleCAzYTJkMTNjYzA5 Li4yYzEzZDlkNTMwIDEwMDY0NAotLS0gYS9idWlsZC1hdXgvYnVpbGQtc2VsZi5zY20KKysrIGIv YnVpbGQtYXV4L2J1aWxkLXNlbGYuc2NtCkBAIC0yNTksOCArMjU5LDE3IEBAIGludGVyZmFjZSAo RkZJKSBvZiBHdWlsZS4iKQogICAoZGVmaW5lIGZha2UtZ2NyeXB0LWhhc2gKICAgICA7OyBGYWtl IChnY3J5cHQgaGFzaCkgbW9kdWxlOyBzZWUgYmVsb3cuCiAgICAgKHNjaGVtZS1maWxlICJoYXNo LnNjbSIKLSAgICAgICAgICAgICAgICAgI34oZGVmaW5lLW1vZHVsZSAoZ2NyeXB0IGhhc2gpCi0g ICAgICAgICAgICAgICAgICAgICAjOmV4cG9ydCAoc2hhMSBzaGEyNTYpKSkpCisgICAgICAgICAg ICAgICAgICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLW1vZHVsZSAoZ2Ny eXB0IGhhc2gpCisgICAgICAgICAgICAgICAgICAgICAgICM6ZXhwb3J0IChzaGExIHNoYTI1NiBo YXNoLWFsZ29yaXRobSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCDigJhXcm9uZyB0 eXBlIHRvIGFwcGx5OgorICAgICAgICAgICAgICAgICAgICAgOzsgIzxzeW50YXgtdHJhbnNmb3Jt ZXIgaGFzaC1hbGdvcml0aG0+4oCZIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgIChkZWZp bmUgc2hhMSkKKyAgICAgICAgICAgICAgICAgICAgIChkZWZpbmUgc2hhMjU2KQorICAgICAgICAg ICAgICAgICAgICAgKGRlZmluZS1zeW50YXggaGFzaC1hbGdvcml0aG0KKyAgICAgICAgICAgICAg ICAgICAgICAgKHN5bnRheC1ydWxlcyAoc2hhMSBzaGEyNTYpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKChfIHNoYTEpIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKChfIHNoYTI1Nikg OCkpKSkpKQogCiAgIChkZWZpbmUgZmFrZS1naXQKICAgICAoc2NoZW1lLWZpbGUgImdpdC5zY20i ICN+KGRlZmluZS1tb2R1bGUgKGdpdCkpKSkKLS0gCjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0002-guix-hash-Extract-file-hashing-procedures.patch" Content-Type: text/x-patch; name="v2-0002-guix-hash-Extract-file-hashing-procedures.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjMzhjYWUxMWRmMDhhNTdiNWEzZjQ4MzYwMWI2NDgyYzM3OWEwNzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFuQG1nc24uZGV2PgpE YXRlOiBTdW4sIDE1IEF1ZyAyMDIxIDE2OjI1OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAy LzldIGd1aXggaGFzaDogRXh0cmFjdCBmaWxlIGhhc2hpbmcgcHJvY2VkdXJlcy4KCiogZ3VpeC9z Y3JpcHRzL2hhc2guc2NtIChndWl4LWhhc2gpW3Zjcy1maWxlPywgZmlsZS1oYXNoXTogRXh0cmFj dCBsb2dpYwp0by4uLgoqIGd1aXgvaGFzaC5zY206IC4uLmhlcmUuIE5ldyBmaWxlLgoqIE1ha2Vm aWxlLmFtIChNT0RVTEVTKTogQWRkIG5ldyBmaWxlLgotLS0KIE1ha2VmaWxlLmFtICAgICAgICAg ICB8ICAxICsKIGd1aXgvaGFzaC5zY20gICAgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGd1aXgvc2NyaXB0cy9oYXNoLnNjbSB8IDI5ICsrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAy MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBndWl4L2hhc2guc2NtCgpkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCAzMjdkM2Y5OTYxLi44ZjgwODlj MDVjIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtMTA3LDYg KzEwNyw3IEBAIE1PRFVMRVMgPQkJCQkJXAogICBndWl4L25hcmluZm8uc2NtCQkJCVwKICAgZ3Vp eC9kZXJpdmF0aW9ucy5zY20JCQkJXAogICBndWl4L2dyYWZ0cy5zY20JCQkJXAorICBndWl4L2hh c2guc2NtCQkJCQlcCiAgIGd1aXgvcmVwbC5zY20JCQkJCVwKICAgZ3VpeC90cmFuc2Zvcm1hdGlv bnMuc2NtCQkJXAogICBndWl4L2luZmVyaW9yLnNjbQkJCQlcCmRpZmYgLS1naXQgYS9ndWl4L2hh c2guc2NtIGIvZ3VpeC9oYXNoLnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi44YzJhYjgxODdmCi0tLSAvZGV2L251bGwKKysrIGIvZ3VpeC9oYXNoLnNjbQpAQCAtMCww ICsxLDUxIEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50 IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFu QG1nc24uZGV2PgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsK Kzs7OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKzs7OyB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7Ozsg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7 OzsKKzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IGhh c2gpCisgICM6dXNlLW1vZHVsZSAoZ2NyeXB0IGhhc2gpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBz ZXJpYWxpemF0aW9uKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQorICAjOnVzZS1tb2R1 bGUgKHNyZmkgc3JmaS0xMSkKKyAgIzpleHBvcnQgKHZjcy1maWxlPworICAgICAgICAgICAgZmls ZS1oYXNoKikpCisKKyhkZWZpbmUgKHZjcy1maWxlPyBmaWxlIHN0YXQpCisgICJSZXR1cm5zIHRy dWUgaWYgRklMRSBpcyBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gZmlsZS4iCisgIChjYXNlIChz dGF0OnR5cGUgc3RhdCkKKyAgICAoKGRpcmVjdG9yeSkKKyAgICAgKG1lbWJlciAoYmFzZW5hbWUg ZmlsZSkgJygiLmJ6ciIgIi5naXQiICIuaGciICIuc3ZuIiAiQ1ZTIikpKQorICAgICgocmVndWxh cikKKyAgICAgOzsgR2l0IHN1Yi1tb2R1bGVzIGhhdmUgYSAnLmdpdCcgZmlsZSB0aGF0IGlzIGEg cmVndWxhciB0ZXh0IGZpbGUuCisgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgZmlsZSkgIi5naXQi KSkKKyAgICAoZWxzZQorICAgICAjZikpKQorCisoZGVmaW5lKiAoZmlsZS1oYXNoKiBmaWxlICM6 a2V5CisgICAgICAgICAgICAgICAgICAgICAoYWxnb3JpdGhtIChoYXNoLWFsZ29yaXRobSBzaGEy NTYpKQorICAgICAgICAgICAgICAgICAgICAgKHJlY3Vyc2l2ZT8gI3QpCisgICAgICAgICAgICAg ICAgICAgICAoc2VsZWN0PyAobmVnYXRlIHZjcy1maWxlPykpKQorICAiQ29tcHV0ZSB0aGUgaGFz aCBvZiBGSUxFIHdpdGggQUxHT1JJVEhNLiAgSWYgUkVDVVJTSVZFPyBpcyB0cnVlLCByZWN1cnNl CitpbnRvIHN1YmRpcmVjdG9yaWVzIG9mIEZJTEUsIGNvbXB1dGluZyB0aGUgY29tYmluZWQgaGFz aCBvZiBhbGwgZmlsZXMgZm9yCit3aGljaCAoU0VMRUNUPyAgRklMRSBTVEFUKSByZXR1cm5zIHRy dWUuIgorICAoaWYgcmVjdXJzaXZlPworICAgICAgKGxldC12YWx1ZXMgKCgocG9ydCBnZXQtaGFz aCkKKyAgICAgICAgICAgICAgICAgICAgKG9wZW4taGFzaC1wb3J0IGFsZ29yaXRobSkpKQorICAg ICAgICAod3JpdGUtZmlsZSBmaWxlIHBvcnQgIzpzZWxlY3Q/IHNlbGVjdD8pCisgICAgICAgIChm b3JjZS1vdXRwdXQgcG9ydCkKKyAgICAgICAgKGdldC1oYXNoKSkKKyAgICAgIChmaWxlLWhhc2gg YWxnb3JpdGhtIGZpbGUpKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9oYXNoLnNjbSBiL2d1 aXgvc2NyaXB0cy9oYXNoLnNjbQppbmRleCBiODYyMjM3M2NjLi4zNTNjYTMwYzJjIDEwMDY0NAot LS0gYS9ndWl4L3NjcmlwdHMvaGFzaC5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2hhc2guc2NtCkBA IC0zLDYgKzMsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDEzIE5pa2l0YSBLYXJldG5pa292IDxu aWtpdGFAa2FyZXRuaWtvdi5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTYgSmFuIE5pZXV3ZW5o dWl6ZW4gPGphbm5la2VAZ251Lm9yZz4KIDs7OyBDb3B5cmlnaHQgwqkgMjAxOCBUaW0gR2VzdGh1 aXplbiA8dGltLmdlc3RodWl6ZW5AeWFob28uZGU+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgU2Fy YWggTW9yZ2Vuc2VuIDxpc2thcmlhbkBtZ3NuLmRldj4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMyw2ICsyNCw3IEBACiAgICM6dXNlLW1vZHVsZSAo Z2NyeXB0IGhhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBzZXJpYWxpemF0aW9uKQogICAjOnVz ZS1tb2R1bGUgKGd1aXggdWkpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBoYXNoKQogICAjOnVzZS1t b2R1bGUgKGd1aXggc2NyaXB0cykKICAgIzp1c2UtbW9kdWxlIChndWl4IGJhc2UxNikKICAgIzp1 c2UtbW9kdWxlIChndWl4IGJhc2UzMikKQEAgLTEyNSwxNiArMTI3LDYgQEAgYW5kICdiYXNlMTYn ICgnaGV4JyBhbmQgJ2hleGFkZWNpbWFsJyBjYW4gYmUgdXNlZCBhcyB3ZWxsKS5cbiIpKQogICAg IChwYXJzZS1jb21tYW5kLWxpbmUgYXJncyAlb3B0aW9ucyAobGlzdCAlZGVmYXVsdC1vcHRpb25z KQogICAgICAgICAgICAgICAgICAgICAgICAgIzpidWlsZC1vcHRpb25zPyAjZikpCiAKLSAgKGRl ZmluZSAodmNzLWZpbGU/IGZpbGUgc3RhdCkKLSAgICAoY2FzZSAoc3RhdDp0eXBlIHN0YXQpCi0g ICAgICAoKGRpcmVjdG9yeSkKLSAgICAgICAobWVtYmVyIChiYXNlbmFtZSBmaWxlKSAnKCIuYnpy IiAiLmdpdCIgIi5oZyIgIi5zdm4iICJDVlMiKSkpCi0gICAgICAoKHJlZ3VsYXIpCi0gICAgICAg OzsgR2l0IHN1Yi1tb2R1bGVzIGhhdmUgYSAnLmdpdCcgZmlsZSB0aGF0IGlzIGEgcmVndWxhciB0 ZXh0IGZpbGUuCi0gICAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBmaWxlKSAiLmdpdCIpKQotICAg ICAgKGVsc2UKLSAgICAgICAjZikpKQotCiAgIChsZXQqICgob3B0cyAocGFyc2Utb3B0aW9ucykp CiAgICAgICAgICAoYXJncyAoZmlsdGVyLW1hcCAobWF0Y2gtbGFtYmRhCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCgnYXJndW1lbnQgLiB2YWx1ZSkKQEAgLTE1MCwxOCArMTQyLDExIEBA IGFuZCAnYmFzZTE2JyAoJ2hleCcgYW5kICdoZXhhZGVjaW1hbCcgY2FuIGJlIHVzZWQgYXMgd2Vs bCkuXG4iKSkKICAgICAgIDs7IENvbXB1dGUgdGhlIGhhc2ggb2YgRklMRS4KICAgICAgIDs7IENh dGNoIGFuZCBncmFjZWZ1bGx5IHJlcG9ydCBwb3NzaWJsZSAnJm5hci1lcnJvcicgY29uZGl0aW9u cy4KICAgICAgICh3aXRoLWVycm9yLWhhbmRsaW5nCi0gICAgICAgIChpZiAoYXNzb2MtcmVmIG9w dHMgJ3JlY3Vyc2l2ZT8pCi0gICAgICAgICAgICAobGV0LXZhbHVlcyAoKChwb3J0IGdldC1oYXNo KQotICAgICAgICAgICAgICAgICAgICAgICAgICAob3Blbi1oYXNoLXBvcnQgKGFzc29jLXJlZiBv cHRzICdoYXNoLWFsZ29yaXRobSkpKSkKLSAgICAgICAgICAgICAgKHdyaXRlLWZpbGUgZmlsZSBw b3J0ICM6c2VsZWN0PyBzZWxlY3Q/KQotICAgICAgICAgICAgICAoZm9yY2Utb3V0cHV0IHBvcnQp Ci0gICAgICAgICAgICAgIChnZXQtaGFzaCkpCi0gICAgICAgICAgICAobWF0Y2ggZmlsZQotICAg ICAgICAgICAgICAoIi0iIChwb3J0LWhhc2ggKGFzc29jLXJlZiBvcHRzICdoYXNoLWFsZ29yaXRo bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWlucHV0LXBvcnQpKSkK LSAgICAgICAgICAgICAgKF8gICAoY2FsbC13aXRoLWlucHV0LWZpbGUgZmlsZQotICAgICAgICAg ICAgICAgICAgICAgKGN1dGUgcG9ydC1oYXNoIChhc3NvYy1yZWYgb3B0cyAnaGFzaC1hbGdvcml0 aG0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PikpKSkpKSkKKyAgICAgICAgKG1hdGNo IGZpbGUKKyAgICAgICAgICAoIi0iIChwb3J0LWhhc2ggKGFzc29jLXJlZiBvcHRzICdoYXNoLWFs Z29yaXRobSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtaW5wdXQtcG9ydCkp KQorICAgICAgICAgIChfICAgKGZpbGUtaGFzaCogIzphbGdvcml0aG0gKGFzc29jLXJlZiBvcHRz ICdoYXNoLWFsZ29yaXRobSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICM6cmVjdXJzaXZl PyAoYXNzb2MtcmVmIG9wdHMgJ3JlY3Vyc2l2ZT8pKSkpKSkKIAogICAgIChtYXRjaCBhcmdzCiAg ICAgICAoKGZpbGUpCi0tIAoyLjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0003-gexp-Allow-computing-the-hash-of-the-local-file-i.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0003-gexp-Allow-computing-the-hash-of-the-local-file-i.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlNWRjNDY4MDA1OTcwMjNkZmMxYzlkNTNjYzZlMGRiMmYzOTk5MDIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNTozNTo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg My85XSBnZXhwOiBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGxvY2FsIGZpbGUgaW4K IGFkdmFuY2UuCgpUaGUgbmV3IGZpZWxkIGlzIGN1cnJlbnRseSB1bnVzZWQuICBUaGUgZm9sbG93 aW5nIHBhdGNoZXMgd2lsbApwb3B1bGF0ZSBhbmQgdXNlIHRoZSBmaWVsZCB0byByZWR1Y2UgdGhl IHRpbWUtdG8tZGVyaXZhdGlvbgp3aGVuIHRoZSBmaWxlIGlzIGFscmVhZHkgaW50ZXJuZWQgaW4g dGhlIHN0b3JlLgoKKiBndWl4L2dleHAuc2NtCiAgKDxsb2NhbC1maWxlPik6IEFkZCBzaGEyNTYg ZmllbGQuCiAgKCVsb2NhbC1maWxlKTogQWRkIHNoYTI1NiBhcmd1bWVudCBmb3IgcG9wdWxhdGlu ZyB0aGUgZmllbGQuCiAgKGxvY2FsLWZpbGUtY29tcGlsZXIpOiBBZGp1c3QgJ21hdGNoJyBleHBy ZXNzaW9uLgotLS0KIGd1aXgvZ2V4cC5zY20gfCAxMiArKysrKysrKy0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3VpeC9n ZXhwLnNjbSBiL2d1aXgvZ2V4cC5zY20KaW5kZXggZjNkMjc4YjNlNi4uYTYzMzk4NDY4OCAxMDA2 NDQKLS0tIGEvZ3VpeC9nZXhwLnNjbQorKysgYi9ndWl4L2dleHAuc2NtCkBAIC00MTksMTMgKzQx OSwxNiBAQCBIZXJlIFRBUkdFVCBpcyBib3VuZCB0byB0aGUgY3Jvc3MtY29tcGlsYXRpb24gdHJp cGxldCBvciAjZi4iCiA7OyBBIGxvY2FsIGZpbGUgbmFtZS4gIEZJTEUgaXMgdGhlIGZpbGUgbmFt ZSB0aGUgdXNlciBlbnRlcmVkLCB3aGljaCBjYW4gYmUgYQogOzsgcmVsYXRpdmUgZmlsZSBuYW1l LCBhbmQgQUJTT0xVVEUgaXMgYSBwcm9taXNlIHRoYXQgY29tcHV0ZXMgaXRzIGNhbm9uaWNhbAog OzsgYWJzb2x1dGUgZmlsZSBuYW1lLiAgV2Uga2VlcCBpdCBpbiBhIHByb21pc2UgdG8gY29tcHV0 ZSBpdCBsYXppbHkgYW5kIGF2b2lkCi07OyByZXBlYXRlZCAnc3RhdCcgY2FsbHMuCis7OyByZXBl YXRlZCAnc3RhdCcgY2FsbHMuICBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGZpbGUg aW4gYWR2YW5jZSwKKzs7IHRvIGF2b2lkIGhhdmluZyB0byBzZW5kIHRoZSBmaWxlIHRvIHRoZSBk YWVtb24gd2hlbiBpdCBpcyBhbHJlYWR5IGludGVybmVkCis7OyBpbiB0aGUgc3RvcmUuCiAoZGVm aW5lLXJlY29yZC10eXBlIDxsb2NhbC1maWxlPgotICAoJSVsb2NhbC1maWxlIGZpbGUgYWJzb2x1 dGUgbmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pCisgICglJWxvY2FsLWZpbGUgZmlsZSBhYnNvbHV0 ZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8pCiAgIGxvY2FsLWZpbGU/CiAgIChmaWxl ICAgICAgIGxvY2FsLWZpbGUtZmlsZSkgICAgICAgICAgICAgICAgICAgIDtzdHJpbmcKICAgKGFi c29sdXRlICAgJWxvY2FsLWZpbGUtYWJzb2x1dGUtZmlsZS1uYW1lKSAgICAgO3Byb21pc2Ugc3Ry aW5nCiAgIChuYW1lICAgICAgIGxvY2FsLWZpbGUtbmFtZSkgICAgICAgICAgICAgICAgICAgIDtz dHJpbmcKKyAgKHNoYTI1NiAgICAgbG9jYWwtZmlsZS1zaGEyNTYpICAgICAgICAgICAgICAgICAg O3NoYTI1NiBieXRldmVjdG9yIHwgI2YKICAgKHJlY3Vyc2l2ZT8gbG9jYWwtZmlsZS1yZWN1cnNp dmU/KSAgICAgICAgICAgICAgO0Jvb2xlYW4KICAgKHNlbGVjdD8gICAgbG9jYWwtZmlsZS1zZWxl Y3Q/KSkgICAgICAgICAgICAgICAgO3N0cmluZyBzdGF0IC0+IEJvb2xlYW4KIApAQCAtNDM0LDYg KzQzNyw3IEBAIEhlcmUgVEFSR0VUIGlzIGJvdW5kIHRvIHRoZSBjcm9zcy1jb21waWxhdGlvbiB0 cmlwbGV0IG9yICNmLiIKIChkZWZpbmUqICglbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgIzpvcHRp b25hbCAobmFtZSAoYmFzZW5hbWUgZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIzprZXkK ICAgICAgICAgICAgICAgICAgICAgICAobGl0ZXJhbD8gI3QpIGxvY2F0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgc2hhMjU2CiAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlPyAoc2Vs ZWN0PyB0cnVlKSkKICAgOzsgVGhpcyBpbnRlcm1lZGlhdGUgcHJvY2VkdXJlIGlzIHBhcnQgb2Yg b3VyIEFCSSwgYnV0IHRoZSB1bmRlcmx5aW5nCiAgIDs7ICUlTE9DQUwtRklMRSBpcyBub3QuCkBA IC00NDEsNyArNDQ1LDcgQEAgSGVyZSBUQVJHRVQgaXMgYm91bmQgdG8gdGhlIGNyb3NzLWNvbXBp bGF0aW9uIHRyaXBsZXQgb3IgI2YuIgogICAgICh3YXJuaW5nIChhbmQ9PiBsb2NhdGlvbiBzb3Vy Y2UtcHJvcGVydGllcy0+bG9jYXRpb24pCiAgICAgICAgICAgICAgKEdfICJyZXNvbHZpbmcgJ35h JyByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeX4lIikKICAgICAgICAgICAgICBmaWxlKSkK LSAgKCUlbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgbmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pKQor ICAoJSVsb2NhbC1maWxlIGZpbGUgcHJvbWlzZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVj dD8pKQogCiAoZGVmaW5lIChhYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSBkaXJlY3RvcnkpCiAgICJS ZXR1cm4gdGhlIGNhbm9uaWNhbCBhYnNvbHV0ZSBmaWxlIG5hbWUgZm9yIEZJTEUsIHdoaWNoIGxp dmVzIGluIHRoZQpAQCAtNTE3LDcgKzUyMSw3IEBAIGFwcGVhcnMuIgogKGRlZmluZS1nZXhwLWNv bXBpbGVyIChsb2NhbC1maWxlLWNvbXBpbGVyIChmaWxlIDxsb2NhbC1maWxlPikgc3lzdGVtIHRh cmdldCkKICAgOzsgIkNvbXBpbGUiIEZJTEUgYnkgYWRkaW5nIGl0IHRvIHRoZSBzdG9yZS4KICAg KG1hdGNoIGZpbGUKLSAgICAoKCQgPGxvY2FsLWZpbGU+IGZpbGUgKD0gZm9yY2UgYWJzb2x1dGUp IG5hbWUgcmVjdXJzaXZlPyBzZWxlY3Q/KQorICAgICgoJCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBm b3JjZSBhYnNvbHV0ZSkgbmFtZSBzaGEyNTYgcmVjdXJzaXZlPyBzZWxlY3Q/KQogICAgICA7OyBD YW5vbmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3MgYSBzeW1saW5rLCBpdCBpcyByZXNvbHZl ZC4gIEZhaWxpbmcKICAgICAgOzsgdG8gZG8gdGhhdCwgd2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3 ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcgYSBkYW5nbGluZwogICAgICA7OyBzeW1saW5rIGluIHRo ZSBzdG9yZSwgYW5kIHdoZW4gUkVDVVJTSVZFPyBpcyAjZiAnYWRkLXRvLXN0b3JlJyB3b3VsZAot LSAKMi4zMy4wCgo= --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0004-gexp-Allow-overriding-the-absolute-file-name.patch" Content-Type: text/x-patch; name="v2-0004-gexp-Allow-overriding-the-absolute-file-name.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4YTY0YWM3ODc2NzAxM2U4MmYyNmNmZGRhZTk1MWE4ZWYyZTJjYWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNjoyNToyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NC85XSBnZXhwOiBBbGxvdyBvdmVycmlkaW5nIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUuCgpUaGlz IHdpbGwgYmUgdXNlZCBieSB0aGUgbmV4dCBwYXRjaCB0byBpbXBsZW1lbnQgc2VhcmNoLXBhdGNo IGluCnRlcm1zIG9mIGxvY2FsLWZpbGUuCgoqIGd1aXgvZ2V4cC5zY20KICAocHJlY2Fub25pY2Fs aXplZC1maWxlLW5hbWUpOiBOZXcgbWFjcm8uCiAgKGxvY2FsLWZpbGUpOiBVc2UgdGhlIGFic29s dXRlIGZpbGUgbmFtZSBmcm9tIHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lCiAgd2hlbiBhdmFp bGFibGUuCi0tLQogZ3VpeC9nZXhwLnNjbSB8IDEyICsrKysrKysrKysrLQogMSBmaWxlIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9ndWl4L2dl eHAuc2NtIGIvZ3VpeC9nZXhwLnNjbQppbmRleCBhNjMzOTg0Njg4Li5jNjllNGFhMjk5IDEwMDY0 NAotLS0gYS9ndWl4L2dleHAuc2NtCisrKyBiL2d1aXgvZ2V4cC5zY20KQEAgLTUxLDYgKzUxLDcg QEAKICAgICAgICAgICAgIGdleHAtaW5wdXQtb3V0cHV0CiAgICAgICAgICAgICBnZXhwLWlucHV0 LW5hdGl2ZT8KIAorICAgICAgICAgICAgcHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUKICAgICAg ICAgICAgIGFzc3VtZS12YWxpZC1maWxlLW5hbWUKICAgICAgICAgICAgIGxvY2FsLWZpbGUKICAg ICAgICAgICAgIGxvY2FsLWZpbGU/CkBAIC00NjMsNiArNDY0LDEyIEBAIHRoZSBnaXZlbiBmaWxl IG5hbWUgaXMgdmFsaWQsIGV2ZW4gaWYgaXQncyBub3QgYSBzdHJpbmcgbGl0ZXJhbCwgYW5kIHRo dXMgbm90CiB3YXJuIGFib3V0IGl0LiIKICAgZmlsZSkKIAorKGRlZmluZS1zeW50YXgtcnVsZSAo cHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUgZmlsZSBhYnNvbHV0ZSkKKyAgIlRoaXMgaXMgYSBz eW50YWN0aWMga2V5d29yZCB0byB0ZWxsICdsb2NhbC1maWxlJyB0aGF0IGl0IGNhbiBhc3N1bWUg dGhhdAordGhlIGdpdmVuIGZpbGUgbmFtZSBGSUxFIGhhcyBBQlNPTFVURSBhcyBhYnNvbHV0ZSBm aWxlIG5hbWUgYW5kICdsb2NhbC1maWxlJworZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIHRoZSBh YnNvbHV0ZSBmaWxlIG5hbWUgYnkgaXRzZWxmLiIKKyAgYWJzb2x1dGUpCisKIChkZWZpbmUtc3lu dGF4IGxvY2FsLWZpbGUKICAgKGxhbWJkYSAocykKICAgICAiUmV0dXJuIGFuIG9iamVjdCByZXBy ZXNlbnRpbmcgbG9jYWwgZmlsZSBGSUxFIHRvIGFkZCB0byB0aGUgc3RvcmU7IHRoaXMKQEAgLTQ4 MSw3ICs0ODgsNyBAQCB3aGVyZSBGSUxFIGlzIHRoZSBlbnRyeSdzIGFic29sdXRlIGZpbGUgbmFt ZSBhbmQgU1RBVCBpcyB0aGUgcmVzdWx0IG9mCiBUaGlzIGlzIHRoZSBkZWNsYXJhdGl2ZSBjb3Vu dGVycGFydCBvZiB0aGUgJ2ludGVybmVkLWZpbGUnIG1vbmFkaWMgcHJvY2VkdXJlLgogSXQgaXMg aW1wbGVtZW50ZWQgYXMgYSBtYWNybyB0byBjYXB0dXJlIHRoZSBjdXJyZW50IHNvdXJjZSBkaXJl Y3Rvcnkgd2hlcmUgaXQKIGFwcGVhcnMuIgotICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFs aWQtZmlsZS1uYW1lKQorICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1l IHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lKQogICAgICAgKChfIGZpbGUgcmVzdCAuLi4pCiAg ICAgICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydmaWxlKSkKICAgICAgICA7OyBGSUxFIGlz IGEgbGl0ZXJhbCwgc28gcmVzb2x2ZSBpdCByZWxhdGl2ZSB0byB0aGUgc291cmNlIGRpcmVjdG9y eS4KQEAgLTQ5NSw2ICs1MDIsOSBAQCBhcHBlYXJzLiIKICAgICAgICAjJyglbG9jYWwtZmlsZSBm aWxlCiAgICAgICAgICAgICAgICAgICAgICAgKGRlbGF5IChhYnNvbHV0ZS1maWxlLW5hbWUgZmls ZSAoZ2V0Y3dkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgcmVzdCAuLi4pKQorICAgICAgKChf IChwcmVjYW5vbmljYWxpemVkLWZpbGUtbmFtZSBmaWxlIGFic29sdXRlKSByZXN0IC4uLikKKyAg ICAgICA7OyBVc2UgdGhlIGdpdmVuIGZpbGUgbmFtZSBBQlNPTFVURSBhcyBhYnNvbHV0ZSBmaWxl IG5hbWUuCisgICAgICAgIycoJWxvY2FsLWZpbGUgZmlsZSAoZGVsYXkgYWJzb2x1dGUpIHJlc3Qg Li4uKSkKICAgICAgICgoXyBmaWxlIHJlc3QgLi4uKQogICAgICAgIDs7IFJlc29sdmUgRklMRSBy ZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgICAgKHdpdGgtc3ludGF4ICgo bG9jYXRpb24gKGRhdHVtLT5zeW50YXggcyAoc3ludGF4LXNvdXJjZSBzKSkpKQotLSAKMi4zMy4w Cgo= --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0005-packages-Compute-the-hash-of-patches-in-advance-w.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0005-packages-Compute-the-hash-of-patches-in-advance-w.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3MzdkN2ZiOGUxOGM0ZTZlNGRiMWQ4MjQ1NTIxMWVlNWJkZmFlMTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNzoyNTo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NS85XSBwYWNrYWdlczogQ29tcHV0ZSB0aGUgaGFzaCBvZiBwYXRjaGVzIGluIGFkdmFuY2Ugd2hl bgogcG9zc2libGUuCgoqIGdudS9wYWNrYWdlcy5zY20KICAoc2VhcmNoLXBhdGNoKTogUmVuYW1l IHRvIC4uLgogICglc2VhcmNoLXBhdGNoKTogLi4uIHRoaXMuCiAgKHRyeS1zZWFyY2gtcGF0Y2gp OiBOZXcgcHJvY2VkdXJlLCBleHRyYWN0ZWQgZnJvbSAuLi4KICAoJXNlYXJjaC1wYXRjaCk6IC4u LiB0aGlzIHByb2NlZHVyZS4KICAoJWxvY2FsLXBhdGNoLWZpbGUpOiBOZXcgcHJvY2VkdXJlLgog ICh0cnVlKTogTmV3IHByb2NlZHVyZS4KICAoc2VhcmNoLXBhdGNoKTogTmV3IG1hY3JvLCBiZWhh dmluZyBsaWtlICVzZWFyY2gtcGF0Y2gsIGJ1dCBjb21wdXRpbmcgdGhlCiAgaGFzaCBhdCBleHBh bnNpb24gdGltZSB3aGVuIHBvc3NpYmxlLgoqIGdudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KICAo JWd1aXgtcGF0Y2hlcyk6IFVzZSBzZWFyY2gtcGF0Y2hlcyBpbnN0ZWFkIG9mIGxvY2FsLWZpbGUg KwogIGFzc3VtZS12YWxpZC1maWxlLW5hbWUgKyBzZWFyY2gtcGF0Y2guCiogZ251L3BhY2thZ2Vz L2dudXppbGxhLnNjbQogIChpY2VjYXQtc291cmNlKVtnbnV6aWxsYS1maXhlcy1wYXRjaF06IFVz ZSBzZWFyY2gtcGF0Y2ggaW5zdGVhZCBvZgogIGxvY2FsLWZpbGUgKyBhc3N1bGUtdmFsaWQtZmls ZS1uYW1lICsgc2VhcmNoLXBhdGNoLgogIChpY2VjYXQtc291cmNlKVttYWtlaWNlY2F0LXBhdGNo XTogTGlrZXdpc2UuCiogZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQogIChnY2MtYXJtLW5vbmUt ZWFiaS00LjkpW3NvdXJjZV17cGF0Y2hlc306IEV4cGVjdCBwYXRjaGVzIHRvIGJlCiAgbG9jYWwt ZmlsZSBvYmplY3RzIGluc3RlYWQgb2Ygc3RyaW5ncy4KICBvZiBzdHJpbmdzLgoqIGd1aXgvbGlu dC5zY20gKGNoZWNrLXBhdGNoLWZpbGUtbmFtZXMpOiBBbGxvdyBsb2NhbC1maWxlIG9iamVjdHMu Ci0tLQogZ251L3BhY2thZ2VzLnNjbSAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLQogZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbSB8ICA0ICstLS0K IGdudS9wYWNrYWdlcy9lbWJlZGRlZC5zY20gfCAgMyArKy0KIGdudS9wYWNrYWdlcy9nbnV6aWxs YS5zY20gfCAgOCArKy0tLS0tLQogZ3VpeC9saW50LnNjbSAgICAgICAgICAgICB8IDI4ICsrKysr KysrKysrKysrKystLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyks IDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy5zY20gYi9nbnUvcGFj a2FnZXMuc2NtCmluZGV4IGNjZmM4M2RkMTEuLmY1NTUyZTVhOWIgMTAwNjQ0Ci0tLSBhL2dudS9w YWNrYWdlcy5zY20KKysrIGIvZ251L3BhY2thZ2VzLnNjbQpAQCAtNCw2ICs0LDcgQEAKIDs7OyBD b3B5cmlnaHQgwqkgMjAxNCBFcmljIEJhdmllciA8YmF2aWVyQG1lbWJlci5mc2Yub3JnPgogOzs7 IENvcHlyaWdodCDCqSAyMDE2LCAyMDE3IEFsZXggS29zdCA8YWxlem9zdEBnbWFpbC5jb20+CiA7 OzsgQ29weXJpZ2h0IMKpIDIwMTYgTWF0aGlldSBMaXJ6aW4gPG10aGxAZ251Lm9yZz4KKzs7OyBD b3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+CiA7 OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjEsMTEgKzIy LDEzIEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcykKKyAg Izp1c2UtbW9kdWxlIChndWl4IGdleHApCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykK ICAgIzp1c2UtbW9kdWxlIChndWl4IHVpKQogICAjOnVzZS1tb2R1bGUgKGd1aXggdXRpbHMpCiAg ICM6dXNlLW1vZHVsZSAoZ3VpeCBkaWFnbm9zdGljcykKICAgIzp1c2UtbW9kdWxlIChndWl4IGRp c2NvdmVyeSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGhhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ3Vp eCBtZW1vaXphdGlvbikKICAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWlsZCB1dGlscykKICAgICAg ICAgICAgICAgICAjOnNlbGVjdCAoKHBhY2thZ2UtbmFtZS0+bmFtZSt2ZXJzaW9uCkBAIC05MCwx MiArOTMsNDcgQEAKICAgIlNlYXJjaCB0aGUgYXV4aWxpYXJ5IEZJTEUtTkFNRS4gIFJldHVybiAj ZiBpZiBub3QgZm91bmQuIgogICAoc2VhcmNoLXBhdGggKCVhdXhpbGlhcnktZmlsZXMtcGF0aCkg ZmlsZS1uYW1lKSkKIAotKGRlZmluZSAoc2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkKKyhkZWZpbmUg KHRyeS1zZWFyY2gtcGF0Y2ggZmlsZS1uYW1lKQorICAiU2VhcmNoIHRoZSBwYXRjaCBGSUxFLU5B TUUuICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIKKyAgKHNlYXJjaC1wYXRoICglcGF0Y2gtcGF0 aCkgZmlsZS1uYW1lKSkKKworKGRlZmluZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICJT ZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFNRS4gIFJhaXNlIGFuIGVycm9yIGlmIG5vdCBmb3VuZC4i Ci0gIChvciAoc2VhcmNoLXBhdGggKCVwYXRjaC1wYXRoKSBmaWxlLW5hbWUpCisgIChvciAodHJ5 LXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICAgICAocmFpc2UgKGZvcm1hdHRlZC1tZXNzYWdl IChHXyAifmE6IHBhdGNoIG5vdCBmb3VuZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZpbGUtbmFtZSkpKSkKIAorKGRlZmluZSAoJWxvY2FsLXBhdGNoLWZpbGUgZmlsZS1uYW1l IGhhc2gpCisgICJTZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFNRSwgd2hpY2ggaXMga25vd24gdG8g aGF2ZSBIQVNILiIKKyAgKGxvY2FsLWZpbGUgKHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lIGZp bGUtbmFtZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpKQorICAgICAgICAgICAgICAjOnNoYTI1 NiBoYXNoICM6cmVjdXJzaXZlPyAjdCkpCisKKyhkZWZpbmUgdHJ1ZSAoY29uc3QgI3QpKQorCiso ZGVmaW5lLXN5bnRheCBzZWFyY2gtcGF0Y2gKKyAgKGxhbWJkYSAocykKKyAgICAiU2VhcmNoIHRo ZSBwYXRjaCBGSUxFLU5BTUUgYW5kIGNvbXB1dGUgaXRzIGhhc2ggYXQgZXhwYW5zaW9uIHRpbWUK K2lmIHBvc3NpYmxlLiAgUmV0dXJuICNmIGlmIG5vdCBmb3VuZC4iCisgICAgKHN5bnRheC1jYXNl IHMgKCkKKyAgICAgICgoXyBmaWxlLW5hbWUpCisgICAgICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0 dW0gIydmaWxlLW5hbWUpKQorICAgICAgIDs7IEZJTEUtTkFNRSBpcyBhIGNvbnN0YW50IHN0cmlu Zywgc28gdGhlIGhhc2ggY2FuIGJlIGNvbXB1dGVkCisgICAgICAgOzsgaW4gYWR2YW5jZS4KKyAg ICAgICAobGV0ICgocGF0Y2ggKHRyeS1zZWFyY2gtcGF0Y2ggKHN5bnRheC0+ZGF0dW0gIydmaWxl LW5hbWUpKSkpCisgICAgICAgICAoaWYgcGF0Y2gKKyAgICAgICAgICAgICAjYCglbG9jYWwtcGF0 Y2gtZmlsZSBmaWxlLW5hbWUgIywoZmlsZS1oYXNoKiBwYXRjaCAjOnNlbGVjdD8gdHJ1ZSkpCisg ICAgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAgICAod2FybmluZyAoc291cmNlLXByb3Bl cnRpZXMtPmxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRheC1zb3VyY2Ug IydmaWxlLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgKEdfICJ+YTogcGF0Y2ggbm90 IGZvdW5kIGF0IGV4cGFuc2lvbiB0aW1lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChzeW50 YXgtPmRhdHVtICMnaWxlLW5hbWUpKQorICAgICAgICAgICAgICAgIycoJXNlYXJjaC1wYXRjaCBm aWxlLW5hbWUpKSkpKQorICAgICAgOzsgRklMRS1OQU1FIGlzIHZhcmlhYmxlLCBzbyB0aGUgaGFz aCBjYW5ub3QgYmUgcHJlLWNvbXB1dGVkLgorICAgICAgKChfIGZpbGUtbmFtZSkgIycoJXNlYXJj aC1wYXRjaCBmaWxlLW5hbWUpKQorICAgICAgOzsgc2VhcmNoLXBhdGNoIGlzIGJlaW5nIHVzZWQg dXNlZCBpbiBhIGNvbnN0cnVjdCBsaWtlCisgICAgICA7OyAobWFwIHNlYXJjaC1wYXRjaCAuLi4p LgorICAgICAgKGlkIChpZGVudGlmaWVyPyAjJ2lkKSAjJyVzZWFyY2gtcGF0Y2gpKSkpCisKIChk ZWZpbmUtc3ludGF4LXJ1bGUgKHNlYXJjaC1wYXRjaGVzIGZpbGUtbmFtZSAuLi4pCiAgICJSZXR1 cm4gdGhlIGxpc3Qgb2YgYWJzb2x1dGUgZmlsZSBuYW1lcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gK IEZJTEUtTkFNRSBmb3VuZCBpbiAlUEFUQ0gtUEFUSC4iCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvY2hyb21pdW0uc2NtIGIvZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbQppbmRleCAyNmFlMWUy NTUwLi5jZjQxOWNmNDFiIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvY2hyb21pdW0uc2NtCisr KyBiL2dudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KQEAgLTM1MSw5ICszNTEsNyBAQAogICAgICAg IjB3YmNianpoNWFrNG5jaWFocXc0eXZ4YzR4OGlrNHgwaXo5aDRrZnkwbTAxMXN4enkxNzQiKSkp KQogCiAoZGVmaW5lICVndWl4LXBhdGNoZXMKLSAgKGxpc3QgKGxvY2FsLWZpbGUKLSAgICAgICAg IChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgKHNlYXJjaC1wYXRjaCAidW5nb29n bGVkLWNocm9taXVtLWV4dGVuc2lvbi1zZWFyY2gtcGF0aC5wYXRjaCIpKSkpKQorICAoc2VhcmNo LXBhdGNoZXMgInVuZ29vZ2xlZC1jaHJvbWl1bS1leHRlbnNpb24tc2VhcmNoLXBhdGgucGF0Y2gi KSkKIAogOzsgVGhpcyBpcyBhIHNvdXJjZSAnc25pcHBldCcgdGhhdCBkb2VzIHRoZSBmb2xsb3dp bmc6CiA7OyAqKSBBcHBsaWVzIHZhcmlvdXMgcGF0Y2hlcyBmb3IgdW5idW5kbGluZyBwdXJwb3Nl cyBhbmQgbGlic3RkYysrIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMv ZW1iZWRkZWQuc2NtIGIvZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQppbmRleCBmMzg4YzExYzNk Li44MjZmNTY1NWMzIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZW1iZWRkZWQuc2NtCisrKyBi L2dudS9wYWNrYWdlcy9lbWJlZGRlZC5zY20KQEAgLTMwLDYgKzMwLDcgQEAKICAgIzp1c2UtbW9k dWxlIChndWl4IHBhY2thZ2VzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZG93bmxvYWQpCiAgICM6 dXNlLW1vZHVsZSAoZ3VpeCBzdm4tZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhw KQogICAjOnVzZS1tb2R1bGUgKGd1aXggZ2l0LWRvd25sb2FkKQogICAjOnVzZS1tb2R1bGUgKChn dWl4IGxpY2Vuc2VzKSAjOnByZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1 aWxkLXN5c3RlbSBjbWFrZSkKQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgIDs7IFJlbW92ZSB0 aGUgb25lIHBhdGNoIHRoYXQgZG9lc24ndCBhcHBseSB0byB0aGlzIDQuOSBzbmFwc2hvdCAodGhl CiAgICAgICAgICA7OyBwYXRjaCBpcyBmb3IgNC45LjQgYW5kIGxhdGVyIGJ1dCB0aGlzIHN2biBz bmFwc2hvdCBpcyBvbGRlcikuCiAgICAgICAgICAocGF0Y2hlcyAocmVtb3ZlIChsYW1iZGEgKHBh dGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgcGF0 Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0/IChsb2NhbC1maWxlLW5h bWUgcGF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnY2MtYXJt LWJ1Zy03MTM5OS5wYXRjaCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAob3JpZ2luLXBh dGNoZXMgKHBhY2thZ2Utc291cmNlIHhnY2MpKSkpKSkKICAgICAgIChuYXRpdmUtaW5wdXRzCmRp ZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZ251emlsbGEuc2NtIGIvZ251L3BhY2thZ2VzL2dudXpp bGxhLnNjbQppbmRleCA1NzZiYzI1ODZmLi5iZTY3NGRjZThmIDEwMDY0NAotLS0gYS9nbnUvcGFj a2FnZXMvZ251emlsbGEuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9nbnV6aWxsYS5zY20KQEAgLTcz NiwxNCArNzM2LDEwIEBAIGZyb20gZm9yY2luZyBHRVhQLVBST01JU0UuIgogICAgICAgICAgICAg IChiYXNlMzIKICAgICAgICAgICAgICAgIjAwd3MzNTQweDV3aHBpY2M1Zng0azk0OWZmNzNjcXZh ano2anAxM2FobjQ5d3FkYWRzNDciKSkpKQogCi0gICAgICAgICA7OyAnc2VhcmNoLXBhdGNoJyBy ZXR1cm5zIGVpdGhlciBhIHZhbGlkIGZpbGUgbmFtZSBvciAjZiwgc28gd3JhcCBpdAotICAgICAg ICAgOzsgaW4gJ2Fzc3VtZS12YWxpZC1maWxlLW5hbWUnIHRvIGF2b2lkICdsb2NhbC1maWxlJyB3 YXJuaW5ncy4KICAgICAgICAgIChnbnV6aWxsYS1maXhlcy1wYXRjaAotICAgICAgICAgIChsb2Nh bC1maWxlIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgIChz ZWFyY2gtcGF0Y2ggImljZWNhdC11c2Utb2xkZXItcmV2ZWFsLWhpZGRlbi1odG1sLnBhdGNoIikp KSkKKyAgICAgICAgICAoc2VhcmNoLXBhdGNoICJpY2VjYXQtdXNlLW9sZGVyLXJldmVhbC1oaWRk ZW4taHRtbC5wYXRjaCIpKQogICAgICAgICAgKG1ha2VpY2VjYXQtcGF0Y2gKLSAgICAgICAgICAo bG9jYWwtZmlsZSAoYXNzdW1lLXZhbGlkLWZpbGUtbmFtZQotICAgICAgICAgICAgICAgICAgICAg ICAoc2VhcmNoLXBhdGNoICJpY2VjYXQtbWFrZWljZWNhdC5wYXRjaCIpKSkpKQorICAgICAgICAg IChzZWFyY2gtcGF0Y2ggImljZWNhdC1tYWtlaWNlY2F0LnBhdGNoIikpKQogCiAgICAgKG9yaWdp bgogICAgICAgKG1ldGhvZCBjb21wdXRlZC1vcmlnaW4tbWV0aG9kKQpkaWZmIC0tZ2l0IGEvZ3Vp eC9saW50LnNjbSBiL2d1aXgvbGludC5zY20KaW5kZXggM2E3ZjNiZTMyNy4uYjBhMmZiYzMyNyAx MDA2NDQKLS0tIGEvZ3VpeC9saW50LnNjbQorKysgYi9ndWl4L2xpbnQuc2NtCkBAIC00Niw2ICs0 Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdleHAtPmFwcHJveGltYXRl LXNleHApKQogICAjOnVzZS1tb2R1bGUgKGd1aXggbGljZW5zZXMpCiAgICM6dXNlLW1vZHVsZSAo Z3VpeCByZWNvcmRzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKICAgIzp1c2UtbW9kdWxl IChndWl4IGdyYWZ0cykKICAgIzp1c2UtbW9kdWxlIChndWl4IHVwc3RyZWFtKQogICAjOnVzZS1t b2R1bGUgKGd1aXggdXRpbHMpCkBAIC05MjgsNiArOTI5LDggQEAgcGF0Y2ggY291bGQgbm90IGJl IGZvdW5kLiIKICAgICAgICAgICAgICAgICAgICAoc3RhcnRzLXdpdGgtcGFja2FnZS1uYW1lPyAo YmFzZW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgICgoPyBvcmlnaW4/IHBhdGNoKQog ICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChvcmlnaW4tYWN0 dWFsLWZpbGUtbmFtZSBwYXRjaCkpKQorICAgICAgICAgICAgICAgICAgKCg/IGxvY2FsLWZpbGU/ IHBhdGNoKQorICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChs b2NhbC1maWxlLW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgIChfICAjZikpICAgICA7 bXVzdCBiZSBzb21lIG90aGVyIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgICBwYXRj aGVzKQogICAgICAgICAgJygpCkBAIC05NDEsMTkgKzk0NCwyMiBAQCBwYXRjaCBjb3VsZCBub3Qg YmUgZm91bmQuIgogICAgICAobGV0ICgocHJlZml4IChzdHJpbmctbGVuZ3RoICglZGlzdHJvLWRp cmVjdG9yeSkpKQogICAgICAgICAgICAobWFyZ2luIChzdHJpbmctbGVuZ3RoICJndWl4LTIuMC4w cmMzLTEwMDAwLTEyMzQ1Njc4OTAvIikpCiAgICAgICAgICAgIChtYXggICAgOTkpKQorICAgICAg IChkZWZpbmUgKHRlc3QtcGF0Y2gtbmFtZSBmaWxlLW5hbWUpCisgICAgICAgICAoaWYgKD4gKCsg bWFyZ2luIChpZiAoc3RyaW5nLXByZWZpeD8gKCVkaXN0cm8tZGlyZWN0b3J5KSBmaWxlLW5hbWUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoc3RyaW5nLWxlbmd0aCBmaWxlLW5h bWUpIHByZWZpeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbGVuZ3Ro IGZpbGUtbmFtZSkpKQorICAgICAgICAgICAgICAgIG1heCkKKyAgICAgICAgICAgICAobWFrZS13 YXJuaW5nCisgICAgICAgICAgICAgIHBhY2thZ2UKKyAgICAgICAgICAgICAgKEdfICJ+YTogZmls ZSBuYW1lIGlzIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgKGxpc3QgKGJhc2VuYW1lIGZpbGUt bmFtZSkpCisgICAgICAgICAgICAgICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCisgICAgICAg ICAgICAgI2YpKQogICAgICAgIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAg ICAgICAgICAgICgoPyBzdHJpbmc/IHBhdGNoKQotICAgICAgICAgICAgICAgICAgICAgIChpZiAo PiAoKyBtYXJnaW4gKGlmIChzdHJpbmctcHJlZml4PyAoJWRpc3Ryby1kaXJlY3RvcnkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh dGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChzdHJp bmctbGVuZ3RoIHBhdGNoKSBwcmVmaXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1sZW5ndGggcGF0Y2gpKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS13YXJuaW5nCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAoR18gIn5hOiBmaWxlIG5hbWUgaXMgdG9vIGxvbmciKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgKGJhc2VuYW1lIHBhdGNoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICNmKSkKKyAgICAgICAgICAgICAgICAgICAgICAodGVzdC1wYXRjaC1uYW1lIHBhdGNoKSkKKyAg ICAgICAgICAgICAgICAgICAgICgoPyBsb2NhbC1maWxlPyBwYXRjaCkKKyAgICAgICAgICAgICAg ICAgICAgICAodGVzdC1wYXRjaC1uYW1lIChsb2NhbC1maWxlLWFic29sdXRlLWZpbGUtbmFtZSBw YXRjaCkpKQogICAgICAgICAgICAgICAgICAgICAgKF8gI2YpKQogICAgICAgICAgICAgICAgICAg IHBhdGNoZXMpKSkpKQogCi0tIAoyLjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0006-compile-all-compile-Keep-track-of-dependencies-of.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0006-compile-all-compile-Keep-track-of-dependencies-of.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MGRlYmM4OTEwNzk5ZGY2MGJjYTM0M2NhY2EwNWY4Yzc5ZjQ2NDIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNDowMjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Ni85XSBjb21waWxlLWFsbCxjb21waWxlOiBLZWVwIHRyYWNrIG9mIGRlcGVuZGVuY2llcyBvZgog Y29tcGlsZWQgbW9kdWxlcy4KClRoaXMgcGF0Y2ggZGVmaW5lcyBhICdub3RpY2UtZGVwZW5kZW5j eScgcHJvY2VkdXJlLgpNYWNyb3MgY2FuIHVzZSB0aGlzIHByb2NlZHVyZSB0byBpbmZvcm0gYnVp bGQtYXV4L2NvbXBpbGUtYWxsLnNjbQp0aGF0IGEgbW9kdWxlIG5lZWRzIHRvIGJlIHJlY29tcGls ZWQgd2hlbiBzb21lIGZpbGUgaXMgdXBkYXRlZC4KCiogZ3VpeC9idWlsZC9jb21waWxlLnNjbQog IChjdXJyZW50LWRlcGVuZGVuY3ktaW5mbywgY3VycmVudC1vdXRwdXQtZmlsZSk6IE5ldyBwYXJh bWV0ZXJzLgogIChub3RpY2UtZGVwZW5kZW5jeSk6IE5ldyBwcm9jZWR1cmUuCiAgKGNvbXBpbGUt ZmlsZXMpW2J1aWxkXTogU2V0ICdvdXRwdXQtZmlsZScuICBEZWxldGUgdGhlIG9sZCBjb21waWxl ZCBmaWxlCiAgaWYgbmVjZXNzYXJ5LiAgUmVtb3ZlIG9sZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9u LgoqIGJ1aWxkLWF1eC9jb21waWxlLWFsbC5zY206IFBvcHVsYXRlIGN1cnJlbnQtZGVwZW5kZW5j eS1pbmZvIGZyb20gYSBmaWxlLgogIFBvcHVsYXRlIHRoZSBmaWxlIGRlcGVuZGVuY3ktaW5mby5z Y20gZnJvbSB0aGUgaGFzaCB0YWJsZS4KICAoYnVpbGRkaXIpOiBOZXcgdmFyaWFibGUuCiAgKGZp bGUtbmVlZHMtY29tcGlsYXRpb24/KTogQ2hlY2sgaWYgdGhlIC5nbyBmaWxlIGlzIG9sZGVyIHRo YW4gdGhlCiAgZGVwZW5kZW5jaWVzLgoqIC5naXRpZ25vcmU6IElnbm9yZSBkZXBlbmRlbmN5LWlu Zm8uc2NtLgotLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgICAgfCAgMSArCiBidWlsZC1hdXgv Y29tcGlsZS1hbGwuc2NtIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGd1 aXgvYnVpbGQvY29tcGlsZS5zY20gICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODhmZTI0 NTg2ZC4uZjI0ZWE1ZmMzYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3Jl CkBAIC0xNTQsMyArMTU0LDQgQEAgdG1wCiAvZ251L3BhY2thZ2VzL2Jvb3RzdHJhcAogL2dudS9w YWNrYWdlcy9hdXgtZmlsZXMvZ3VpbGUtZ3VpbGUtbGF1bmNoZXIubwogL2d1aWxlCisvZGVwZW5k ZW5jeS1pbmZvLnNjbQpkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSBiL2J1 aWxkLWF1eC9jb21waWxlLWFsbC5zY20KaW5kZXggOWZmYmNlNDNhZC4uMDIyOTQwNzNlZCAxMDA2 NDQKLS0tIGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbQorKysgYi9idWlsZC1hdXgvY29tcGls ZS1hbGwuc2NtCkBAIC0xLDYgKzEsNyBAQAogOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBh Y2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCiA7OzsgQ29weXJpZ2h0IMKpIDIwMTYgVGF5bGFuIFVs cmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlpcmxpQGdtYWlsLmNvbT4KIDs7OyBDb3B5 cmlnaHQgwqkgMjAxNiwgMjAxNywgMjAxOSwgMjAyMCwgMjAyMSBMdWRvdmljIENvdXJ0w6hzIDxs dWRvQGdudS5vcmc+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTWF4aW1lIERldm9zIDxtYXhpbWVk ZXZvc0B0ZWxlbmV0LmJlPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXgu CiA7OzsKQEAgLTIwLDEyICsyMSwxNSBAQAogKHVzZS1tb2R1bGVzIChpY2UtOSBmb3JtYXQpCiAg ICAgICAgICAgICAgKGljZS05IG1hdGNoKQogICAgICAgICAgICAgIChpY2UtOSB0aHJlYWRzKQor ICAgICAgICAgICAgIChpY2UtOSBoYXNoLXRhYmxlKQogICAgICAgICAgICAgIChzcmZpIHNyZmkt MSkKKyAgICAgICAgICAgICAoc3JmaSBzcmZpLTI2KQogICAgICAgICAgICAgIChndWl4IGJ1aWxk IGNvbXBpbGUpCiAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRpbHMpKQogCiAoZGVmaW5lIGhv c3QgKGdldGVudiAiaG9zdCIpKQogKGRlZmluZSBzcmNkaXIgKGdldGVudiAic3JjZGlyIikpCiso ZGVmaW5lIGJ1aWxkZGlyIChnZXRjd2QpKQogCiAoZGVmaW5lIChyZWxhdGl2ZS1maWxlIGZpbGUp CiAgIChpZiAoc3RyaW5nLXByZWZpeD8gKHN0cmluZy1hcHBlbmQgc3JjZGlyICIvIikgZmlsZSkK QEAgLTQxLDEwICs0NSwzMyBAQAogICAgICAgICAgKHdpdGhvdXQtZXh0ZW5zaW9uIChzdHJpbmct ZHJvcC1yaWdodCByZWxhdGl2ZSA0KSkpCiAgICAgKHN0cmluZy1hcHBlbmQgd2l0aG91dC1leHRl bnNpb24gIi5nbyIpKSkKIAorOzsgUmVhZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZyb20gcHJl dmlvdXMgIm1ha2UiIHJ1bnMuCisoY3VycmVudC1kZXBlbmRlbmN5LWluZm8gKG1ha2UtaGFzaC10 YWJsZSkpCisoaWYgKGZpbGUtZXhpc3RzPyAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpCisgICAgKGN1 cnJlbnQtZGVwZW5kZW5jeS1pbmZvCisgICAgIChhbGlzdC0+aGFzaC10YWJsZQorICAgICAgKGNh bGwtd2l0aC1pbnB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtIiByZWFkICM6ZW5jb2Rpbmcg IlVURi04IikpKQorICAgIChjdXJyZW50LWRlcGVuZGVuY3ktaW5mbyAobWFrZS1oYXNoLXRhYmxl KSkpCisKKyhkZWZpbmUgKGR1bXAtZGVwZW5kZW5jeS1pbmZvKQorICAiRHVtcCB0aGUgY3VycmVu dCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBcIm1ha2VcIiBydW4uIgorICAo Y2FsbC13aXRoLW91dHB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtLm5ldyIKKyAgICAobGFt YmRhIChwb3J0KQorICAgICAgKGRpc3BsYXkgIjs7IFRoaXMgaXMgYXV0by1nZW5lcmF0ZWQgYnkg YnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSwKKzs7IGRvIG5vdCBtb2RpZnkgbWFudWFsbHkhCisi IHBvcnQpCisgICAgICAod3JpdGUgKGhhc2gtbWFwLT5saXN0IGNvbnMgKGN1cnJlbnQtZGVwZW5k ZW5jeS1pbmZvKSkgcG9ydCkpCisgICAgIzplbmNvZGluZyAiVVRGLTgiKQorICAocmVuYW1lLWZp bGUgImRlcGVuZGVuY3ktaW5mby5zY20ubmV3IiAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpKQorCiAo ZGVmaW5lIChmaWxlLW5lZWRzLWNvbXBpbGF0aW9uPyBmaWxlKQotICAobGV0ICgoZ28gKHNjbS0+ Z28gZmlsZSkpKQorICAobGV0KiAoKGdvIChzY20tPmdvIGZpbGUpKQorICAgICAgICAgKGV4dHJh LWRlcGVuZGVuY2llcworICAgICAgICAgIChoYXNoLXJlZiAoY3VycmVudC1kZXBlbmRlbmN5LWlu Zm8pIChpbi12aWNpbml0eSBidWlsZGRpciBnbykKKyAgICAgICAgICAgICAgICAgICAgJygpKSkp CiAgICAgKG9yIChub3QgKGZpbGUtZXhpc3RzPyBnbykpCi0gICAgICAgIChmaWxlLW10aW1lPD8g Z28gZmlsZSkpKSkKKyAgICAgICAgKGZpbGUtbXRpbWU8PyBnbyBmaWxlKQorICAgICAgICAoYW55 IChjdXQgZmlsZS1tdGltZTw/IGdvIDw+KSBleHRyYS1kZXBlbmRlbmNpZXMpKSkpCiAKIChkZWZp bmUqIChwYXJhbGxlbC1qb2ItY291bnQgIzpvcHRpb25hbCAoZmxhZ3MgKGdldGVudiAiTUFLRUZM QUdTIikpKQogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBhcyBkZXRlcm1p bmVkIGJ5IEZMQUdTLCB0aGUgZmxhZ3MgcGFzc2VkCkBAIC0xMDksNyArMTM2LDcgQEAgdG8gJ21h a2UnLiIKICAgICAgICAobGV0KiAoKHRvLWJ1aWxkICAoZmlsdGVyIGZpbGUtbmVlZHMtY29tcGls YXRpb24/IGZpbGVzKSkKICAgICAgICAgICAgICAgKHByb2Nlc3NlZCAoKyBwcm9jZXNzZWQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAobGVuZ3RoIGZpbGVzKSAobGVuZ3RoIHRvLWJ1 aWxkKSkpKSkKLSAgICAgICAgIChjb21waWxlLWZpbGVzIHNyY2RpciAoZ2V0Y3dkKSB0by1idWls ZAorICAgICAgICAgKGNvbXBpbGUtZmlsZXMgc3JjZGlyIGJ1aWxkZGlyIHRvLWJ1aWxkCiAgICAg ICAgICAgICAgICAgICAgICAgICAjOndvcmtlcnMgKHBhcmFsbGVsLWpvYi1jb3VudCopCiAgICAg ICAgICAgICAgICAgICAgICAgICAjOmhvc3QgaG9zdAogICAgICAgICAgICAgICAgICAgICAgICAg IzpyZXBvcnQtbG9hZCAobGFtYmRhIChmaWxlIHRvdGFsIGNvbXBsZXRlZCkKQEAgLTEyNyw4ICsx NTQsMTAgQEAgdG8gJ21ha2UnLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDIgcHJvY2Vzc2VkKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgq IDIgZ3JhbmQtdG90YWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNjbS0+Z28gZmlsZSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNlLW91dHB1dCkpKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JjZS1vdXRwdXQpKSkp KQorICAgICAgIChkdW1wLWRlcGVuZGVuY3ktaW5mbykpCiAgICAgIChsYW1iZGEgXworICAgICAg IChkdW1wLWRlcGVuZGVuY3ktaW5mbykKICAgICAgICAocHJpbWl0aXZlLWV4aXQgMSkpCiAgICAg IChsYW1iZGEgYXJncwogICAgICAgIDs7IFRyeSB0byByZXBvcnQgdGhlIGVycm9yIGluIGFuIGlu dGVsbGlnaWJsZSB3YXkuCmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkL2NvbXBpbGUuc2NtIGIvZ3Vp eC9idWlsZC9jb21waWxlLnNjbQppbmRleCBiODZlYzNiNzQzLi5jMjU5YjI3YWJmIDEwMDY0NAot LS0gYS9ndWl4L2J1aWxkL2NvbXBpbGUuc2NtCisrKyBiL2d1aXgvYnVpbGQvY29tcGlsZS5zY20K QEAgLTEsNiArMSw3IEBACiA7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5h Z2VtZW50IGZvciBHTlUKIDs7OyBDb3B5cmlnaHQgwqkgMjAxMywgMjAxNCwgMjAxNiwgMjAxNywg MjAxOCwgMjAxOSwgMjAyMCBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5vcmc+CiA7OzsgQ29w eXJpZ2h0IMKpIDIwMTUgVGF5bGFuIFVscmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlp cmxpQGdtYWlsLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGlt ZWRldm9zQHRlbGVuZXQuYmU+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3Vp eC4KIDs7OwpAQCAtMjksMTQgKzMwLDI3IEBACiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1 dGlscykKICAgIzp1c2UtbW9kdWxlIChsYW5ndWFnZSB0cmVlLWlsIG9wdGltaXplKQogICAjOnVz ZS1tb2R1bGUgKGxhbmd1YWdlIGNwcyBvcHRpbWl6ZSkKLSAgIzpleHBvcnQgKGNvbXBpbGUtZmls ZXMpKQorICAjOmV4cG9ydCAoY29tcGlsZS1maWxlcyBub3RpY2UtZGVwZW5kZW5jeSBjdXJyZW50 LWRlcGVuZGVuY3ktaW5mbykpCiAKIDs7OyBDb21tZW50YXJ5OgogOzs7Ci07OzsgU3VwcG9ydCBj b2RlIHRvIGNvbXBpbGUgR3VpbGUgY29kZSBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZSAod2l0 aCAyLjIpLgorOzs7IFN1cHBvcnQgY29kZSB0byBjb21waWxlIEd1aWxlIGNvZGUgYXMgZWZmaWNp ZW50bHkgYXMgcG9zc2libGUgKHdpdGggMi4yKQorOzs7IGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBk ZXBlbmRlbmNpZXMgb2YgY29tcGlsZWQgZmlsZXMuCiA7OzsKIDs7OyBDb2RlOgogCisoZGVmaW5l IGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvIChtYWtlLXBhcmFtZXRlciAjZikpCisoZGVmaW5lIGN1 cnJlbnQtb3V0cHV0LWZpbGUgKG1ha2UtcGFyYW1ldGVyICNmKSkKKworKGRlZmluZSAobm90aWNl LWRlcGVuZGVuY3kgZGVwZW5kZW5jeSkKKyAgIkFkZCB0aGUgZmlsZSBERVBFTkRFTkNZIHRvIHRo ZSBsaXN0IG9mIGRlcGVuZGVuY2llcyBvZiB0aGUgY29tcGlsZWQgZmlsZQordGhhdCBpcyBiZWlu ZyBjb21wdXRlZCwgaWYgYW55LiIKKyAgKGRlZmluZSBkZXBlbmRlbmN5LXRhYmxlIChjdXJyZW50 LWRlcGVuZGVuY3ktaW5mbykpCisgIChkZWZpbmUgb3V0cHV0IChjdXJyZW50LW91dHB1dC1maWxl KSkKKyAgKHdoZW4gKGFuZCBkZXBlbmRlbmN5LXRhYmxlIG91dHB1dCkKKyAgICAoaGFzaC1zZXQh IGRlcGVuZGVuY3ktdGFibGUgb3V0cHV0CisgICAgICAgICAgICAgICAoY29ucyBkZXBlbmRlbmN5 IChoYXNoLXJlZiBkZXBlbmRlbmN5LXRhYmxlIG91dHB1dCAnKCkpKSkpKQorCiAoZGVmaW5lIG9w dGltaXphdGlvbnMtZm9yLWxldmVsCiAgIChvciAoYW5kPT4gKGZhbHNlLWlmLWV4Y2VwdGlvbgog ICAgICAgICAgICAgICAocmVzb2x2ZS1pbnRlcmZhY2UgJyhzeXN0ZW0gYmFzZSBvcHRpbWl6ZSkp KQpAQCAtMjA3LDEyICsyMjEsMjcgQEAgZmlsZXMgYXJlIGZvciBIT1NULCBhIEdOVSB0cmlwbGV0 IHN1Y2ggYXMgXCJ4ODZfNjQtbGludXgtZ251XCIuIgogICAgIDs7IEV4aXQgYXMgc29vbiBhcyBz b21ldGhpbmcgZ29lcyB3cm9uZy4KICAgICAoZXhpdC1vbi1leGNlcHRpb24KICAgICAgZmlsZQot ICAgICAobGV0ICgocmVsYXRpdmUgKHJlbGF0aXZlLWZpbGUgc291cmNlLWRpcmVjdG9yeSBmaWxl KSkpCi0gICAgICAgKGNvbXBpbGUtZmlsZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAjOm91 dHB1dC1maWxlIChzdHJpbmctYXBwZW5kIGJ1aWxkLWRpcmVjdG9yeSAiLyIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjbS0+Z28gcmVsYXRpdmUp KQotICAgICAgICAgICAgICAgICAgICAgIzpvcHRzIChhcHBlbmQgd2FybmluZy1vcHRpb25zCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW1pemF0aW9uLW9wdGlvbnMg cmVsYXRpdmUpKSkpKSkKKyAgICAgKGxldCogKChyZWxhdGl2ZSAocmVsYXRpdmUtZmlsZSBzb3Vy Y2UtZGlyZWN0b3J5IGZpbGUpKQorICAgICAgICAgICAgKG91dHB1dC1maWxlIChzdHJpbmctYXBw ZW5kIGJ1aWxkLWRpcmVjdG9yeSAiLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NtLT5nbyByZWxhdGl2ZSkpKSkKKyAgICAgICAocGFyYW1ldGVyaXplICgoY3Vy cmVudC1vdXRwdXQtZmlsZSBvdXRwdXQtZmlsZSkpCisgICAgICAgICAod2hlbiAoY3VycmVudC1k ZXBlbmRlbmN5LWluZm8pCisgICAgICAgICAgIDs7IElmIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24g aXMgYmVpbmcgdHJhY2tlZCwgcmVtb3ZlCisgICAgICAgICAgIDs7IHRoZSBvbGQgY29tcGlsZWQg ZmlsZSBmaXJzdC4gIE90aGVyd2lzZSwgaWYgcmVjb21waWxpbmcKKyAgICAgICAgICAgOzsgdGhl IGZpbGUgZHVlIHRvIGFuIHVwZGF0ZWQgZGVwZW5kZW5jeSBjYXVzZXMgYW4gZXhjZXB0aW9uLAor ICAgICAgICAgICA7OyB0aGUgbmV3IGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gd29uJ3QgaW5jbHVk ZSB0aGUgY29tcGlsZWQKKyAgICAgICAgICAgOzsgZmlsZSBhbmQgdGhlcmVmb3JlIHRoZSBvbGQg Y29tcGlsZWQgZmlsZSB3b3VsZCBiZSBjb25zaWRlcmVkCisgICAgICAgICAgIDs7IHVwLXRvLWRh dGUgb24gdGhlIGZvbGxvd2luZyAibWFrZSIgcnVuLgorICAgICAgICAgICAod2hlbiAoZmlsZS1l eGlzdHM/IG91dHB1dC1maWxlKQorICAgICAgICAgICAgIChkZWxldGUtZmlsZSBvdXRwdXQtZmls ZSkpCisgICAgICAgICAgIDs7IFJlbW92ZSB0aGUgb2xkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24s IG90aGVyd2lzZQorICAgICAgICAgICA7OyB0aGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiB0YWJs ZSB3aWxsIGtlZXAgZ3Jvd2luZworICAgICAgICAgICA7OyBhZnRlciBlYWNoICJtYWtlIiBydW4u CisgICAgICAgICAgIChoYXNoLXJlbW92ZSEgKGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvKSBvdXRw dXQtZmlsZSkpCisgICAgICAgICAoY29tcGlsZS1maWxlIGZpbGUKKyAgICAgICAgICAgICAgICAg ICAgICAgIzpvdXRwdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAj Om9wdHMgKGFwcGVuZCB3YXJuaW5nLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG9wdGltaXphdGlvbi1vcHRpb25zIHJlbGF0aXZlKSkpKSkpKQogCiAgICh3 aXRoLWF1Z21lbnRlZC1zZWFyY2gtcGF0aCAlbG9hZC1wYXRoIHNvdXJjZS1kaXJlY3RvcnkKICAg ICAod2l0aC1hdWdtZW50ZWQtc2VhcmNoLXBhdGggJWxvYWQtY29tcGlsZWQtcGF0aCBidWlsZC1k aXJlY3RvcnkKLS0gCjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0007-packages-Add-patches-to-the-dependency-list-of-pa.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0007-packages-Add-patches-to-the-dependency-list-of-pa.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyYmMyOWQ0NDNkYzVkNjA5Njk2MmRhM2Q1YTEwMjg0NzM0NjJjNDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNzoxNTowOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Ny85XSBwYWNrYWdlczogQWRkIHBhdGNoZXMgdG8gdGhlIGRlcGVuZGVuY3kgbGlzdCBvZgogcGFj a2FnZSBtb2R1bGVzLgoKKiBnbnUvcGFja2FnZXMuc2NtIChzZWFyY2gtcGF0Y2gpOiBDYWxsICdu b3RpY2UtZGVwZW5kZW5jeScgb24KICB0aGUgcGF0Y2ggZmlsZS4KLS0tCiBnbnUvcGFja2FnZXMu c2NtIHwgNyArKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzLnNjbSBiL2dudS9wYWNrYWdlcy5zY20K aW5kZXggZjU1NTJlNWE5Yi4uMzk5MjlhZTAyMiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzLnNj bQorKysgYi9nbnUvcGFja2FnZXMuc2NtCkBAIC0zNCw2ICszNCw4IEBACiAgICAgICAgICAgICAg ICAgIzpzZWxlY3QgKChwYWNrYWdlLW5hbWUtPm5hbWUrdmVyc2lvbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLiBoeXBoZW4tc2VwYXJhdGVkLW5hbWUtPm5hbWUrdmVyc2lvbikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWtkaXItcCkpCisgIDs7IG9ubHkgcmVxdWlyZWQgYXQgZXhw YW5zaW9uIHRpbWUKKyAgIzphdXRvbG9hZCAgIChndWl4IGJ1aWxkIGNvbXBpbGUpIChub3RpY2Ut ZGVwZW5kZW5jeSkKICAgIzp1c2UtbW9kdWxlIChndWl4IHByb2ZpbGVzKQogICAjOnVzZS1tb2R1 bGUgKGd1aXggZGVzY3JpYmUpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkZXByZWNhdGlvbikKQEAg LTEyMSw3ICsxMjMsMTAgQEAgaWYgcG9zc2libGUuICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIK ICAgICAgICA7OyBpbiBhZHZhbmNlLgogICAgICAgIChsZXQgKChwYXRjaCAodHJ5LXNlYXJjaC1w YXRjaCAoc3ludGF4LT5kYXR1bSAjJ2ZpbGUtbmFtZSkpKSkKICAgICAgICAgIChpZiBwYXRjaAot ICAgICAgICAgICAgICNgKCVsb2NhbC1wYXRjaC1maWxlIGZpbGUtbmFtZSAjLChmaWxlLWhhc2gq IHBhdGNoICM6c2VsZWN0PyB0cnVlKSkKKyAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAg ICAgIChub3RpY2UtZGVwZW5kZW5jeSBwYXRjaCkKKyAgICAgICAgICAgICAgICNgKCVsb2NhbC1w YXRjaC1maWxlIGZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IywoZmlsZS1oYXNoKiBwYXRjaCAjOnNlbGVjdD8gdHJ1ZSkpKQogICAgICAgICAgICAgIChiZWdp bgogICAgICAgICAgICAgICAgKHdhcm5pbmcgKHNvdXJjZS1wcm9wZXJ0aWVzLT5sb2NhdGlvbgog ICAgICAgICAgICAgICAgICAgICAgICAgIChzeW50YXgtc291cmNlICMnZmlsZS1uYW1lKSkKLS0g CjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0008-gexp-Do-not-intern-if-the-file-is-already-in-the-.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0008-gexp-Do-not-intern-if-the-file-is-already-in-the-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiNjkwN2Y3NjA0MGZhNTI0MTEwYTUwMzg0OGVkOWI5ZDliMTlkZmFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxODoxMDozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg OC85XSBnZXhwOiBEbyBub3QgaW50ZXJuIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgaW4gdGhlCiBz dG9yZS4KCiogZ3VpeC9nZXhwLnNjbSAobG9jYWwtZmlsZS1jb21waWxlcik6IFdoZW4gdGhlIGZp bGUgaXMgYWxyZWFkeSBpbiB0aGUKICBzdG9yZSwgcmUtdXNlIHRoZSBmaXhlZCBvdXRwdXQgcGF0 aCBpbnN0ZWFkIG9mIGludGVybmluZyB0aGUgZmlsZQogIGFnYWluLgoqIGd1aXgvZ2V4cC5zY20g KGFkZC10ZW1wLXJvb3QqLCB2YWxpZC1wYXRoPyopOiBOZXcgcHJvY2VkdXJlcy4KLS0tCiBndWl4 L2dleHAuc2NtIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2d1aXgvZ2V4cC5zY20gYi9ndWl4L2dleHAuc2NtCmluZGV4IGM2OWU0YWEyOTkuLjZh NmQxMzAxMTAgMTAwNjQ0Ci0tLSBhL2d1aXgvZ2V4cC5zY20KKysrIGIvZ3VpeC9nZXhwLnNjbQpA QCAtNTI4LDE2ICs1MjgsNDMgQEAgYXBwZWFycy4iCiAnc3lzdGVtLWVycm9yJyBleGNlcHRpb24g aXMgcmFpc2VkIGlmIEZJTEUgY291bGQgbm90IGJlIGZvdW5kLiIKICAgKGZvcmNlICglbG9jYWwt ZmlsZS1hYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSkpKQogCisoZGVmaW5lIGFkZC10ZW1wLXJvb3Qq IChzdG9yZS1saWZ0IGFkZC10ZW1wLXJvb3QpKQorKGRlZmluZSB2YWxpZC1wYXRoPyogKHN0b3Jl LWxpZnQgdmFsaWQtcGF0aD8pKQorCiAoZGVmaW5lLWdleHAtY29tcGlsZXIgKGxvY2FsLWZpbGUt Y29tcGlsZXIgKGZpbGUgPGxvY2FsLWZpbGU+KSBzeXN0ZW0gdGFyZ2V0KQogICA7OyAiQ29tcGls ZSIgRklMRSBieSBhZGRpbmcgaXQgdG8gdGhlIHN0b3JlLgogICAobWF0Y2ggZmlsZQotICAgICgo JCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBmb3JjZSBhYnNvbHV0ZSkgbmFtZSBzaGEyNTYgcmVjdXJz aXZlPyBzZWxlY3Q/KQotICAgICA7OyBDYW5vbmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3Mg YSBzeW1saW5rLCBpdCBpcyByZXNvbHZlZC4gIEZhaWxpbmcKLSAgICAgOzsgdG8gZG8gdGhhdCwg d2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcgYSBkYW5nbGlu ZwotICAgICA7OyBzeW1saW5rIGluIHRoZSBzdG9yZSwgYW5kIHdoZW4gUkVDVVJTSVZFPyBpcyAj ZiAnYWRkLXRvLXN0b3JlJyB3b3VsZAotICAgICA7OyBqdXN0IHRocm93IGFuIGVycm9yLCBib3Ro IG9mIHdoaWNoIGFyZSBpbmNvbnZlbmllbnQuCi0gICAgIChpbnRlcm5lZC1maWxlIGFic29sdXRl IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNpdmU/IHJlY3Vyc2l2ZT8gIzpzZWxl Y3Q/IHNlbGVjdD8pKSkpCisgICAgOzsgRGVsYXkgY29tcHV0aW5nIHRoZSBhYnNvbHV0ZSBmaWxl IG5hbWUgdW50aWwgJ2ludGVybicsIGFzIHRoaXMKKyAgICA7OyBtaWdodCBiZSBhIHJlbGF0aXZl bHkgZXhwZW5zaXZlIGNvbXB1dGF0aW9uIChlLmcuIGlmIHNlYXJjaC1wYXRjaAorICAgIDs7IGlz IHVzZWQpLCBlc3BlY2lhbGx5IG9uIGEgc3Bpbm5pbmcgZGlzay4KKyAgICAoKCQgPGxvY2FsLWZp bGU+IGZpbGUgYWJzb2x1dGUtcHJvbWlzZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8p CisgICAgIChsZXQgKCkKKyAgICAgICAoZGVmaW5lIChpbnRlcm4pCisgICAgICAgICA7OyBDYW5v bmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3MgYSBzeW1saW5rLCBpdCBpcyByZXNvbHZlZC4K KyAgICAgICAgIDs7IEZhaWxpbmcgdG8gZG8gdGhhdCwgd2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3 ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcKKyAgICAgICAgIDs7IGEgZGFuZ2xpbmcgc3ltbGluayBp biB0aGUgc3RvcmUsIGFuZCB3aGVuIFJFQ1VSU0lWRT8gaXMgI2YKKyAgICAgICAgIDs7ICdhZGQt dG8tc3RvcmUnIHdvdWxkIGp1c3QgdGhyb3cgYW4gZXJyb3IsIGJvdGggb2Ygd2hpY2ggYXJlCisg ICAgICAgICA7OyBpbmNvbnZlbmllbnQuCisgICAgICAgICAoaW50ZXJuZWQtZmlsZSAoZm9yY2Ug YWJzb2x1dGUtcHJvbWlzZSkgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNp dmU/IHJlY3Vyc2l2ZT8gIzpzZWxlY3Q/IHNlbGVjdD8pKQorICAgICAgIDs7IElmIHRoZSBoYXNo IGlzIGtub3duIGluIGFkdmFuY2UgYW5kIHRoZSBzdG9yZSBhbHJlYWR5IGhhcyB0aGUKKyAgICAg ICA7OyBpdGVtLCB0aGVyZSBpcyBubyBuZWVkIHRvIGludGVybiB0aGUgZmlsZS4KKyAgICAgICAo aWYgc2hhMjU2CisgICAgICAgICAgIChsZXQgKChwYXRoIChmaXhlZC1vdXRwdXQtcGF0aCBuYW1l IHNoYTI1NiAjOnJlY3Vyc2l2ZT8gcmVjdXJzaXZlPykpKQorICAgICAgICAgICAgIChtYmVnaW4g JXN0b3JlLW1vbmFkCisgICAgICAgICAgICAgICA7OyBUZWxsIHRoZSBHQyB0aGF0IFBBVEggd2ls bCBiZSB1c2VkLCBzdWNoIHRoYXQgaXQgd29uJ3QKKyAgICAgICAgICAgICAgIDs7IGJlIGRlbGV0 ZWQuCisgICAgICAgICAgICAgICAoYWRkLXRlbXAtcm9vdCogcGF0aCkKKyAgICAgICAgICAgICAg IDs7ICdhZGQtdGVtcC1yb290KicgZG9lc24ndCB0aG93IGFuIGVycm9yIGlmIHRoZSBzdG9yZSBp dGVtCisgICAgICAgICAgICAgICA7OyBkb2VzIG5vdCBleGlzdCwgc28gd2UgbmVlZCB0byBjaGVj ayBpZiBQQVRIIGFjdHVhbGx5IGV4aXN0cy4KKyAgICAgICAgICAgICAgIChtbGV0ICVzdG9yZS1t b25hZAorICAgICAgICAgICAgICAgICAoKHZhbGlkPyAodmFsaWQtcGF0aD8qIHBhdGgpKSkKKyAg ICAgICAgICAgICAgICAgKGlmIHZhbGlkPworICAgICAgICAgICAgICAgICAgICAgKHJldHVybiBw YXRoKQorICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCwgZmFs bC1iYWNrIGludGVybmluZy4KKyAgICAgICAgICAgICAgICAgICAgIChpbnRlcm4pKSkpKQorICAg ICAgICAgICA7OyBJZiBQQVRIIGRvZXMgbm90IHlldCBleGlzdCwgZmFsbCBiYWNrIHRvIGludGVy bmluZy4KKyAgICAgICAgICAgKGludGVybikpKSkpKQogCiAoZGVmaW5lLXJlY29yZC10eXBlIDxw bGFpbi1maWxlPgogICAoJXBsYWluLWZpbGUgbmFtZSBjb250ZW50IHJlZmVyZW5jZXMpCi0tIAoy LjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0009-base32-Reduce-GC-pressure-in-make-bytevector-base.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0009-base32-Reduce-GC-pressure-in-make-bytevector-base.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjY2JhYTFhNGI0NDdjNjdmOTk3YTYzNDk0YTgyYzhlMmI5MDVkY2NkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNjoyODozMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg OS85XSBiYXNlMzI6IFJlZHVjZSBHQyBwcmVzc3VyZSBpbgogbWFrZS1ieXRldmVjdG9yLT5iYXNl MzItc3RyaW5nLgoKVGhlIGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIHVzZWQgdG8gY29tcGFyZSBw ZXJmb3JtYW5jZToKCjs7IGZpcnN0IDIwIGJ5dGVzIG9mIHNoYTI1NiBvZiAjdnU4KCN4ZGUgI3hh ZCAjeGJlICN4ZWYpCihkZWZpbmUgYnYgI3Z1OCg5NSAxMjAgMTk1IDUwIDExNiAyMjggNjMgMTY5 IDIyMiA4NiA4OSAzOCA5MiAyOSAxNDUgMTI2IDM3IDE5MiA1NSAzNCkpCixwcm9maWxlCihsZXQg bG9vcCAoKG4gMCkpCiAgKHdoZW4gKDwgbiAjZTFlNikKICAgICAoKEAgKGd1aXggYmFzZTMyKSBi eXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZykgYnYpCiAgICAgKGxvb3AgKCsgbiAxKSkpKQoK QmVmb3JlIHRoaXMgY2hhbmdlLCB0aGUgb3V0cHV0IHdhczoKClsuLi5dClNhbXBsZSBjb3VudDog MTE0MApUb3RhbCB0aW1lOiAyNy40NjU1NjAwMTggc2Vjb25kcyAoMTAuNjU5MzMxNDMzIHNlY29u ZHMgaW4gR0MpCgpBZnRlciB0aGlzIGNoYW5nZSwgdGhlIG91dHB1dCB3YXM6CgpbLi4uXQpTYW1w bGUgY291bnQ6IDk1NwpUb3RhbCB0aW1lOiAyMC40Nzg4NDcxNDMgc2Vjb25kcyAoNi4xMzk3MjEx ODkgc2Vjb25kcyBpbiBHQykKCiogZ3VpeC9iYXNlMzIuc2NtCiAgKG1ha2UtYnl0ZXZlY3Rvci0+ YmFzZTMyLXN0cmluZyk6IEVsaW1pbmF0ZSAncmV2ZXJzZScsIHVzZSBtdXRhdGlvbiBpbnN0ZWFk LgotLS0KIGd1aXgvYmFzZTMyLnNjbSB8IDE4ICsrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3Vp eC9iYXNlMzIuc2NtIGIvZ3VpeC9iYXNlMzIuc2NtCmluZGV4IDQ5ZjE5MWJhMjYuLmU3NmJmMzVl Y2MgMTAwNjQ0Ci0tLSBhL2d1aXgvYmFzZTMyLnNjbQorKysgYi9ndWl4L2Jhc2UzMi5zY20KQEAg LTE0MSwxMiArMTQxLDE4IEBAIHRoZSBwcmV2aW91cyBhcHBsaWNhdGlvbiBvciBJTklULiIKIChk ZWZpbmUgKG1ha2UtYnl0ZXZlY3Rvci0+YmFzZTMyLXN0cmluZyBxdWludGV0LWZvbGQgYmFzZTMy LWNoYXJzKQogICAobGFtYmRhIChidikKICAgICAiUmV0dXJuIGEgYmFzZTMyIGVuY29kaW5nIG9m IEJWIHVzaW5nIEJBU0UzMi1DSEFSUyBhcyB0aGUgYWxwaGFiZXQuIgotICAgIChsZXQgKChjaGFy cyAocXVpbnRldC1mb2xkIChsYW1iZGEgKHEgcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zICh2ZWN0b3ItcmVmIGJhc2UzMi1jaGFycyBxKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnYpKSkKLSAgICAgIChsaXN0 LT5zdHJpbmcgKHJldmVyc2UgY2hhcnMpKSkpKQorICAgIDs7IE11dGF0aW9uIGNhbiBiZSBhdm9p ZGVkIHdpdGggJ3JldmVyc2UnLiAgSG93ZXZlciwgdGhhdCB3b3VsZAorICAgIDs7IG1ha2UgdGhp cyBwcm9jZWR1cmUgYWJvdXQgMzAlIHNsb3dlciBkdWUgdG8gdGhlIGV4dHJhIEdDIHByZXNzdXJl LgorICAgIChsZXQqICgoc3RhcnQgKGNvbnMgI2YgI2YpKQorICAgICAgICAgICAoZW5kIChxdWlu dGV0LWZvbGQgKGxhbWJkYSAocSByKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVmaW5lIHBhaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAodmVj dG9yLXJlZiBiYXNlMzItY2hhcnMgcSkgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0LWNkciEgciBwYWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ2KSkpCisgICAgICAoc2V0LWNkciEgZW5kICcoKSkKKyAgICAgIChs aXN0LT5zdHJpbmcgKGNkciBzdGFydCkpKSkpCiAKIChkZWZpbmUgJW5peC1iYXNlMzItY2hhcnMK ICAgOzsgU2VlIGBsaWJ1dGlsL2hhc2guY2MnLgotLSAKMi4zMy4wCgo= --=-FFYmpQl4eyfmi+ZCpAS1-- --=-eExp0UHbbratciKFMMXn Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTUfBhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oPeAP9GUqwvLHvIKa8XYpazBkEbmcu7 QauxwC8cu3p0G1bjkwEAwCfKrddUJnIutjYFyTcMy+QPvcPsbaDsMEzMFODlnQY= =v6yN -----END PGP SIGNATURE----- --=-eExp0UHbbratciKFMMXn--