From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Noah Lavine Newsgroups: gmane.lisp.guile.devel Subject: Re: Do you recognize these modules? Date: Tue, 10 Jul 2012 23:02:29 -0400 Message-ID: References: <87zk9r8p1s.fsf@gnuvola.org> <8762bz89zg.fsf@gnuvola.org> <87r4unszj2.fsf@gnu.org> <87k40eg0k1.fsf@gnuvola.org> <87mx59kxqw.fsf@pobox.com> <87ehq8od4e.fsf@gnuvola.org> <87wr40s9yk.fsf@pobox.com> <87396onqi0.fsf@gnuvola.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8fb1f8d6dbf80e04c48513bf X-Trace: dough.gmane.org 1341975761 5026 80.91.229.3 (11 Jul 2012 03:02:41 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 11 Jul 2012 03:02:41 +0000 (UTC) Cc: Andy Wingo , =?ISO-8859-1?Q?Ludovic_Court=E8s?= , guile-devel@gnu.org To: Thien-Thi Nguyen Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Wed Jul 11 05:02:41 2012 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SonCK-0005cQ-9z for guile-devel@m.gmane.org; Wed, 11 Jul 2012 05:02:41 +0200 Original-Received: from localhost ([::1]:49895 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SonCJ-0003af-Ck for guile-devel@m.gmane.org; Tue, 10 Jul 2012 23:02:39 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:38505) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SonCF-0003aa-UE for guile-devel@gnu.org; Tue, 10 Jul 2012 23:02:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SonCE-0006Jg-1g for guile-devel@gnu.org; Tue, 10 Jul 2012 23:02:35 -0400 Original-Received: from mail-ob0-f169.google.com ([209.85.214.169]:33737) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SonCD-0006JH-GX; Tue, 10 Jul 2012 23:02:33 -0400 Original-Received: by obhx4 with SMTP id x4so1027763obh.0 for ; Tue, 10 Jul 2012 20:02:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=M18DO7edTEdsl1xMayFNKwa8b3vYA0PNxO18yw5eIO4=; b=k3IFKtxZWyi8IQyi9ctNI5ekyKN9bCHkpJHU6cFsJnoQhvBu25gt8yew2MZcGzU7HB PfTiO2UM3CzuNwqumzMHFsMjeY9K7xVc0n9iCI96+l5oEDK99lpKHOqo3UwUZMLoEKi9 di3ftuyUjACEU9hFzy9Dc5JagLM/6ZmlfZkQwXWJtUpjekffS+vnHLNga4EiMKzcEFea +mAxy0Abs65tAv/bk8p6ns5Ol0Mm1mG/AzElvwKT3/OwU5IDGtcZbiYd8BpNOpzfJbsY Gz2xWx39HmwUdlBddZDWAjNsm458hwFfSjLqeCZ4nriJmg1m5srfeRfj6HjtinfzH8In aPAQ== Original-Received: by 10.60.29.38 with SMTP id g6mr26327738oeh.45.1341975749719; Tue, 10 Jul 2012 20:02:29 -0700 (PDT) Original-Received: by 10.76.82.68 with HTTP; Tue, 10 Jul 2012 20:02:29 -0700 (PDT) In-Reply-To: <87396onqi0.fsf@gnuvola.org> X-Google-Sender-Auth: 9nXP88ntQRV1Uw5D5PfyW3y6QKw X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.214.169 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:14738 Archived-At: --e89a8fb1f8d6dbf80e04c48513bf Content-Type: text/plain; charset=ISO-8859-1 Hello all, I'm sorry to miss 2.0.6 by only a few days, but I have turned this documentation into some patches. Here they are; I think they are ready to apply to stable-2.0. The first patch is just a quick note that SRFI-2 has another name. The second patch is the big one: it imports most of the documentation from Thien-Thi's patch. The third one just changes the (ice-9 hcons) documentation a bit because I thought it flowed more nicely that way, and the fourth patch commits a modified version of the (ice-9 string-fun) documentation. It had to be changed because it documented an old interface to substring/shared which Guile doesn't seem to support any more. What do you think? Noah On Fri, May 25, 2012 at 1:02 PM, Thien-Thi Nguyen wrote: > () Andy Wingo > () Fri, 25 May 2012 14:48:19 +0200 > > You interested in submitting this as a patches to Guile? > > Not really. The documentation is necessarily Guile 1.4-specific, > requiring reconciliation in both content and style for best 1.8+ > fit. I think Noah Lavine is in a better position to do that work, > so i defer to his initiative, including commit strategy. > > (Fancy-sounding but fundamentally lame excuse ends here.) > --e89a8fb1f8d6dbf80e04c48513bf Content-Type: application/octet-stream; name="0001-Document-ice-9-and-let-star.patch" Content-Disposition: attachment; filename="0001-Document-ice-9-and-let-star.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4htosjj0 RnJvbSAyMDM5ODMzZjM4MWFhNmY1NmQ5Mjg1ZTlkYjFhODQ5NzUxYjU5MGQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bm9haC5iLmxhdmluZUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMzAgSnVuIDIwMTIgMDg6NDI6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEv NF0gRG9jdW1lbnQgKGljZS05IGFuZC1sZXQtc3RhcikKCiogZG9jL3JlZi9zcmZpLW1vZHVsZXMu dGV4aTogbm90ZSB0aGF0IChzcmZpIHNyZmktMikgaXMgdGhlIHNhbWUgYXMKICAoaWNlLTkgYW5k LWxldC1zdGFyKS4KLS0tCiBkb2MvcmVmL3NyZmktbW9kdWxlcy50ZXhpIHwgICAgNiArKysrKysK IDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9yZWYvc3JmaS1tb2R1bGVzLnRleGkgYi9kb2MvcmVmL3NyZmktbW9kdWxlcy50 ZXhpCmluZGV4IGZkYzMxNmYuLjdlN2Q2NTggMTAwNjQ0Ci0tLSBhL2RvYy9yZWYvc3JmaS1tb2R1 bGVzLnRleGkKKysrIGIvZG9jL3JlZi9zcmZpLW1vZHVsZXMudGV4aQpAQCAtMTIzNyw2ICsxMjM3 LDEyIEBAIFRoZSBmb2xsb3dpbmcgc3ludGF4IGNhbiBiZSBvYnRhaW5lZCB3aXRoCiAodXNlLW1v ZHVsZXMgKHNyZmkgc3JmaS0yKSkKIEBlbmQgbGlzcAogCitvciBhbHRlcm5hdGl2ZWx5CisKK0Bs aXNwCisodXNlLW1vZHVsZXMgKGljZS05IGFuZC1sZXQtc3RhcikpCitAZW5kIGxpc3AKKwogQGRl ZmZuIHtsaWJyYXJ5IHN5bnRheH0gYW5kLWxldCogKGNsYXVzZSBAZG90c3t9KSBib2R5IEBkb3Rz e30KIEEgY29tYmluYXRpb24gb2YgQGNvZGV7YW5kfSBhbmQgQGNvZGV7bGV0Kn0uCiAKLS0gCjEu Ny42Cgo= --e89a8fb1f8d6dbf80e04c48513bf Content-Type: application/octet-stream; name="0002-Import-documentation-from-Guile-1.4.patch" Content-Disposition: attachment; filename="0002-Import-documentation-from-Guile-1.4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4htozcd1 RnJvbSAzMjE1YTc4NWMxYjgyNWI4ZTA5NjRjZGJiODNkMGU0OGYyYTY1N2E3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bm9haC5iLmxhdmluZUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgSnVsIDIwMTIgMjA6NDI6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDIv NF0gSW1wb3J0IGRvY3VtZW50YXRpb24gZnJvbSBHdWlsZSAxLjQKClRoYW5rcyB0byBUaGllbi1U aGkgTmd1eWVuIGZvciBjb250cmlidXRpbmcgaXQuCgogKiBkb2MvcmVmL01ha2VmaWxlLmFtOiB1 cGRhdGUgTWFrZWZpbGUKICogZG9jL3JlZi9ndWlsZS50ZXhpOiBhZGQgc2VjdGlvbnMgdG8gbWFu dWFsCiAqIGRvYy9yZWYvY2FsbGluZy50ZXhpOgogKiBkb2MvcmVmL2NvbW1vbi1saXN0LnRleGk6 CiAqIGRvYy9yZWYvZ2FwLWJ1ZmZlci50ZXhpOgogKiBkb2MvcmVmL2hjb25zLnRleGk6CiAqIGRv Yy9yZWYvbGluZWlvLnRleGk6CiAqIGRvYy9yZWYvbHMudGV4aToKICogZG9jL3JlZi9tYXBwaW5n LnRleGk6CiAqIGRvYy9yZWYvcG9lLnRleGk6CiAqIGRvYy9yZWYvcG9wZW4udGV4aToKICogZG9j L3JlZi9ydW5xLnRleGk6CiAqIGRvYy9yZWYvc2Vzc2lvbi50ZXhpOgogKiBkb2MvcmVmL3N0YWNr LWNhdGNoLnRleGk6CiAqIGRvYy9yZWYvdGhyZWFkcy50ZXhpOiBhZGQgZmlsZXMKLS0tCiBkb2Mv cmVmL01ha2VmaWxlLmFtICAgICAgfCAgIDEzICsrCiBkb2MvcmVmL2NhbGxpbmcudGV4aSAgICAg fCAgMjEwICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9yZWYvY29tbW9uLWxpc3QudGV4 aSB8ICAxNjggKysrKysrKysrKysrKysrKysrKysKIGRvYy9yZWYvZ2FwLWJ1ZmZlci50ZXhpICB8 ICAzODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZG9j L3JlZi9ndWlsZS50ZXhpICAgICAgIHwgICAyNyArKysrCiBkb2MvcmVmL2hjb25zLnRleGkgICAg ICAgfCAgIDk1ICsrKysrKysrKysrCiBkb2MvcmVmL2xpbmVpby50ZXhpICAgICAgfCAgIDY2ICsr KysrKysrCiBkb2MvcmVmL2xzLnRleGkgICAgICAgICAgfCAgIDc1ICsrKysrKysrKwogZG9jL3Jl Zi9tYXBwaW5nLnRleGkgICAgIHwgICA4MCArKysrKysrKysrCiBkb2MvcmVmL3BvZS50ZXhpICAg ICAgICAgfCAgIDUzICsrKysrKysKIGRvYy9yZWYvcG9wZW4udGV4aSAgICAgICB8ICAgNTQgKysr KysrKwogZG9jL3JlZi9ydW5xLnRleGkgICAgICAgIHwgIDEzNyArKysrKysrKysrKysrKysrCiBk b2MvcmVmL3Nlc3Npb24udGV4aSAgICAgfCAgMTEzICsrKysrKysrKysrKysrCiBkb2MvcmVmL3N0 YWNrLWNhdGNoLnRleGkgfCAgMTM1ICsrKysrKysrKysrKysrKysKIGRvYy9yZWYvdGhyZWFkcy50 ZXhpICAgICB8ICAgNzEgKysrKysrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxNjg0IGluc2VydGlv bnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3JlZi9jYWxsaW5n LnRleGkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvcmVmL2NvbW1vbi1saXN0LnRleGkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkb2MvcmVmL2dhcC1idWZmZXIudGV4aQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRvYy9yZWYvaGNvbnMudGV4aQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWYvbGluZWlvLnRl eGkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvcmVmL2xzLnRleGkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkb2MvcmVmL21hcHBpbmcudGV4aQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWYvcG9lLnRl eGkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvcmVmL3BvcGVuLnRleGkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkb2MvcmVmL3J1bnEudGV4aQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWYvc2Vzc2lv bi50ZXhpCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3JlZi9zdGFjay1jYXRjaC50ZXhpCiBjcmVh dGUgbW9kZSAxMDA2NDQgZG9jL3JlZi90aHJlYWRzLnRleGkKCmRpZmYgLS1naXQgYS9kb2MvcmVm L01ha2VmaWxlLmFtIGIvZG9jL3JlZi9NYWtlZmlsZS5hbQppbmRleCBhYmU5Y2I5Li5mODZhODMx IDEwMDY0NAotLS0gYS9kb2MvcmVmL01ha2VmaWxlLmFtCisrKyBiL2RvYy9yZWYvTWFrZWZpbGUu YW0KQEAgLTYxLDYgKzYxLDE5IEBAIGd1aWxlX1RFWElORk9TID0gcHJlZmFjZS50ZXhpCQkJXAog CQkgcG9zaXgudGV4aQkJCVwKIAkJIHdlYi50ZXhpCQkJXAogCQkgZXhwZWN0LnRleGkJCQlcCisJ CSBjYWxsaW5nLnRleGkJCQlcCisJCSBjb21tb24tbGlzdC50ZXhpCQlcCisJCSBnYXAtYnVmZmVy LnRleGkJCVwKKwkJIGhjb25zLnRleGkJCQlcCisJCSBsaW5laW8udGV4aQkJCVwKKwkJIGxzLnRl eGkJCQlcCisJCSBtYXBwaW5nLnRleGkJCQlcCisJCSBwb2UudGV4aQkJCVwKKwkJIHBvcGVuLnRl eGkJCQlcCisJCSBydW5xLnRleGkJCQlcCisJCSBzZXNzaW9uLnRleGkJCQlcCisJCSBzdGFjay1j YXRjaC50ZXhpCQlcCisJCSB0aHJlYWRzLnRleGkJCQlcCiAJCSBzY3NoLnRleGkJCQlcCiAJCSBz eG1sLW1hdGNoLnRleGkJCVwKIAkJIHNjaGVtZS1zY3JpcHRzLnRleGkJCVwKZGlmZiAtLWdpdCBh L2RvYy9yZWYvY2FsbGluZy50ZXhpIGIvZG9jL3JlZi9jYWxsaW5nLnRleGkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcyZjc0NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9y ZWYvY2FsbGluZy50ZXhpCkBAIC0wLDAgKzEsMjEwIEBACitAYyBjYWxsaW5nLnRleGkKKworQGMg Q29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQGMKK0Bj IFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkg dGhpcyBkb2N1bWVudAorQGMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCitAYyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworQGMgSW52YXJp YW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292ZXIgVGV4 dHMuICBBCitAYyBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9u IGVudGl0bGVkIGBgR05VIEZyZWUKK0BjIERvY3VtZW50YXRpb24gTGljZW5zZS4nJworCitAbm9k ZSBDb252ZW50aW9uYWwgQ2FsbGluZworQHNlY3Rpb24gQ29udmVudGlvbmFsIENhbGxpbmcKKwor VG8gbWFrZSB1c2Ugb2YgaWRpb21hdGljIGNhbGxpbmctY29udmVudGlvbiBtYWNyb3MsIGV2YWx1 YXRlIHRoZSBmb3JtOgorCitAc21hbGxsaXNwCisodXNlLW1vZHVsZXMgKGljZS05IGNhbGxpbmcp KQorQGVuZCBzbWFsbGxpc3AKKworQGMgQHR3ZXJwbWFjZG9jIChzYXZlLWJpbmRpbmdzLWV4Y3Vy c2lvbikKK0BjIC4uLy4uL2ljZS05L2NhbGxpbmcuZG9jCitAZGVmZm4ge1NjaGVtZSBNYWNyb30g c2F2ZS1iaW5kaW5ncy1leGN1cnNpb24gdmFycyBbYm9keS4uLl0KK0V4cGFuZCB0byBhIGZvcm0g dGhhdCBzYXZlcyB0aGUgdmFsdWVzIGZvciBlYWNoIGJpbmRpbmcgbmFtZWQgaW4KK0B2YXJ7dmFy c30sIGEgbGlzdCBvZiB1bmV2YWx1YXRlZCBzeW1ib2xzIG5hbWluZyBiaW5kaW5ncyBpbiB0aGUK K0Bjb2Rle3NhdmUtYmluZGluZ3MtZXhjdXJzaW9ufSBjYWxsZXIsIGV2YWx1YXRlcyB0aGUgQHZh cntib2R5fSBmb3JtcywKK3RoZW4gcmVzdG9yZXMgdGhlIHZhbHVlcy4gIFRoZXNlIG9wZXJhdGlv bnMgZm9ybSB0aGUgdGhyZWUgYnJhbmNoZXMgb2YgYQorQGNvZGV7ZHluYW1pYy13aW5kfS4gIEhl cmUgaXMgYW4gZXhhbXBsZToKKworQGV4YW1wbGUKKyhkZWZpbmUgYSA0MikKKyhkZWZpbmUgYyA5 OSkKKyhkZWZpbmUgKGNoayEpICh3cml0ZS1saW5lIChsaXN0ICM6YSBhICM6YyBjKSkpCisKKyhz YXZlLWJpbmRpbmdzLWV4Y3Vyc2lvbiAoYSBjKQorICAoY2hrISkKKyAgKHNldCEgYSAwKQorICAo c2V0ISBjIC0xKQorICAoY2hrISkpCitAZW5kIGV4YW1wbGUKK0BlbmQgZGVmZm4KK0BjIEB0d2Vy cG1hY2RvYyAod2l0aC1leGN1cnNpb24tZnVuY3Rpb24pCitAYyAuLi8uLi9pY2UtOS9jYWxsaW5n LmRvYworQGRlZmZuIHtTY2hlbWUgTWFjcm99IHdpdGgtZXhjdXJzaW9uLWZ1bmN0aW9uIHZhcnMg Y29sbGVjdAorRXhwYW5kIHRvIGFuIGFwcGxpY2F0aW9uIG9mIEB2YXJ7Y29sbGVjdH0gdG8gYW4g ZXhjdXJzaW9uIHByb2MgQHZhcntleH0uCitAdmFye2V4fSB0YWtlcyBvbmUgYXJndW1lbnQsIGEg dGh1bmssIHdoaWNoIGZvcm1zIHRoZSBtaWRkbGUgYnJhbmNoIG9mIGEKK0Bjb2Rle2R5bmFtaWMt d2luZH0uICBJbiB0aGUgZmlyc3QgYnJhbmNoLCBAdmFye2V4fSBzYXZlcyB0aGUgdmFsdWVzIG9m CitAdmFye3ZhcnN9LCBhIGxpc3Qgb2YgdW5ldmFsdWF0ZWQgc3ltYm9scyBuYW1pbmcgYmluZGlu Z3MgaW4gdGhlCitAY29kZXt3aXRoLWV4Y3Vyc2lvbi1mdW5jdGlvbn0gY2FsbGVyLiAgSW4gdGhl IHRoaXJkIGJyYW5jaCwgQHZhcntleH0KK3Jlc3RvcmVzIHRoZXNlIHZhbHVlcy4gIEhlcmUgaXMg YW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byB1c2UgdGhpcworbWFjcm86CisKK0BleGFtcGxl Cisod2l0aC1leGN1cnNpb24tZnVuY3Rpb24KKyAgKGEgYykgKGxhbWJkYSAoZXgpCisgICAgICAg ICAgKGV4IChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAoY2hrISkKKyAgICAgICAgICAgICAg ICAoc2V0ISBhIDApCisgICAgICAgICAgICAgICAgKHNldCEgYyAtMSkKKyAgICAgICAgICAgICAg ICAoY2hrISkpKSkpCitAZW5kIGV4YW1wbGUKKworSW4gdGhpcyBleGFtcGxlLCBAdmFye2NvbGxl Y3R9IGlzIGFuIGFub255bW91cyBwcm9jZWR1cmUsIGFuZCB0aGUKK2V4Y3Vyc2lvbiBwcm9jIGlz IG5hbWVkIEBjb2Rle2V4fS4gIE5vdGUgdGhhdCB0aGlzIGlzIGZ1bmN0aW9uYWxseQorZXF1aXZh bGVudCB0byB0aGUgb25lIGZvciBAY29kZXtzYXZlLWJpbmRpbmdzLWV4Y3Vyc2lvbn0gKHdpdGgg c2V0dXAKK2RlZmluaXRpb25zIGVsaWRlZCkuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBtYWNkb2Mg KHdpdGgtZ2V0dGVyLWFuZC1zZXR0ZXIpCitAYyAuLi8uLi9pY2UtOS9jYWxsaW5nLmRvYworQGRl ZmZuIHtTY2hlbWUgTWFjcm99IHdpdGgtZ2V0dGVyLWFuZC1zZXR0ZXIgdmFycyBjb2xsZWN0CitF eHBhbmQgdG8gYW4gYXBwbGljYXRpb24gb2YgQHZhcntjb2xsZWN0fSB0byBAdmFye2dldHRlcn0g YW5kIEB2YXJ7c2V0dGVyfQorcHJvY3MgZm9yIEB2YXJ7dmFyc30sIGFuIHVuZXZhbHVhdGVkIGxp c3Qgb2Ygc3ltYm9scyBuYW1pbmcgYmluZGluZ3MgaW4KK3RoZSBjYWxsZXIgb2YgQGNvZGV7d2l0 aC1nZXR0ZXItYW5kLXNldHRlcn0uICBUaGUgY2FsbCBsb29rcyBsaWtlOgorCitAZXhhbXBsZQor KGNvbGxlY3QgZ2V0dGVyIHNldHRlcikKK0BlbmQgZXhhbXBsZQorCitAdmFye2dldHRlcn0gYW5k IEB2YXJ7c2V0dGVyfSBhcmUgcHJvY2VkdXJlcyB1c2VkIHRvIGFjY2VzcyBvciBtb2RpZnkKK0B2 YXJ7dmFyc30uICBAdmFye3NldHRlcn0sIGNhbGxlZCB3aXRoIGtleXdvcmRzIGFyZ3VtZW50cywg bW9kaWZpZXMgdGhlCituYW1lZCB2YWx1ZXMuICBGb3IgZXhhbXBsZSwgaWYgQGNvZGV7Zm9vfSBh bmQgQGNvZGV7YmFyfSBhcmUgYW1vbmcKK0B2YXJ7dmFyc30sIHRoZW46CisKK0BleGFtcGxlCiso c2V0dGVyICM6Zm9vIDEgIzpiYXIgMikKKz09PQorKGJlZ2luIChzZXQhIGZvbyAxKSAoc2V0ISBi YXIgMikpCitAZW5kIGV4YW1wbGUKKworQHZhcntnZXR0ZXJ9LCBjYWxsZWQgd2l0aCBqdXN0IGtl eXdvcmRzLCByZXR1cm5zIGEgbGlzdCBvZiB0aGUKK2NvcnJlc3BvbmRpbmcgdmFsdWVzLiAgVG8g Y29udGludWUgdGhlIGFib3ZlIGV4YW1wbGU6CisKK0BleGFtcGxlCisoZ2V0dGVyICM6Zm9vICM6 YmFyKQorQHJlc3VsdHt9ICgxIDIpCitAZW5kIGV4YW1wbGUKKworQHZhcntnZXR0ZXJ9LCBjYWxs ZWQgd2l0aCBubyBhcmd1bWVudHMsIHJldHVybnMgYSBsaXN0IG9mIGFsbCBhY2NlcHRlZAora2V5 d29yZHMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy4gIFRvIGNvbnRpbnVlIHRoZSBhYm92 ZSBleGFtcGxlLAord2l0aCB0aGUgYWRkaXRpb25hbCBzdGlwdWxhdGlvbiB0aGF0IEBjb2Rle2Zv b30gYW5kIEBjb2Rle2Jhcn0gYXJlCit0aGUgQGVtcGh7b25seX0gbmFtZXMgaW4gQHZhcnt2YXJz fToKKworQGV4YW1wbGUKKyhnZXR0ZXIpCitAcmVzdWx0e30gKCM6Zm9vIDEgIzpiYXIgMikKK0Bl bmQgZXhhbXBsZQorCitUaGVzZSBjYWxsaW5nIHNlcXVlbmNlcyBzdXBwb3J0cyB0d28gaGFuZHkg aWRpb21zOgorCitAZXhhbXBsZQorKGFwcGx5IHNldHRlciAoZ2V0dGVyKSkgICAgICAgICAgICAg IDs7IHNhdmUgYW5kIHJlc3RvcmUKKworKGFwcGx5LXRvLWFyZ3MgKGdldHRlciAjOmZvbyAjOmJh cikgIDs7IGZldGNoIGFuZCBiaW5kCisgIChsYW1iZGEgKGZvbyBiYXIpIC4uLi4pKQorQGVuZCBl eGFtcGxlCitAZW5kIGRlZmZuCitAYyBAdHdlcnBtYWNkb2MgKHdpdGgtZ2V0dGVyKQorQGMgLi4v Li4vaWNlLTkvY2FsbGluZy5kb2MKK0BkZWZmbiB7U2NoZW1lIE1hY3JvfSB3aXRoLWdldHRlciB2 YXJzIGNvbGxlY3QKK0xpa2UgQGNvZGV7d2l0aC1nZXR0ZXItYW5kLXNldHRlcn0gYnV0IGNvbGxl Y3Qgb25seSBAdmFye2dldHRlcn0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBtYWNkb2MgKHdpdGgt ZGVsZWdhdGluZy1nZXR0ZXItYW5kLXNldHRlcikKK0BjIC4uLy4uL2ljZS05L2NhbGxpbmcuZG9j CitAZGVmZm4ge1NjaGVtZSBNYWNyb30gd2l0aC1kZWxlZ2F0aW5nLWdldHRlci1hbmQtc2V0dGVy IHZhcnMgc3ViLWcgc3ViLXMgY29sbGVjdAorRXhwYW5kIHRvIGFuIGFwcGxpY2F0aW9uIG9mIEB2 YXJ7Y29sbGVjdH0gdG8gQHZhcntnZXR0ZXJ9IGFuZCBAdmFye3NldHRlcn0KK3Byb2NzIGZvciBA dmFye3ZhcnN9LCBhbiB1bmV2YWx1YXRlZCBsaXN0IG9mIHN5bWJvbHMgbmFtaW5nIGJpbmRpbmdz IGluCit0aGUgY2FsbGVyIG9mIEBjb2Rle3dpdGgtZGVsZWdhdGluZy1nZXR0ZXItYW5kLXNldHRl cn0uICBUaGUgY2FsbCBsb29rcworbGlrZToKKworQGV4YW1wbGUKKyhjb2xsZWN0IGdldHRlciBz ZXR0ZXIpCitAZW5kIGV4YW1wbGUKKworSWYgZ2l2ZW4gYSBuYW1lIG5vdCBpbiBAdmFye3ZhcnN9 LCBAdmFye2dldHRlcn0gYW5kIEB2YXJ7c2V0dGVyfSBjYWxsCitAdmFye3N1Yi1nfSBhbmQgQHZh cntzdWItc30sIHJlc3BlY3RpdmVseS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycG1hY2RvYyAod2l0 aC1leGN1cnNpb24tZ2V0dGVyLWFuZC1zZXR0ZXIpCitAYyAuLi8uLi9pY2UtOS9jYWxsaW5nLmRv YworQGRlZmZuIHtTY2hlbWUgTWFjcm99IHdpdGgtZXhjdXJzaW9uLWdldHRlci1hbmQtc2V0dGVy IHZhcnMgY29sbGVjdAorRXhwYW5kIHRvIGFuIGFwcGxpY2F0aW9uIG9mIEB2YXJ7Y29sbGVjdH0g dG8gZXhjdXJzaW9uIHByb2MgQHZhcntleH0sCitAdmFye2dldHRlcn0gYW5kIEB2YXJ7c2V0dGVy fSBwcm9jcyBmb3IgQHZhcnt2YXJzfSwgYW4gdW5ldmFsdWF0ZWQgbGlzdCBvZgorc3ltYm9scyBu YW1pbmcgYmluZGluZ3MgaW4gdGhlIGNhbGxlciBvZgorQGNvZGV7d2l0aC1leGN1cnNpb24tZ2V0 dGVyLWFuZC1zZXR0ZXJ9LiAgVGhlIGNhbGwgbG9va3MgbGlrZToKKworQGV4YW1wbGUKKyhjb2xs ZWN0IGV4Y3Vyc2lvbiBnZXR0ZXIgc2V0dGVyKQorQGVuZCBleGFtcGxlCisKK1NlZSBAY29kZXt3 aXRoLWV4Y3Vyc2lvbi1mdW5jdGlvbn0gYW5kIEBjb2Rle3dpdGgtZ2V0dGVyLWFuZC1zZXR0ZXJ9 LgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwbWFjZG9jICh3aXRoLWNvbmZpZ3VyYXRpb24tZ2V0dGVy LWFuZC1zZXR0ZXIpCitAYyAuLi8uLi9pY2UtOS9jYWxsaW5nLmRvYworQGRlZmZuIHtTY2hlbWUg TWFjcm99IHdpdGgtY29uZmlndXJhdGlvbi1nZXR0ZXItYW5kLXNldHRlciB2YXJzLWV0YyBjb2xs ZWN0CitFeHBhbmQgdG8gYW4gYXBwbGljYXRpb24gb2YgQHZhcntjb2xsZWN0fSB0byBAdmFye2dl dHRlcn0gYW5kIEB2YXJ7c2V0dGVyfQorcHJvY3MgZm9yIEB2YXJ7dmFycy1ldGN9LCBhIGxpc3Qg b2YgYmluZGluZyBzcGVjaWZpZXJzIGZvciBiaW5kaW5ncwordmlzaWJsZSBpbiB0aGUgY2FsbGVy IG9mIEBjb2Rle3dpdGgtY29uZmlndXJhdGlvbi1nZXR0ZXItYW5kLXNldHRlcn0uICBUaGUKK2Nh bGwgbG9va3MgbGlrZToKKworQGV4YW1wbGUKKyhjb2xsZWN0IGdldHRlciBzZXR0ZXIpCitAZW5k IGV4YW1wbGUKKworQHZhcntnZXR0ZXJ9IGFuZCBAdmFye3NldHRlcn0gY2FuIHRyaWdnZXIgYXJi aXRyYXJ5IGNvbXB1dGF0aW9uLCBhY2NvcmRpbmcKK3RvIHRoZSBiaW5kaW5nIHNwZWNpZmllciwg d2hpY2ggaGFzIHRoZSBmb3JtOgorCitAZXhhbXBsZQorKG5hbWUgW2dldHRlci1ob29rIFtzZXR0 ZXItaG9va11dKQorQGVuZCBleGFtcGxlCisKK0JvdGggaG9vayBlbGVtZW50cyBhcmUgZXZhbHVh dGVkOyBAdmFye25hbWV9IGlzIG5vdC4KK0VpdGhlciBob29rIG1heSBiZSAjZiBvciBhIHByb2Nl ZHVyZS4KKworQHZhcntnZXR0ZXItaG9va30gaXMgYSB0aHVuayB0aGF0IHJldHVybnMgYSB2YWx1 ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKK25hbWUuICBJZiBvbWl0dGVkIChvciAjZiBpcyBwYXNz ZWQpLCB1c2UgdGhlIG5vcm1hbCB2YWx1ZSBvZiBAY29kZXtuYW1lfS4KKworQHZhcntzZXR0ZXIt aG9va30gaXMgYSBwcm9jZWR1cmUgb2Ygb25lIGFyZ3VtZW50IHRoYXQgYWNjZXB0cyBhIG5ldyB2 YWx1ZQorZm9yIEB2YXJ7bmFtZX0uICBJZiBvbWl0dGVkLCBAdmFye25hbWV9IGlzIHNpbXBseSB1 cGRhdGVkIHdpdGggQGNvZGV7c2V0IX0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBtYWNkb2MgKHdp dGgtZGVsZWdhdGluZy1jb25maWd1cmF0aW9uLWdldHRlci1hbmQtc2V0dGVyKQorQGMgLi4vLi4v aWNlLTkvY2FsbGluZy5kb2MKK0BkZWZmbiB7U2NoZW1lIE1hY3JvfSB3aXRoLWRlbGVnYXRpbmct Y29uZmlndXJhdGlvbi1nZXR0ZXItYW5kLXNldHRlciB2YXJzLWV0YyBzdWItZyBzdWItcyBjb2xs ZWN0CitMaWtlIEBjb2Rle3dpdGgtZGVsZWdhdGluZy1nZXR0ZXItYW5kLXNldHRlcn0gYnV0IHVz aW5nIEB2YXJ7dmFycy1ldGN9CithcyB3aXRoIEBjb2Rle3dpdGgtY29uZmlndXJhdGlvbi1nZXR0 ZXItYW5kLXNldHRlcn0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBtYWNkb2MgKGxldC13aXRoLWNv bmZpZ3VyYXRpb24tZ2V0dGVyLWFuZC1zZXR0ZXIpCitAYyAuLi8uLi9pY2UtOS9jYWxsaW5nLmRv YworQGRlZmZuIHtTY2hlbWUgTWFjcm99IGxldC13aXRoLWNvbmZpZ3VyYXRpb24tZ2V0dGVyLWFu ZC1zZXR0ZXIgdmFycy1ldGMgY29sbGVjdAorTGlrZSBAY29kZXt3aXRoLWNvbmZpZ3VyYXRpb24t Z2V0dGVyLWFuZC1zZXR0ZXJ9CitleGNlcHQgdGhhdCBlYWNoIGVsZW1lbnQgb2YgQHZhcnt2YXJz LWV0Y30gaXM6CisKK0BleGFtcGxlCisobmFtZSBpbml0aWFsLXZhbHVlIGdldHRlci1ob29rIHNl dHRlci1ob29rKQorQGVuZCBleGFtcGxlCisKK0Fsc28sIHRoaXMgbWFjcm8gaW50cm9kdWNlcyBh biBhZGRpdGlvbmFsIGxleGljYWwgYmluZGluZyBmb3IgZWFjaAorb2YgdGhlIG5hbWVzIGluIEBj b2Rle3ZhcnMtZXRjfS4gIEl0IGlzIHNob3J0LWhhbmQgZm9yOgorCitAZXhhbXBsZQorKGxldCAo KDx2YXIxPiBpbml0aWFsLXZhbHVlLTEpCisgICAgICAoPHZhcjI+IGluaXRpYWwtdmFsdWUtMikK KyAgICAgICAuLi4pCisgKHdpdGgtY29uZmlndXJhdGlvbi1nZXR0ZXItYW5kLXNldHRlcgorICAg ICgoPHZhcjE+IHYxLWdldCB2MS1zZXQpCisgICAgICg8dmFyMj4gdjItZ2V0IHYyLXNldCkKKyAg ICAgLi4uKQorICAgY29sbGVjdCkpCitAZW5kIGV4YW1wbGUKK0BlbmQgZGVmZm4KKworQGMgY2Fs bGluZy50ZXhpIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvZG9jL3JlZi9jb21tb24tbGlzdC50ZXhp IGIvZG9jL3JlZi9jb21tb24tbGlzdC50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjI3NDFjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVmL2NvbW1vbi1saXN0LnRl eGkKQEAgLTAsMCArMSwxNjggQEAKK0BjIGNvbW1vbi1saXN0LnRleGkKKworQGMgQ29weXJpZ2h0 IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQGMKK0BjIFBlcm1pc3Np b24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1 bWVudAorQGMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UsIFZlcnNpb24gMS4zIG9yCitAYyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworQGMgSW52YXJpYW50IFNlY3Rp b25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292ZXIgVGV4dHMuICBBCitA YyBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVk IGBgR05VIEZyZWUKK0BjIERvY3VtZW50YXRpb24gTGljZW5zZS4nJworCitAbm9kZSBDb21tb24g TGlzdCBPcGVyYXRpb25zCitAYyBAY2hhcHRlciBDb21tb24gTGlzdCBPcGVyYXRpb25zCitAc2Vj dGlvbiBDb21tb24gTGlzdCBPcGVyYXRpb25zCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGlt cGxlbWVudGF0aW9uIG9mIENvbW1vbiBMaXNwIGxpc3QgZnVuY3Rpb25zCitmb3IgR3VpbGUuICBU byBsb2FkIGl0OgorCitAZXhhbXBsZQorKHVzZS1tb2R1bGVzIChpY2UtOSBjb21tb24tbGlzdCkp CitAZW5kIGV4YW1wbGUKKworQHhyZWZ7U1JGSS0xfSwgZm9yIGFub3RoZXIgbGlzdCBsaWJyYXJ5 LgorCitAYyBAdHdlcnBkb2MgKGFkam9pbikKK0BjIC4uLy4uL2ljZS05L2NvbW1vbi1saXN0LmRv YworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBhZGpvaW4gZSBsCitSZXR1cm4gbGlzdCBMLCBw b3NzaWJseSB3aXRoIGVsZW1lbnQgRSBhZGRlZCBpZiBpdCBpcyBub3QgYWxyZWFkeSBpbiBMLgor QGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jICh1bmlvbikKK0BjIC4uLy4uL2ljZS05L2NvbW1vbi1s aXN0LmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB1bmlvbiBsMSBsMgorUmV0dXJuIGEg bmV3IGxpc3QgdGhhdCBpcyB0aGUgdW5pb24gb2YgTDEgYW5kIEwyLgorRWxlbWVudHMgdGhhdCBv Y2N1ciBpbiBib3RoIGxpc3RzIG9jY3VyIG9ubHkgb25jZSBpbgordGhlIHJlc3VsdCBsaXN0Lgor QGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChpbnRlcnNlY3Rpb24pCitAYyAuLi8uLi9pY2UtOS9j b21tb24tbGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gaW50ZXJzZWN0aW9uIGwx IGwyCitSZXR1cm4gYSBuZXcgbGlzdCB0aGF0IGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YgTDEgYW5k IEwyLgorT25seSBlbGVtZW50cyB0aGF0IG9jY3VyIGluIGJvdGggbGlzdHMgb2NjdXIgaW4gdGhl IHJlc3VsdCBsaXN0LgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChzZXQtZGlmZmVyZW5jZSkK K0BjIC4uLy4uL2ljZS05L2NvbW1vbi1saXN0LmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJl fSBzZXQtZGlmZmVyZW5jZSBsMSBsMgorUmV0dXJuIGVsZW1lbnRzIGZyb20gbGlzdCBMMSB0aGF0 IGFyZSBub3QgaW4gbGlzdCBMMi4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAocmVkdWNlLWlu aXQpCitAYyAuLi8uLi9pY2UtOS9jb21tb24tbGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2Nl ZHVyZX0gcmVkdWNlLWluaXQgcCBpbml0IGwKK1NhbWUgYXMgYHJlZHVjZScgZXhjZXB0IGl0IGlt cGxpY2l0bHkgaW5zZXJ0cyBJTklUIGF0IHRoZSBzdGFydCBvZiBMLgorQGVuZCBkZWZmbgorQGMg QHR3ZXJwZG9jIChyZWR1Y2UpCitAYyAuLi8uLi9zcmZpL3NyZmktMS5kb2MKK0BkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gcmVkdWNlIGYgcmlkZW50aXR5IGxzdAorQGNvZGV7cmVkdWNlfSBpcyBh IHZhcmlhbnQgb2YgQGNvZGV7Zm9sZH0uICBJZiBAdmFye2xzdH0gaXMKK0Bjb2RleygpfSwgQHZh cntyaWRlbnRpdHl9IGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBAY29kZXsoZm9sZCAoY2FyCitA dmFye2xzdH0pIChjZHIgQHZhcntsc3R9KSl9IGlzIHJldHVybmVkLgorQGVuZCBkZWZmbgorQGMg QHR3ZXJwZG9jIChzb21lKQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3QuZG9jCitAZGVmZm4g e1NjaGVtZSBQcm9jZWR1cmV9IHNvbWUgcHJlZCBsIFtyZXN0Li4uXQorUFJFRCBpcyBhIGJvb2xl YW4gZnVuY3Rpb24gb2YgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlIGxpc3QKK2FyZ3Vt ZW50cyB0byBgc29tZScsIGkuZS4sIEwgcGx1cyBhbnkgb3B0aW9uYWwgYXJndW1lbnRzLiAgUFJF RCBpcworYXBwbGllZCB0byBzdWNjZXNzaXZlIGVsZW1lbnRzIG9mIHRoZSBsaXN0IGFyZ3VtZW50 cyBpbiBvcmRlci4gIEFzIHNvb24KK2FzIG9uZSBvZiB0aGVzZSBhcHBsaWNhdGlvbnMgcmV0dXJu cyBhIHRydWUgdmFsdWUsIHJldHVybiB0aGF0IHZhbHVlLgorSWYgbm8gYXBwbGljYXRpb24gcmV0 dXJucyBhIHRydWUgdmFsdWUsIHJldHVybiAjZi4KK0FsbCB0aGUgbGlzdHMgc2hvdWxkIGhhdmUg dGhlIHNhbWUgbGVuZ3RoLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChldmVyeSkKK0BjIC4u Ly4uL3NyZmkvc3JmaS0xLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBldmVyeSBwcmVk IGxzIFtsaXN0cy4uLl0KK0FwcGx5IEB2YXJ7cHJlZH0gYWNyb3NzIHRoZSBsaXN0cyBhbmQgcmV0 dXJuIGEgdHJ1ZSB2YWx1ZSBpZiB0aGUKK3ByZWRpY2F0ZSByZXR1cm5zIHRydWUgZm9yIGV2ZXJ5 IG9mIHRoZSBsaXN0IGVsZW1lbnRzKHMpOyByZXR1cm4KK0Bjb2RleyNmfSBvdGhlcndpc2UuICBU aGUgdHJ1ZSB2YWx1ZSByZXR1cm5lZCBpcyBhbHdheXMgdGhlIHJlc3VsdCBvZgordGhlIGZpbmFs IHN1Y2Nlc3NmdWwgYXBwbGljYXRpb24gb2YgQHZhcntwcmVkfS4KK0BlbmQgZGVmZm4KK0BjIEB0 d2VycGRvYyAobm90YW55KQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3QuZG9jCitAZGVmZm4g e1NjaGVtZSBQcm9jZWR1cmV9IG5vdGFueSBwcmVkIFtscy4uLl0KK1JldHVybiAjdCBpZmYgZXZl cnkgYXBwbGljYXRpb24gb2YgUFJFRCB0byBMLCBldGMuLCByZXR1cm5zICNmLgorQW5hbG9nb3Vz IHRvIHNvbWUgYnV0IHJldHVybnMgI3QgaWYgbm8gYXBwbGljYXRpb24gb2YgUFJFRCByZXR1cm5z IGEKK3RydWUgdmFsdWUgb3IgI2YgYXMgc29vbiBhcyBhbnkgb25lIGRvZXMuCitAZW5kIGRlZmZu CitAYyBAdHdlcnBkb2MgKG5vdGV2ZXJ5KQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3QuZG9j CitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IG5vdGV2ZXJ5IHByZWQgW2xzLi4uXQorUmV0dXJu ICN0IGlmZiB0aGVyZSBpcyBhbiBhcHBsaWNhdGlvbiBvZiBQUkVEIHRvIEwsIGV0Yy4sIHRoYXQg cmV0dXJucyAjZi4KK0FuYWxvZ291cyB0byBzb21lIGJ1dCByZXR1cm5zICN0IGFzIHNvb24gYXMg YW4gYXBwbGljYXRpb24gb2YgUFJFRCByZXR1cm5zICNmLAorb3IgI2Ygb3RoZXJ3aXNlLgorQGVu ZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChjb3VudC1pZikKK0BjIC4uLy4uL2ljZS05L2NvbW1vbi1s aXN0LmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBjb3VudC1pZiBwcmVkIGwKK1JldHVy biB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIEwgZm9yIHdoaWNoIChQUkVEIGVsZW1lbnQpIHJl dHVybnMgdHJ1ZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZmluZC1pZikKK0BjIC4uLy4u L2ljZS05L2NvbW1vbi1saXN0LmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBmaW5kLWlm IHByZWQgbAorU2VhcmNoIGZvciB0aGUgZmlyc3QgZWxlbWVudCBpbiBMIGZvciB3aGljaCAoUFJF RCBlbGVtZW50KSByZXR1cm5zIHRydWUuCitJZiBmb3VuZCwgcmV0dXJuIHRoYXQgZWxlbWVudCwg b3RoZXJ3aXNlIHJldHVybiAjZi4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAobWVtYmVyLWlm KQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3QuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1 cmV9IG1lbWJlci1pZiBwcmVkIGwKK1JldHVybiB0aGUgZmlyc3Qgc3VibGlzdCBvZiBMIGZvciB3 aG9zZSBjYXIgUFJFRCBpcyB0cnVlLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChyZW1vdmUt aWYpCitAYyAuLi8uLi9pY2UtOS9jb21tb24tbGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2Nl ZHVyZX0gcmVtb3ZlLWlmIHByZWQgbAorUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIEwgd2hlcmUg KFBSRUQgZWxlbWVudCkgaXMgdHJ1ZS4KK1JldHVybiBldmVyeXRoaW5nIHRoYXQncyBsZWZ0Lgor QGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChyZW1vdmUtaWYtbm90KQorQGMgLi4vLi4vaWNlLTkv Y29tbW9uLWxpc3QuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHJlbW92ZS1pZi1ub3Qg cHJlZCBsCitSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gTCB3aGVyZSAoUFJFRCBlbGVtZW50KSBp cyAjZi4KK1JldHVybiBldmVyeXRoaW5nIHRoYXQncyBsZWZ0LgorQGVuZCBkZWZmbgorQGMgQHR3 ZXJwZG9jIChkZWxldGUtaWYhKQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3QuZG9jCitAZGVm Zm4ge1NjaGVtZSBQcm9jZWR1cmV9IGRlbGV0ZS1pZiEgcHJlZCBsCitEZXN0cnVjdGl2ZSB2ZXJz aW9uIG9mIGByZW1vdmUtaWYnLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChkZWxldGUtaWYt bm90ISkKK0BjIC4uLy4uL2ljZS05L2NvbW1vbi1saXN0LmRvYworQGRlZmZuIHtTY2hlbWUgUHJv Y2VkdXJlfSBkZWxldGUtaWYtbm90ISBwcmVkIGwKK0Rlc3RydWN0aXZlIHZlcnNpb24gb2YgYHJl bW92ZS1pZi1ub3QnLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChidXRsYXN0KQorQGMgLi4v Li4vaWNlLTkvY29tbW9uLWxpc3QuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGJ1dGxh c3QgbHN0IG4KK1JldHVybiBhbGwgYnV0IHRoZSBsYXN0IE4gZWxlbWVudHMgb2YgTFNULgorQGVu ZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChhbmQ/KQorQGMgLi4vLi4vaWNlLTkvY29tbW9uLWxpc3Qu ZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGFuZD8gW2FyZ3MuLi5dCitSZXR1cm4gI3Qg aWZmIGFsbCBvZiBBUkdTIGFyZSB0cnVlLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChvcj8p CitAYyAuLi8uLi9pY2UtOS9jb21tb24tbGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVy ZX0gb3I/IFthcmdzLi4uXQorUmV0dXJuICN0IGlmZiBhbnkgb2YgQVJHUyBpcyB0cnVlLgorQGVu ZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChoYXMtZHVwbGljYXRlcz8pCitAYyAuLi8uLi9pY2UtOS9j b21tb24tbGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gaGFzLWR1cGxpY2F0ZXM/ IGxzdAorUmV0dXJuICN0IGlmZiAyIG1lbWJlcnMgb2YgTFNUIGFyZSBlcXVhbD8sIGVsc2UgI2Yu CitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKHBpY2spCitAYyAuLi8uLi9pY2UtOS9jb21tb24t bGlzdC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcGljayBwIGwKK0FwcGx5IFAgdG8g ZWFjaCBlbGVtZW50IG9mIEwsIHJldHVybmluZyBhIGxpc3Qgb2YgZWx0cworZm9yIHdoaWNoIFAg cmV0dXJucyBhIG5vbi0jZiB2YWx1ZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAocGljay1t YXBwaW5ncykKK0BjIC4uLy4uL2ljZS05L2NvbW1vbi1saXN0LmRvYworQGRlZmZuIHtTY2hlbWUg UHJvY2VkdXJlfSBwaWNrLW1hcHBpbmdzIHAgbAorQXBwbHkgUCB0byBlYWNoIGVsZW1lbnQgb2Yg TCwgcmV0dXJuaW5nIGEgbGlzdCBvZiB0aGUKK25vbi0jZiByZXR1cm4gdmFsdWVzIG9mIFAuCitA ZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKHVuaXEpCitAYyAuLi8uLi9pY2UtOS9jb21tb24tbGlz dC5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gdW5pcSBsCitSZXR1cm4gYSBsaXN0IGNv bnRhaW5pbmcgZWxlbWVudHMgb2YgTCwgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQuCitAZW5kIGRl ZmZuCisKK0BjIGNvbW1vbi1saXN0LnRleGkgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9kb2MvcmVm L2dhcC1idWZmZXIudGV4aSBiL2RvYy9yZWYvZ2FwLWJ1ZmZlci50ZXhpCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzU1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVm L2dhcC1idWZmZXIudGV4aQpAQCAtMCwwICsxLDM4NyBAQAorQGMgZ2FwLWJ1ZmZlci50ZXhpCisK K0BjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0Bj CitAYyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9k aWZ5IHRoaXMgZG9jdW1lbnQKK0BjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9j dW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMyBvcgorQGMgYW55IGxhdGVyIHZlcnNpb24g cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KK0BjIElu dmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVy IFRleHRzLiAgQQorQGMgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2Vj dGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlCitAYyBEb2N1bWVudGF0aW9uIExpY2Vuc2UuJycKKwor QG5vZGUgR2FwIEJ1ZmZlcgorQHNlY3Rpb24gQSBTdHJpbmcgU3VwcG9ydGluZyBFZmZpY2llbnQg SW5zZXJ0L0RlbGV0ZQorCitUbyBsb2FkIHN1cHBvcnQgZm9yIGVmZmljaWVudCBpbnNlcnQvZGVs ZXRlIG9wZXJhdGlvbnMgb24gc3RyaW5nczoKKworQGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkg Z2FwLWJ1ZmZlcikpCitAZW5kIGxpc3AKKworQGMgQHR3ZXJwY29tbWVudGFyeSAodmVyYmF0aW0g KGljZS05IGdhcC1idWZmZXIpKQorQHZlcmJhdGltCitBIGdhcCBidWZmZXIgaXMgYSBzdHJ1Y3R1 cmUgdGhhdCBtb2RlbHMgYSBzdHJpbmcgYnV0IGFsbG93cyByZWxhdGl2ZWx5CitlZmZpY2llbnQg aW5zZXJ0aW9uIG9mIHRleHQgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUuICBUaGUgaW5zZXJ0aW9u Citsb2NhdGlvbiBpcyBjYWxsZWQgYHBvaW50JyB3aXRoIG1pbmltdW0gdmFsdWUgMSwgYW5kIGEg bWF4aW11bSB2YWx1ZSB0aGUKK2xlbmd0aCBvZiB0aGUgc3RyaW5nICh3aGljaCBpcyBub3QgZml4 ZWQpLgorCitTcGVjaWZpY2FsbHksIHdlIGFsbG9jYXRlIGEgY29udGludW91cyBidWZmZXIgb2Yg Y2hhcmFjdGVycyB0aGF0IGlzCitjb21wb3NlZCBvZiB0aGUgQkVGT1JFLCB0aGUgR0FQIGFuZCB0 aGUgQUZURVIgKHJlYWRpbmcgTC0+UiksIGxpa2Ugc286CisKKyAgICAgICAgICAgICAgICAgICAg ICAgICArLS0tIFBPSU5UCisgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKwor ICAgfCAgICAgICBCRUZPUkUgICAgICAgfCAgICAgICAgR0FQICAgICAgICAgfCAgICAgICBBRlRF UiAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgPC0tLS0tIGJlZi1zeiAtLS0tLT58PC0tLS0t IGdhcC1zeiAtLS0tLT58PC0tLS0tIGFmdC1zeiAtLS0tLT4KKworICAgIDwtLS0tLS0tLS0tLS0t LS0tLS0tfCAgICAgICB1c3Itc3ogICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0+CisKKyAgICA8 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYWxsLXN6IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tPgorCitUaGlzIGRpYWdyYW0gYWxzbyBzaG93cyBob3cgdGhlIGRpZmZlcmVudCBzaXplcyBh cmUgY29tcHV0ZWQsIGFuZCB0aGUKK2xvY2F0aW9uIG9mIFBPSU5ULiAgTm90ZSB0aGF0IHRoZSB1 c2VyLXZpc2libGUgYnVmZmVyIHNpemUgYHVzci1zeicgZG9lcworTk9UIGluY2x1ZGUgdGhlIEdB UCwgd2hpbGUgdGhlIGFsbG9jYXRpb24gYGFsbC1zeicgRE9FUy4KKworVGhlIGNvbnNlcXVlbmNl IG9mIHRoaXMgYXJyYW5nZW1lbnQgaXMgdGhhdCAibW92aW5nIHBvaW50IiBpcyBzaW1wbHkgYQor bWF0dGVyIG9mIGtpY2tpbmcgY2hhcmFjdGVycyBhY3Jvc3MgdGhlIEdBUCwgd2hpbGUgaW5zZXJ0 aW9uIGNhbiBiZSB2aWV3ZWQKK2FzIGZpbGxpbmcgdXAgdGhlIGdhcCwgaW5jcmVhc2luZyBgYmVm LXN6JyBhbmQgZGVjcmVhc2luZyBgZ2FwLXN6Jy4gIFdoZW4KK2BnYXAtc3onIGZhbGxzIGJlbG93 IHNvbWUgdGhyZXNob2xkLCB3ZSByZWFsbG9jYXRlIHdpdGggYSBsYXJnZXIgYGFsbC1zeicuCisK K0luIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2UgYWN0dWFsbHkga2VlcCB0cmFjayBvZiB0aGUgQUZU RVIgc3RhcnQgb2Zmc2V0CitgYWZ0LW9mcycgc2luY2UgaXQgaXMgdXNlZCBtb3JlIG9mdGVuIHRo YW4gYGdhcC1zeicuICBJbiBmYWN0LCBtb3N0IG9mIHRoZQordmFyaWFibGVzIGluIHRoZSBkaWFn cmFtIGFyZSBmb3IgY29uY2VwdHVhbGl6YXRpb24gb25seS4KKworQSBnYXAgYnVmZmVyIHBvcnQg aXMgYSAic29mdCBwb3J0IiB0aGF0IHdyYXBzIGEgZ2FwIGJ1ZmZlci4KKworKFRoZSB0ZXJtIGFu ZCBjb25jZXB0IG9mICJnYXAgYnVmZmVyIiBhcmUgYm9ycm93ZWQgZnJvbSBFbWFjcy4gIFdlIHdp bGwKK2dsYWRseSByZXR1cm4gdGhlbSB3aGVuIGxpYmVtYWNzLnNvIGlzIGF2YWlsYWJsZS4gOy0p CisKK0EgZ2FwLWJ1ZmZlciBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJpbnRlZCByZXByZXNl bnRhdGlvbjoKKworIzxnYXAtYnVmZmVyIEdBUC1TSVpFL0FMTE9DLVNJWkU6UE9JTlQtTUlOOlBP SU5UOlBPSU5ULU1BWD4KKword2l0aCBhbGwgZmllbGRzIChHQVAtU0laRSwgQUxMT0MtU0laRSwg TUlOVC1NSU4sIFBPSU5ULCBhbmQgUE9JTlQtTUFYKQoraW50ZWdlcnMsIGFuZCBldmVyeXRoaW5n IGVsc2UgYXMgc2hvd24gaGVyZS4KK0BlbmQgdmVyYmF0aW0KKworQGMgQHR3ZXJwZG9jIChnYj8p CitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJl fSBnYj8gb2JqZWN0CitSZXR1cm4gI3QgaWZmIEB2YXJ7b2JqZWN0fSBpcyBhIGdhcCBidWZmZXIg b2JqZWN0LgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChtYWtlLWdhcC1idWZmZXIpCitAYyAu Li8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtYWtl LWdhcC1idWZmZXIgW2luaXRdCitSZXR1cm4gYSBuZXcgZ2FwIGJ1ZmZlci4gIE9wdGlvbmFsIGFy ZyBAdmFye2luaXR9IGlzIGVpdGhlciBhIHBvcnQKK3RvIHJlYWQgZnJvbTsgYSBzdHJpbmcsIHVz ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVmZmVyIGNvbnRlbnRzOworb3IgYW4gaW50ZWdlciBzcGVj aWZ5aW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiAoaW4gYnl0ZXMpIHJlcXVlc3RlZC4KK1BvaW50 IGlzIGxlZnQgYXQgdGhlIG1heGltdW0gcG9zaXRpb24uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBk b2MgKGdiLXRvZ2dsZS1yZWFkLW9ubHkpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYwor QGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBnYi10b2dnbGUtcmVhZC1vbmx5IGdiIFthcmddCitD aGFuZ2Ugd2hldGhlciBAdmFye2difSBpcyByZWFkLW9ubHkuCitXaXRoIGFyZywgc2V0IHJlYWQt b25seSBpZmYgYXJnIGlzIHBvc2l0aXZlLgorQGVuZCBkZWZmbgorCitJbXBsZW1lbnRhdGlvbiBu b3RlOiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBnYWlucyBmb3Igbm9uLW11bmdpbmcgb3BlcmF0 aW9ucworYXJlIHBvc3NpYmxlIHdoZW4gdGhlIGdhcC1idWZmZXIgaXMgaW4gcmVhZC1vbmx5IG1v ZGUuICBUaGlzIGlzIHByaW1hcmlseQorYmVjYXVzZSBpbiByZWFkLW9ubHkgbW9kZSwgdGhlIGdh cCBjYW4gYmUgcmVkdWNlZCB0byB6ZXJvLCByZXN1bHRpbmcgaW4gbGVzcword2FzdGVmdWwgZGF0 YSBtb3Rpb24uCisKK0BzdWJzZWN0aW9uIHF1ZXJ5aW5nCisKK0BjIEB0d2VycGRvYyAoZ2ItcG9p bnQpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2Vk dXJlfSBnYi1wb2ludCBnYgorUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiBwb2ludCBpbiBAdmFye2di fS4KK1RoaXMgaXMgYW4gaW50ZWdlciBzdGFydGluZyB3aXRoIDEgKG9uZSkuCitAZW5kIGRlZmZu CitAYyBAdHdlcnBkb2MgKGdiLXBvaW50LW1pbikKK0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIu ZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLXBvaW50LW1pbiBnYgorUmV0dXJuIHRo ZSBtaW5pbXVtIHBvc2l0aW9uIHBvc3NpYmxlIGZvciBwb2ludCBpbiBAdmFye2difS4KK0F0IHRo aXMgdGltZSwgdGhpcyB2YWx1ZSBpcyBhbHdheXMgMSAob25lKS4KK0BlbmQgZGVmZm4KK0BjIEB0 d2VycGRvYyAoZ2ItcG9pbnQtbWF4KQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0Bk ZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItcG9pbnQtbWF4IGdiCitSZXR1cm4gdGhlIG1heGlt dW0gcG9zaXRpb24gcG9zc2libGUgZm9yIHBvaW50IGluIEB2YXJ7Z2J9LgorVGhpcyB2YWx1ZSBj YW4gYmUgY2hhbmdlZCBieSBpbnNlcnRpbmcgdGV4dCBpbnRvIHRoZSBidWZmZXIsCithbmQgaXMg bGltaXRlZCBieSBHdWlsZSdzIHN0cmluZyBpbXBsZW1lbnRhdGlvbi4KK0BlbmQgZGVmZm4KK0Bj IEB0d2VycGRvYyAoZ2ItY2hhci1hZnRlcikKK0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9j CitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWNoYXItYWZ0ZXIgZ2IgW3Bvcy4uLl0KK1Jl dHVybiBjaGFyIGFmdGVyIEB2YXJ7cG9zfSwgb3IgI2YgaWYgdGhlcmUgaXMgbm8gY2hhciB0aGVy ZS4KK0lmIEB2YXJ7cG9zfSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byBwb2ludC4K K0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItY2hhci1iZWZvcmUpCitAYyAuLi8uLi9pY2Ut OS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBnYi1jaGFyLWJlZm9y ZSBnYiBbcG9zLi4uXQorUmV0dXJuIGNoYXIgYmVmb3JlIEB2YXJ7cG9zfSwgb3IgI2YgaWYgdGhl cmUgaXMgbm8gY2hhciB0aGVyZS4KK0lmIEB2YXJ7cG9zfSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBk ZWZhdWx0cyB0byBwb2ludC4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItYm9scCkKK0Bj IC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdi LWJvbHAgZ2IKK1JldHVybiAjdCBpZiBwb2ludCBpbiBAdmFye2difSBpcyBhdCB0aGUgYmVnaW5u aW5nIG9mIGEgbGluZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZW9scCkKK0BjIC4u Ly4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWVv bHAgZ2IKK1JldHVybiAjdCBpZiBwb2ludCBpbiBAdmFye2difSBpcyBhdCB0aGUgZW5kIG9mIGEg bGluZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItYm9icCkKK0BjIC4uLy4uL2ljZS05 L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWJvYnAgZ2IKK1Jl dHVybiAjdCBpZiBwb2ludCBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIEB2YXJ7Z2J9LgorQGVuZCBk ZWZmbgorQGMgQHR3ZXJwZG9jIChnYi1lb2JwKQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5k b2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItZW9icCBnYgorUmV0dXJuICN0IGlmIHBv aW50IGlzIGF0IHRoZSBlbmQgb2YgQHZhcntnYn0uCitAZW5kIGRlZmZuCisKK0BzdWJzZWN0aW9u IG11bmdpbmcKKworQGMgQHR3ZXJwZG9jIChnYi1pbnNlcnQtc3RyaW5nISkKK0BjIC4uLy4uL2lj ZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWluc2VydC1z dHJpbmchIGdiIHN0cmluZworSW5zZXJ0IGludG8gQHZhcntnYn0gYSBAdmFye3N0cmluZ30sIG1v dmluZyBwb2ludCBmb3J3YXJkIGFzIHdlbGwgYXMKK2luY3JlYXNpbmcgdGhlIHZhbHVlIHRoYXQg d291bGQgYmUgcmV0dXJuZWQgYnkgQGNvZGV7Z2ItcG9pbnQtbWF4fS4KK0BlbmQgZGVmZm4KK0Bj IEB0d2VycGRvYyAoZ2ItaW5zZXJ0LWNoYXIhKQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5k b2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItaW5zZXJ0LWNoYXIhIGdiIGNoYXIKK0lu c2VydCBpbnRvIEB2YXJ7Z2J9IGEgc2luZ2xlIEB2YXJ7Y2hhcn0sIG1vdmluZyBwb2ludCBmb3J3 YXJkIGFzIHdlbGwgYXMKK2luY3JlYXNpbmcgdGhlIHZhbHVlIHRoYXQgd291bGQgYmUgcmV0dXJu ZWQgYnkgQGNvZGV7Z2ItcG9pbnQtbWF4fS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2It aW5zZXJ0KQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFBy b2NlZHVyZX0gZ2ItaW5zZXJ0IGdiIFthcmdzLi4uXQorSW5zZXJ0IHRoZSBhcmd1bWVudHMgYXQg cG9pbnQuCitJZiBhbiBhcmcgaXMgYSBnYXAtYnVmZmVyLCBpbnNlcnQgaXRzIGNvbnRlbnRzLgor SWYgYW4gYXJnIGlzIGEgcGFpciwgaW5zZXJ0IGEgc3RyaW5nIG1hZGUgYnkgYXBwbHlpbmcgQGNv ZGV7d3JpdGV9IHRvIGl0LgorSWYgYW4gYXJnIGlzIGEgbnVtYmVyLCBpbnNlcnQgdGhlIHJlc3Vs dCBvZiBAY29kZXtudW1iZXItPnN0cmluZ30uCitPdGhlciB0eXBlcyBhY2NlcHRlZDogY2hhciwg c3RyaW5nLCBzeW1ib2wuCitQb2ludCBtb3ZlcyBmb3J3YXJkIHRvIGVuZCB1cCBhZnRlciB0aGUg aW5zZXJ0ZWQgdGV4dC4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZGVsZXRlLWNoYXIh KQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVy ZX0gZ2ItZGVsZXRlLWNoYXIhIGdiIGNvdW50CitJbiBAdmFye2difSwgZGVsZXRlIEB2YXJ7Y291 bnR9IGNoYXJhY3RlcnMgZnJvbSBwb2ludCwgZm9yd2FyZCBpZgorQHZhcntjb3VudH0gaXMgcG9z aXRpdmUsIGJhY2t3YXJkIGlmIEB2YXJ7Y291bnR9IGlzIG5lZ2F0aXZlLiAgKElmCitAdmFye2Nv dW50fSBpcyB6ZXJvLCBkbyBub3RoaW5nLikgIERlbGV0aW5nIGJhY2t3YXJkcyBtb3ZlcyBwb2lu dAorYmFja3dhcmRzLiAgRGVsZXRpbmcgZm9yd2FyZHMgb3IgYmFja3dhcmRzIGRlY3JlYXNlcyB0 aGUgdmFsdWUgdGhhdCB3b3VsZAorYmUgcmV0dXJuZWQgYnkgQGNvZGV7Z2ItcG9pbnQtbWF4fS4K K0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZGVsZXRlLXJlZ2lvbikKK0BjIC4uLy4uL2lj ZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWRlbGV0ZS1y ZWdpb24gZ2IgYmVnIGVuZAorRGVsZXRlIHRleHQgYmV0d2VlbiBAdmFye2JlZ30gYW5kIEB2YXJ7 ZW5kfS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZXJhc2UhKQorQGMgLi4vLi4vaWNl LTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItZXJhc2UhIGdi CitDb21wbGV0ZWx5IGVyYXNlIEB2YXJ7Z2J9LiAgUG9pbnQgaXMgbGVmdCBhdCB0aGUgbWluaW11 bSBwb3NpdGlvbiBwb3NzaWJsZQorKHdoaWNoIGhhcHBlbnMgdG8gYmUgYWxzbyB0aGUgbWF4aW11 bSBwb3NpdGlvbiBwb3NzaWJsZSBzaW5jZSB0aGUgYnVmZmVyCitpcyBlbXB0eSkuCitAZW5kIGRl ZmZuCisKK0BzdWJzZWN0aW9uIG1vdmluZworCitAYyBAdHdlcnBkb2MgKGdiLWdvdG8tY2hhcikK K0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9 IGdiLWdvdG8tY2hhciBnYiBuZXctcG9pbnQKK0luIEB2YXJ7Z2J9LCBtb3ZlIHBvaW50IHRvIEB2 YXJ7bmV3LXBvaW50fSBhbmQgcmV0dXJuIGl0LiAgSWYKK0B2YXJ7bmV3LXBvaW50fSBpcyBvdXRz aWRlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucyBwb3NzaWJsZSwgaXQKK2lzIGFk anVzdGVkIHRvIHRoZSB0aGUgbmVhcmVzdCBib3VuZGFyeSAoaG93ZXZlciwgdGhlIHJldHVybiB2 YWx1ZSBpcworQHZhcntuZXctcG9pbnR9IHVuY2hhbmdlZCkuCitAZW5kIGRlZmZuCitAYyBAdHdl cnBkb2MgKGdiLWZvcndhcmQtY2hhcikKK0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitA ZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWZvcndhcmQtY2hhciBnYiBuCitJbiBnYXAtYnVm ZmVyIEB2YXJ7Z2J9LCBtb3ZlIHBvaW50IGZvcndhcmQgQHZhcntufSBjaGFyYWN0ZXJzLgorQGVu ZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChnYi1iYWNrd2FyZC1jaGFyKQorQGMgLi4vLi4vaWNlLTkv Z2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItYmFja3dhcmQtY2hh ciBnYiBuCitJbiBnYXAtYnVmZmVyIEB2YXJ7Z2J9LCBtb3ZlIHBvaW50IGJhY2t3YXJkIEB2YXJ7 bn0gY2hhcmFjdGVycy4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZm9yd2FyZC1saW5l KQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVy ZX0gZ2ItZm9yd2FyZC1saW5lIGdiIFtuLi4uXQorSW4gZ2FwLWJ1ZmZlciBAdmFye2difSwgbW92 ZSBwb2ludCBAdmFye259IGxpbmVzIGZvcndhcmQgKGJhY2t3YXJkIGlmCitAdmFye259IGlzIG5l Z2F0aXZlKS4gIFByZWNpc2VseSwgaWYgcG9pbnQgaXMgb24gbGluZSBAY29kZXtJfSwgbW92ZSB0 byB0aGUKK3N0YXJ0IG9mIGxpbmUgQGNvZGV7SSArIE59LiAgSWYgdGhlcmUgaXNuJ3Qgcm9vbSwg Z28gYXMgZmFyIGFzIHBvc3NpYmxlIChubworZXJyb3IpLiAgUmV0dXJuIHRoZSBjb3VudCBvZiBs aW5lcyBsZWZ0IHRvIG1vdmUuICBJZiBtb3ZpbmcgZm9yd2FyZCwgdGhhdAoraXMgQHZhcntufSAt IG51bWJlciBvZiBsaW5lcyBtb3ZlZDsgaWYgYmFja3dhcmQsIEB2YXJ7bn0gKyBudW1iZXIgbW92 ZWQuCitXaXRoIHBvc2l0aXZlIEB2YXJ7bn0sIGEgbm9uLWVtcHR5IGxpbmUgYXQgdGhlIGVuZCBj b3VudHMgYXMgb25lIGxpbmUKK3N1Y2Nlc3NmdWxseSBtb3ZlZCAoZm9yIHRoZSByZXR1cm4gdmFs dWUpLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChnYi1iZWdpbm5pbmctb2YtbGluZSkKK0Bj IC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdi LWJlZ2lubmluZy1vZi1saW5lIGdiIFtuLi4uXQorSW4gZ2FwLWJ1ZmZlciBAdmFye2difSwgbW92 ZSBwb2ludCB0byBiZWdpbm5pbmcgb2YgY3VycmVudCBsaW5lLgorV2l0aCBhcmd1bWVudCBAdmFy e259IG5vdCAjZiBvciAxLCBtb3ZlIGZvcndhcmQgQHZhcntufSAtIDEgbGluZXMgZmlyc3QuCitJ ZiBwb2ludCByZWFjaGVzIHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGJ1ZmZlciwgaXQgc3RvcHMg dGhlcmUuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGdiLWVuZC1vZi1saW5lKQorQGMgLi4v Li4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2ItZW5k LW9mLWxpbmUgZ2IgW24uLi5dCitJbiBnYXAtYnVmZmVyIEB2YXJ7Z2J9LCBtb3ZlIHBvaW50IHRv IGVuZCBvZiBjdXJyZW50IGxpbmUuCitXaXRoIGFyZ3VtZW50IEB2YXJ7bn0gbm90ICNmIG9yIDEs IG1vdmUgZm9yd2FyZCBAdmFye259IC0gMSBsaW5lcyBmaXJzdC4KK0lmIHBvaW50IHJlYWNoZXMg dGhlIGJlZ2lubmluZyBvciBlbmQgb2YgYnVmZmVyLCBpdCBzdG9wcyB0aGVyZS4KK0BlbmQgZGVm Zm4KKworQHN1YnNlY3Rpb24gc2VhcmNoIChhbmQgcmVwbGFjZSkKKworQGMgQHR3ZXJwZG9jIChn Yi1tYXRjaC1zdHJpbmcpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtT Y2hlbWUgUHJvY2VkdXJlfSBnYi1tYXRjaC1zdHJpbmcgZ2IgbgorUmV0dXJuIHN0cmluZyBvZiB0 ZXh0IG1hdGNoZWQgYnkgbGFzdCBzZWFyY2guCitAdmFye259IHNwZWNpZmllcyB3aGljaCBwYXJl bnRoZXNpemVkIGV4cHJlc3Npb24gaW4gdGhlIGxhc3QgcmVnZXhwLgorVmFsdWUgaXMgI2YgaWYg QHZhcntufXRoIHBhaXIgZGlkbid0IG1hdGNoLCBvciB0aGVyZSB3ZXJlIGxlc3MgdGhhbgorQHZh cntufSBwYWlycy4gIFplcm8gbWVhbnMgdGhlIGVudGlyZSB0ZXh0IG1hdGNoZWQgYnkgdGhlIHdo b2xlIHJlZ2V4cAorb3Igd2hvbGUgc3RyaW5nLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChn Yi1sb29raW5nLWF0KQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gZ2ItbG9va2luZy1hdCBnYiByZS1zdHIKK1JldHVybiAjdCBpZiB0ZXh0 IGFmdGVyIHBvaW50IG1hdGNoZXMgcmVndWxhciBleHByZXNzaW9uIEB2YXJ7cmUtc3RyfS4KK1Ro aXMgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG1hdGNoIGRhdGEgdGhhdCBAY29kZXtnYi1tYXRjaC1i ZWdpbm5pbmd9LAorQGNvZGV7Z2ItbWF0Y2gtZW5kfSBhbmQgQGNvZGV7Z2ItbWF0Y2gtZGF0YX0g YWNjZXNzOyBzYXZlIGFuZCByZXN0b3JlCit0aGUgbWF0Y2ggZGF0YSBpZiB5b3Ugd2FudCB0byBw cmVzZXJ2ZSB0aGVtLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChnYi1tYXRjaC1iZWdpbm5p bmcpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2Vk dXJlfSBnYi1tYXRjaC1iZWdpbm5pbmcgW25dCitSZXR1cm4gcG9zaXRpb24gb2Ygc3RhcnQgb2Yg dGV4dCBtYXRjaGVkIGJ5IGxhc3Qgc2VhcmNoLgorQHZhcntzdWJleHB9LCBhIG51bWJlciwgc3Bl Y2lmaWVzIHdoaWNoIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbgoraW4gdGhlIGxhc3QgcmVnZXhw LiAgVmFsdWUgaXMgI2YgaWYgQHZhcntzdWJleHB9dGggcGFpciBkaWRuJ3QgbWF0Y2gsCitvciB0 aGVyZSB3ZXJlIGxlc3MgdGhhbiBAdmFye3N1YmV4cH0gcGFpcnMuICBaZXJvIG1lYW5zIHRoZSBl bnRpcmUgdGV4dAorbWF0Y2hlZCBieSB0aGUgd2hvbGUgcmVnZXhwLgorQGVuZCBkZWZmbgorQGMg QHR3ZXJwZG9jIChnYi1tYXRjaC1lbmQpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYwor QGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBnYi1tYXRjaC1lbmQgW25dCitSZXR1cm4gcG9zaXRp b24gb2YgZW5kIG9mIHRleHQgbWF0Y2hlZCBieSBsYXN0IHNlYXJjaC4KK0B2YXJ7c3ViZXhwfSwg YSBudW1iZXIsIHNwZWNpZmllcyB3aGljaCBwYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gaW4gdGhl CitsYXN0IHJlZ2V4cC4gIFZhbHVlIGlzIG5pbCBpZiBAdmFye3N1YmV4cH10aCBwYWlyIGRpZG4n dCBtYXRjaCwgb3IgdGhlcmUKK3dlcmUgbGVzcyB0aGFuIEB2YXJ7c3ViZXhwfSBwYWlycy4gIFpl cm8gbWVhbnMgdGhlIGVudGlyZSB0ZXh0IG1hdGNoZWQgYnkKK3RoZSB3aG9sZSByZWdleHAuCitA ZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGdiLXNlYXJjaC1mb3J3YXJkKQorQGMgLi4vLi4vaWNl LTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gZ2Itc2VhcmNoLWZv cndhcmQgc3RyaW5nIFtib3VuZCBbbm9lcnJvciBbY291bnRdXV0KK1NlYXJjaCBmb3J3YXJkIGZy b20gcG9pbnQgZm9yIEB2YXJ7c3RyaW5nfS4KK1NldCBwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBv Y2N1cnJlbmNlIGZvdW5kLCBhbmQgcmV0dXJuIHBvaW50LgorQW4gb3B0aW9uYWwgc2Vjb25kIGFy Z3VtZW50IGJvdW5kcyB0aGUgc2VhcmNoOyBpdCBpcyBhIGJ1ZmZlciBwb3NpdGlvbi4KK1RoZSBt YXRjaCBmb3VuZCBtdXN0IG5vdCBleHRlbmQgYWZ0ZXIgdGhhdCBwb3NpdGlvbi4gICNmIGlzIGVx dWl2YWxlbnQKKyAgdG8gKHBvaW50LW1heCkuCitPcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgaWYg I3QsIG1lYW5zIGlmIGZhaWwganVzdCByZXR1cm4gI2YgKG5vIGVycm9yKS4KKyAgSWYgbm90ICNm IGFuZCBub3QgI3QsIG1vdmUgdG8gbGltaXQgb2Ygc2VhcmNoIGFuZCByZXR1cm4gI2YuCitPcHRp b25hbCBmb3VydGggYXJndW1lbnQgaXMgcmVwZWF0IGNvdW50LS1zZWFyY2ggZm9yIHN1Y2Nlc3Np dmUgb2NjdXJyZW5jZXMuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGdiLXNlYXJjaC1iYWNr d2FyZCkKK0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9j ZWR1cmV9IGdiLXNlYXJjaC1iYWNrd2FyZCBzdHJpbmcgW2JvdW5kIFtub2Vycm9yIFtyZXBlYXRd XV0KK1NlYXJjaCBiYWNrd2FyZCBmcm9tIHBvaW50IGZvciBAdmFye3N0cmluZ30uCitTZXQgcG9p bnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgb2NjdXJyZW5jZSBmb3VuZCwgYW5kIHJldHVybiBw b2ludC4KK0FuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBib3VuZHMgdGhlIHNlYXJjaDsgaXQg aXMgYSBidWZmZXIgcG9zaXRpb24uCitUaGUgbWF0Y2ggZm91bmQgbXVzdCBub3QgZXh0ZW5kIGJl Zm9yZSB0aGF0IHBvc2l0aW9uLgorT3B0aW9uYWwgdGhpcmQgYXJndW1lbnQsIGlmIHQsIG1lYW5z IGlmIGZhaWwganVzdCByZXR1cm4gbmlsIChubyBlcnJvcikuCisgSWYgbm90IG5pbCBhbmQgbm90 IHQsIHBvc2l0aW9uIGF0IGxpbWl0IG9mIHNlYXJjaCBhbmQgcmV0dXJuIG5pbC4KK09wdGlvbmFs IGZvdXJ0aCBhcmd1bWVudCBpcyByZXBlYXQgY291bnQtLXNlYXJjaCBmb3Igc3VjY2Vzc2l2ZSBv Y2N1cnJlbmNlcy4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItcmUtc2VhcmNoLWZvcndh cmQpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVmZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2Vk dXJlfSBnYi1yZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgW2JvdW5kIFtub2Vycm9yIFtyZXBlYXRd XV0KK1NlYXJjaCBmb3J3YXJkIGZyb20gcG9pbnQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBAdmFy e3JlZ2V4cH0uCitTZXQgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgb2NjdXJyZW5jZSBmb3VuZCwg YW5kIHJldHVybiBwb2ludC4KK0FuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBib3VuZHMgdGhl IHNlYXJjaDsgaXQgaXMgYSBidWZmZXIgcG9zaXRpb24uCitUaGUgbWF0Y2ggZm91bmQgbXVzdCBu b3QgZXh0ZW5kIGFmdGVyIHRoYXQgcG9zaXRpb24uCitPcHRpb25hbCB0aGlyZCBhcmd1bWVudCwg aWYgI3QsIG1lYW5zIGlmIGZhaWwganVzdCByZXR1cm4gI2YgKG5vIGVycm9yKS4KKyAgSWYgbm90 ICNmIGFuZCBub3QgI3QsIG1vdmUgdG8gbGltaXQgb2Ygc2VhcmNoIGFuZCByZXR1cm4gI2YuCitP cHRpb25hbCBmb3VydGggYXJndW1lbnQgaXMgcmVwZWF0IGNvdW50LS1zZWFyY2ggZm9yIHN1Y2Nl c3NpdmUgb2NjdXJyZW5jZXMuCisKK0B2YXJ7cmVnZXhwfSBtYXkgYmUgYSBzdHJpbmcsIG9yIGNv bXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYWRlIHdpdGgKK0Bjb2Rle21ha2UtcmVnZXhwfSwg aW4gd2hpY2ggY2FzZSwgaXQgaXMgdGhlIGNhbGxlcidzIGRlY2lzaW9uIHdoZXRoZXIgb3IKK25v dCB0byBpbmNsdWRlIHRoZSBmbGFnIEBjb2Rle3JlZ2V4cC9uZXdsaW5lfSAobm9ybWFsbHkgdXNl ZCB3aGVuCitAdmFye3JlZ2V4cH0gaXMgYSBzdHJpbmcgdG8gY29tcGlsZSBpdCBpbnRlcm5hbGx5 KS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItcmVwbGFjZS1tYXRjaCkKK0BjIC4uLy4u L2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLXJlcGxh Y2UtbWF0Y2ggbmV3dGV4dCBbSUdOT1JFRCBbbGl0ZXJhbF1dCitSZXBsYWNlIHRleHQgbWF0Y2hl ZCBieSBsYXN0IHNlYXJjaCB3aXRoIEB2YXJ7bmV3dGV4dH0uCitUaGUgc2Vjb25kIGFyZyBpcyBv cHRpb25hbCBhbmQgaWdub3JlZCAoZm9yIG5vdyAtLSBpbiB0aGUKK2Z1dHVyZSBpdCBtYXkgc3Bl Y2lmeSBjYXNlIGhhbmRsaW5nIGEgbGEgRW1hY3MpLgorCitJZiB0aGlyZCBhcmcgQHZhcntsaXRl cmFsfSBpcyBub24tI2YsIGluc2VydCBAdmFye25ld3RleHR9IGxpdGVyYWxseS4KK090aGVyd2lz ZSB0cmVhdCBAY29kZXtcfSBhcyBzcGVjaWFsOgorQGV4YW1wbGUKKyAgYFwmJyBpbiBORVdURVhU IG1lYW5zIHN1YnN0aXR1dGUgb3JpZ2luYWwgbWF0Y2hlZCB0ZXh0LgorICBgXE4nIG1lYW5zIHN1 YnN0aXR1dGUgd2hhdCBtYXRjaGVkIHRoZSBOdGggYCguLi4pJy4KKyAgICAgICBJZiBOdGggcGFy ZW5zIGRpZG4ndCBtYXRjaCwgc3Vic3RpdHV0ZSBub3RoaW5nLgorICBgXFwnIG1lYW5zIGluc2Vy dCBvbmUgYFwnLgorQGVuZCBleGFtcGxlCisKK0xlYXZlIHBvaW50IGF0IGVuZCBvZiByZXBsYWNl bWVudCB0ZXh0LgorQGVuZCBkZWZmbgorCitAc3Vic2VjdGlvbiBtaXNjCisKK0BjIEB0d2VycGRv YyAoZ2ItPnBvcnQhKQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gZ2ItPnBvcnQhIGdiIHBvcnQgW2JlZyBbZW5kXV0KK1NlbmQgdGhlIGNv bnRlbnRzIG9mIEB2YXJ7Z2J9IHRvIHRoZSBvdXRwdXQgQHZhcntwb3J0fS4KK09wdGlvbmFsIGFy Z3MgQHZhcntiZWd9IGFuZCBAdmFye2VuZH0gc3BlY2lmeSBhIHJlZ2lvbiB0byBzZW5kLgorUG9p bnQgZG9lcyBub3QgbW92ZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItPnN0cmluZykK K0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9 IGdiLT5zdHJpbmcgZ2IKK1JldHVybiBhIG5ldyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXh0 IG9mIEB2YXJ7Z2J9LgorUG9pbnQgZG9lcyBub3QgbW92ZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2Vy cGRvYyAoZ2ItPnN1YnN0cmluZykKK0BjIC4uLy4uL2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVm Zm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLT5zdWJzdHJpbmcgZ2Igc3RhcnQgZW5kCitSZXR1cm4g dGhlIHJlZ2lvbiBvZiBAdmFye2difSBmcm9tIEB2YXJ7c3RhcnR9IHRvIEB2YXJ7ZW5kfSBhcyBh IHN0cmluZy4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoZ2ItZmlsdGVyISkKK0BjIC4uLy4u L2ljZS05L2dhcC1idWZmZXIuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdiLWZpbHRl ciEgZ2Igc3RyaW5nLXByb2MKK1Bhc3MgdGhlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRleHQg b2YgQHZhcntnYn0gdG8gQHZhcntzdHJpbmctcHJvY30gYW5kCit1c2UgaXRzIHJldHVybiB2YWx1 ZSB0byBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIEB2YXJ7Z2J9LgorUG9pbnQg aXMgbGVmdCBhdCB0aGUgbWF4aW11bSBwb3NpdGlvbi4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRv YyAoZ2ItPmxpbmVzKQorQGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gZ2ItPmxpbmVzIGdiCitSZXR1cm4gYSBsaXN0IG9mIHN0cmluZ3MgcmVw cmVzZW50aW5nIHRoZSBsaW5lcyBvZiB0ZXh0IG9mIEB2YXJ7Z2J9LgorTmV3bGluZXMgYXJlIGF1 dG9tYXRpY2FsbHkgcmVtb3ZlZC4gIEEgYnVmZmVyIHdpdGggTiBuZXdsaW5lcyByZXN1bHRzCitp biBhIGxpc3Qgb2YgbGVuZ3RoIE4rMS4gIFBvaW50IGRvZXMgbm90IG1vdmUuCitAZW5kIGRlZmZu CitAYyBAdHdlcnBkb2MgKGdiLWZpbHRlci1saW5lcyEpCitAYyAuLi8uLi9pY2UtOS9nYXAtYnVm ZmVyLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBnYi1maWx0ZXItbGluZXMhIGdiIGxp bmVzLXByb2MKK1Bhc3MgdGhlIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGxpbmVz IG9mIHRleHQgb2YgQHZhcntnYn0gdG8KK0B2YXJ7bGluZXMtcHJvY30gYW5kIHVzZSBpdHMgcmV0 dXJuIHZhbHVlIChhbm90aGVyIGxpc3Qgb2Ygc3RyaW5ncykgdG8KK2NvbXBsZXRlbHkgcmVwbGFj ZSB0aGUgY29udGVudHMgb2YgQHZhcntnYn0uICBOZXdsaW5lcyBhcmUgYXV0b21hdGljYWxseQor cmVtb3ZlZCBhbmQgYWRkZWQgYmFjay4gIFBvaW50IGlzIGxlZnQgYXQgdGhlIG1heGltdW0gcG9z aXRpb24uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKG1ha2UtZ2FwLWJ1ZmZlci1wb3J0KQor QGMgLi4vLi4vaWNlLTkvZ2FwLWJ1ZmZlci5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0g bWFrZS1nYXAtYnVmZmVyLXBvcnQgZ2IKK1JldHVybiBhICJzb2Z0IHBvcnQiIG9uIEB2YXJ7Z2J9 IHRoYXQgc3VwcG9ydHMgdGhlIHdyaXRlLWNoYXJhY3RlciwKK3dyaXRlLXN0cmluZyBhbmQgcmVh ZC1jaGFyYWN0ZXIgb3BlcmF0aW9ucyAoZmx1c2gtb3V0cHV0IGFuZCBjbG9zZS1wb3J0CithcmUg bm90IHN1cHBvcnRlZCkuICBBbGwgb3BlcmF0aW9ucyBtb3ZlIHBvaW50IGZvcndhcmQuICBBZGRp dGlvbmFsbHksCit3cml0aW5nIG9wZXJhdGlvbnMgaW5jcmVhc2UgdGhlIHZhbHVlIHRoYXQgd291 bGQgYmUgcmV0dXJuZWQgYnkKK0Bjb2Rle2diLXBvaW50LW1heH0uCitAZW5kIGRlZmZuCisKK0Bj IGdhcC1idWZmZXIudGV4aSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL2RvYy9yZWYvZ3VpbGUudGV4 aSBiL2RvYy9yZWYvZ3VpbGUudGV4aQppbmRleCBjM2RhMGMzLi5jY2I1MjJmIDEwMDY0NAotLS0g YS9kb2MvcmVmL2d1aWxlLnRleGkKKysrIGIvZG9jL3JlZi9ndWlsZS50ZXhpCkBAIC0zNjksNiAr MzY5LDE5IEBAIGF2YWlsYWJsZSB0aHJvdWdoIGJvdGggU2NoZW1lIGFuZCBDIGludGVyZmFjZXMu CiAqIEJ1ZmZlcmVkIElucHV0OjogICAgICAgICAgICAgIFBvcnRzIG1hZGUgZnJvbSBhIHJlYWRl ciBmdW5jdGlvbi4KICogRXhwZWN0OjoJCQlDb250cm9sbGluZyBpbnRlcmFjdGl2ZSBwcm9ncmFt cyB3aXRoIEd1aWxlLgogKiBzeG1sLW1hdGNoOjogICAgICAgICAgICAgICAgICBQYXR0ZXJuIG1h dGNoaW5nIG9mIFNYTUwuCisqIENvbnZlbnRpb25hbCBDYWxsaW5nOjogICAgICAgIENhbGxpbmcg cHJvY2VkdXJlcyB3aXRoIGNvbnZlbnRpb25hbCBpbnRlcmZhY2VzLgorKiBDb21tb24gTGlzdCBP cGVyYXRpb25zOjogICAgICBMaXN0IHByb2NlZHVyZXMgZnJvbSBDb21tb24gTGlzcC4KKyogR2Fw IEJ1ZmZlcjo6ICAgICAgICAgICAgICAgICAgU3RyaW5ncyB3aXRoIGZhc3QgaW5zZXJ0aW9uL2Rl bGV0aW9uLgorKiBEb3VibGUtS2V5IEhhc2ggVGFibGVzOjogICAgICBUd28td2F5IG1hcHMuCisq IEJ1ZmZlcmVkIExpbmUgSU86OiAgICAgICAgICAgIExpa2UgQGNvZGV7cmVhZC1saW5lfSwgYnV0 IGJ1ZmZlcmVkLgorKiBCaW5kaW5ncyBCcm93c2luZzo6ICAgICAgICAgICBCcm93c2luZyB0aGUg bW9kdWxlIGhpZXJhcmNoeS4KKyogTmV3IEhhc2ggTWFwcGluZ3M6OiAgICAgICAgICAgTmV3IGhh c2ggbWFwcGluZ3MuCisqIE1lbW9pemF0aW9uOjogICAgICAgICAgICAgICAgIFByb2NlZHVyZXMg dGhhdCByZW1lbWJlciB0aGVpciBvdXRwdXRzLgorKiBBbHRlcm5hdGUgUGlwZXM6OiAgICAgICAg ICAgICBBbm90aGVyIGludGVyZmFjZSB0byBwaXBlcy4KKyogUnVuIFF1ZXVlczo6ICAgICAgICAg ICAgICAgICAgRm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4KKyogUHJlbG9hZGVkIE1vZHVsZXMgZm9y IEludGVyYWN0aXZlIFNlc3Npb25zOjoKKyogTGF6eSBDYXRjaDo6ICAgICAgICAgICAgICAgICAg Q2F0Y2ggd2l0aG91dCB1bndpbmRpbmcuCisqIEhpZ2hlciBsZXZlbCB0aHJlYWQgcHJvY2VkdXJl czo6CiAqIFRoZSBTY2hlbWUgc2hlbGwgKHNjc2gpOjogICAgIFVzaW5nIHNjc2ggaW50ZXJmYWNl cyBpbiBHdWlsZS4KIEBlbmQgbWVudQogCkBAIC0zODYsNiArMzk5LDIwIEBAIGF2YWlsYWJsZSB0 aHJvdWdoIGJvdGggU2NoZW1lIGFuZCBDIGludGVyZmFjZXMuCiBAYyBYWFg6IFdvdWxkIGJlIG5p Y2VyIGlmIGl0IHdlcmUgY2xvc2UgdG8gdGhlIChzeG1sIHNpbXBsZSkgZG9jdW1lbnRhdGlvbi4K IEBpbmNsdWRlIHN4bWwtbWF0Y2gudGV4aQogCitAaW5jbHVkZSBjYWxsaW5nLnRleGkKK0BpbmNs dWRlIGNvbW1vbi1saXN0LnRleGkKK0BpbmNsdWRlIGdhcC1idWZmZXIudGV4aQorQGluY2x1ZGUg aGNvbnMudGV4aQorQGluY2x1ZGUgbGluZWlvLnRleGkKK0BpbmNsdWRlIGxzLnRleGkKK0BpbmNs dWRlIG1hcHBpbmcudGV4aQorQGluY2x1ZGUgcG9lLnRleGkKK0BpbmNsdWRlIHBvcGVuLnRleGkK K0BpbmNsdWRlIHJ1bnEudGV4aQorQGluY2x1ZGUgc2Vzc2lvbi50ZXhpCitAaW5jbHVkZSBzdGFj ay1jYXRjaC50ZXhpCitAaW5jbHVkZSB0aHJlYWRzLnRleGkKKwogQGluY2x1ZGUgc2NzaC50ZXhp CiAKIEBub2RlIFN0YW5kYXJkIExpYnJhcnkKZGlmZiAtLWdpdCBhL2RvYy9yZWYvaGNvbnMudGV4 aSBiL2RvYy9yZWYvaGNvbnMudGV4aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xZmMzNjEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3JlZi9oY29ucy50ZXhpCkBAIC0wLDAg KzEsOTUgQEAKK0BjIGhjb25zLnRleGkKKworQGMgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQGMKK0BjIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBj b3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAorQGMgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4z IG9yCitAYyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgd2l0aCBubworQGMgSW52YXJpYW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3Zl ciBUZXh0cywgYW5kIG5vIEJhY2stQ292ZXIgVGV4dHMuICBBCitAYyBjb3B5IG9mIHRoZSBsaWNl bnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUKK0BjIERv Y3VtZW50YXRpb24gTGljZW5zZS4nJworCitAbm9kZSBEb3VibGUtS2V5IEhhc2ggVGFibGVzCitA c2VjdGlvbiBEb3VibGUtS2V5IEhhc2ggVGFibGVzCisKK1RvIHVzZSBkb3VibGUta2V5IGhhc2gg dGFibGVzLCBldmFsdWF0ZSB0aGUgZm9ybToKKworQHNtYWxsbGlzcAorKHVzZS1tb2R1bGVzIChp Y2UtOSBoY29ucykpCitAZW5kIHNtYWxsbGlzcAorCitAYyBAdHdlcnBjb21tZW50YXJ5ICh2ZXJi YXRpbSAoaWNlLTkgaGNvbnMpKQorQGMgQHZlcmJhdGltCitFcT8gaGFzaC1jb25zaW5nCisKK0Eg aGFzaCBjb25zZXIgbWFpbnRhaW5zIGEgcHJpdmF0ZSB1bml2ZXJzZSBvZiBwYWlycyBzLnQuIGlm Cit0d28gY29ucyBjYWxscyBwYXNzIGVxPyBhcmd1bWVudHMsIHRoZSBwYWlycyByZXR1cm5lZCBh cmUgZXE/LgorCitBIGhhc2ggY29uc2VyIGRvZXMgbm90IGNvbnRyaWJ1dGUgbGlmZSB0byB0aGUg cGFpcnMgaXQgcmV0dXJucy4KK0BjIEBlbmQgdmVyYmF0aW0KKworQGMgQHR3ZXJwZG9jIChoYXNo cS1jb25zLWhhc2gpCitAYyAuLi8uLi9pY2UtOS9oY29ucy5kb2MKK0BkZWZmbiB7U2NoZW1lIFBy b2NlZHVyZX0gaGFzaHEtY29ucy1oYXNoIHBhaXIgbgorUmV0dXJuIHRoZSBoYXNoIG9mIEB2YXJ7 cGFpcn0gbW9kdWxvIEB2YXJ7bn0uCitVc2UgYW4gQGNvZGV7ZXE/fSBoYXNoIG9mIHRoZSBAc2N7 Y2FyfSBhbmQKK0BzY3tjZHJ9IG9mIEB2YXJ7cGFpcn0gZm9yIHRoZSBjb21wdXRhdGlvbi4KK0Bl bmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoaGFzaHEtY29ucy1hc3NvYykKK0BjIC4uLy4uL2ljZS05 L2hjb25zLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBoYXNocS1jb25zLWFzc29jIGtl eSBhbGlzdAorUmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50IGluIEB2YXJ7YWxpc3R9IHdob3NlIEBz Y3tjYXJ9IGFuZCBAc2N7Y2RyfSBhcmUKK0Bjb2Rle2VxP30gdG8gdGhhdCBvZiB0aGUgcGFpciBA dmFye2tleX0uICBSZXR1cm4gI2YgaWYgbm8gbWF0Y2ggZXhpc3RzLgorQGVuZCBkZWZmbgorQGMg QHR3ZXJwZG9jIChoYXNocS1jb25zLWdldC1oYW5kbGUpCitAYyAuLi8uLi9pY2UtOS9oY29ucy5k b2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gaGFzaHEtY29ucy1nZXQtaGFuZGxlIHRhYmxl IGtleQorUmV0dXJuIHRoZSBoYW5kbGUgZnJvbSBoYXNoIEB2YXJ7dGFibGV9IHdob3NlIEBzY3tj YXJ9IGFuZCBAc2N7Y2RyfQorYXJlIEBjb2Rle2VxP30gdG8gdGhhdCBvZiB0aGUgcGFpciBAdmFy e2tleX0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGhhc2hxLWNvbnMtY3JlYXRlLWhhbmRs ZSEpCitAYyAuLi8uLi9pY2UtOS9oY29ucy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0g aGFzaHEtY29ucy1jcmVhdGUtaGFuZGxlISB0YWJsZSBrZXkgaW5pdAorQ3JlYXRlIGEgaGFuZGxl IGluIGhhc2ggQHZhcnt0YWJsZX0gZm9yIHBhaXIgQHZhcntrZXl9IGFuZAorc3RvcmUgdGhlIGlu aXRpYWwgdmFsdWUgQHZhcntpbml0fSB0aGVyZS4gIFJldHVybiB0aGUgaGFuZGxlLgorQGVuZCBk ZWZmbgorQGMgQHR3ZXJwZG9jIChoYXNocS1jb25zLXJlZikKK0BjIC4uLy4uL2ljZS05L2hjb25z LmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBoYXNocS1jb25zLXJlZiB0YWJsZSBrZXkK K1JldHVybiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHBhaXIgQHZhcntrZXl9IGluIGhhc2gg QHZhcnt0YWJsZX0sCitvciAjZiBpZiBAdmFye2tleX0gaXMgbm90IHRvIGJlIGZvdW5kLgorQGVu ZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChoYXNocS1jb25zLXNldCEpCitAYyAuLi8uLi9pY2UtOS9o Y29ucy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gaGFzaHEtY29ucy1zZXQhIHRhYmxl IGtleSB2YWwKK0luIGhhc2ggQHZhcnt0YWJsZX0sIGFzc29jaWF0ZSB3aXRoIHBhaXIgQHZhcntr ZXl9IHRoZSB2YWx1ZSBAdmFye3ZhbH0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGhhc2hx LWNvbnMpCitAYyAuLi8uLi9pY2UtOS9oY29ucy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVy ZX0gaGFzaHEtY29ucyB0YWJsZSBhIGQKK0FkZCB0byBoYXNoIEB2YXJ7dGFibGV9IGFuIGVudHJ5 IGZvciB0aGUgZG91YmxlLWtleSBAdmFye2F9IGFuZAorQHZhcntkfS4gIFRoZSBhc3NvY2lhdGVk IHZhbHVlIGlzICNmLiAgUmV0dXJuIHRoZSBjb21iaW5lZCBrZXkgKHBhaXIpLgorQGVuZCBkZWZm bgorQGMgQHR3ZXJwZG9jIChoYXNocS1jb25zZXIpCitAYyAuLi8uLi9pY2UtOS9oY29ucy5kb2MK K0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gaGFzaHEtY29uc2VyIGhhc2gtdGFiLW9yLXNpemUK K1JldHVybiBhIHByb2NlZHVyZSB0aGF0IGRvZXMgQGNvZGV7aGFzaHEtY29uc30gb24gQHZhcnto YXNoLXRhYi1vci1zaXplfS4KK0lmIEB2YXJ7aGFzaC10YWItb3Itc2l6ZX0gaXMgYSBudW1iZXIs IGFsbG9jYXRlIGFuZCBhIGhhc2ggdGFibGUgb2YgdGhhdAorc2l6ZSBhbmQgdXNlIGl0LiAgVGhl IHByb2NlZHVyZSB0YWtlcyB0d28gYXJncywgQHZhcnthfSBhbmQgQHZhcntkfSwgdGhlCitzYW1l IGFzIHRoZSBsYXR0ZXIgdHdvIGFyZ3Mgb2YgQGNvZGV7aGFzaHEtY29uc30uCitAZW5kIGRlZmZu CisKK0BjIFtUaGUgZm9sbG93aW5nIHByb2MgcmVhbGx5IGRvZXNuJ3QgYmVsb25nIGhlcmUuIC0t dHRuXQorCitAYyBAdHdlcnBkb2MgKG1ha2UtZ2MtYnVmZmVyKQorQGMgLi4vLi4vaWNlLTkvaGNv bnMuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IG1ha2UtZ2MtYnVmZmVyIG4KK0NvbnN0 cnVjdCBhIHByaXZhdGUgcmluZyAoY2lyY3VsYXIgbGlzdCkgb2YgQHZhcntufSBlbGVtZW50cyBh bmQgcmV0dXJuIGEKK3Byb2NlZHVyZSBAdmFye3Byb2N9IHRoYXQgdXBkYXRlcyBpdC4gIEB2YXJ7 cHJvY30gdGFrZXMgb25lIGFyZ3VtZW50LAorQHZhcntuZXh0fSwgd2hpY2ggaXMgYWRkZWQgdG8g dGhlIHJpbmcgYW5kIGFsc28gcmV0dXJuZWQuICBBbiBlbGVtZW50IGFkZGVkCitpbiB0aGlzIHdh eSByZW1haW5zIHJlZmVyZW5jZWQgZm9yIHRoZSBuZXh0IEBjb2Rle0B2YXJ7bn0gQG1pbnVze30g MX0KK2ludm9jYXRpb25zIG9mIEB2YXJ7cHJvY30uICBUbyBgYGNsZWFyJycgdGhlIHJpbmcsIGNv bnNlY3V0aXZlbHkgY2FsbAorQHZhcntwcm9jfSB3aXRoIGFyZyAjZiBhdCBsZWFzdCBAdmFye259 IHRpbWVzLgorQGVuZCBkZWZmbgorCitAYyBoY29ucy50ZXhpIGVuZHMgaGVyZQpkaWZmIC0tZ2l0 IGEvZG9jL3JlZi9saW5laW8udGV4aSBiL2RvYy9yZWYvbGluZWlvLnRleGkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQxNTQ5NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9y ZWYvbGluZWlvLnRleGkKQEAgLTAsMCArMSw2NiBAQAorQGMgbGluZWlvLnRleGkKKworQGMgQ29w eXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQGMKK0BjIFBl cm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhp cyBkb2N1bWVudAorQGMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0 aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCitAYyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworQGMgSW52YXJpYW50 IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292ZXIgVGV4dHMu ICBBCitAYyBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVu dGl0bGVkIGBgR05VIEZyZWUKK0BjIERvY3VtZW50YXRpb24gTGljZW5zZS4nJworCitAbm9kZSBC dWZmZXJlZCBMaW5lIElPCitAc2VjdGlvbiBCdWZmZXJlZCBWYXJpYW50CisKK1lvdSBjYW4gdXNl IGEgYnVmZmVyZWQgdmFyaWFudCBvZiBAY29kZXtyZWFkLWxpbmV9IGJ5IGV2YWx1YXRpbmc6CisK K0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgbGluZWlvKSkKK0BlbmQgc21hbGxsaXNw CisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgcHJvY2VkdXJlIHRvIGNyZWF0ZQorYSBAZGZue2xp bmUtYnVmZmVyaW5nIGlucHV0IHBvcnR9LCBhIHJlbGF0ZWQgcHJlZGljYXRlLAorYW5kIHR3byBw cm9jZWR1cmVzIHRvIHJlYWQgYSBsaW5lIGZyb20gdGhlIHBvcnQgb3IgcHVzaCBhIGxpbmUKK2Jh Y2sgb250byB0aGUgc3RyZWFtLgorCitOb3RlOiBUaGUgaW1wbGVtZW50YXRpb24gb2YgQGNvZGV7 dW5yZWFkLXN0cmluZ30gaXMga2luZCBvZiBsaW1pdGVkOyBpdAorZG9lc24ndCBpbnRlcmFjdCBw cm9wZXJseSB3aXRoIHVucmVhZC1jaGFyLCBvciBhbnkgb2YgdGhlIG90aGVyIHBvcnQgcmVhZGlu ZworZnVuY3Rpb25zLiAgT25seSBAY29kZXtyZWFkLXN0cmluZ30gd2lsbCBnZXQgeW91IGJhY2sg dGhlIHRoaW5ncyB0aGF0CitAY29kZXt1bnJlYWQtc3RyaW5nfSBhY2NlcHRzLgorCitOb3JtYWxs eSBhICJsaW5lIiBpcyBhbGwgY2hhcmFjdGVycyB1cCB0byBhbmQgaW5jbHVkaW5nIGEgbmV3bGlu ZS4gIElmIGxpbmVzCithcmUgcHV0IGJhY2sgdXNpbmcgQGNvZGV7dW5yZWFkLXN0cmluZ30sIHRo ZXkgY2FuIGJlIGJyb2tlbiBhcmJpdHJhcmlseSAtLQordGhhdCBpcywgQGNvZGV7cmVhZC1zdHJp bmd9IHJldHVybnMgc3RyaW5ncyBwYXNzZWQgdG8gQGNvZGV7dW5yZWFkLXN0cmluZ30gKG9yCitz aGFyZWQgc3Vic3RyaW5ncyBvZiB0aGVtKS4KKworQGMgQHR3ZXJwZG9jIChsaW5laW8tcG9ydD8p CitAYyAuLi8uLi9pY2UtOS9saW5laW8uZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGxp bmVpby1wb3J0PyBwb3J0CitSZXR1cm4gI3QgaWZmIEB2YXJ7cG9ydH0gaXMgYSBwb3J0IGNhcGFi bGUgb2YgaGFuZGxpbmcKK0Bjb2Rle3JlYWQtc3RyaW5nfSBhbmQgQGNvZGV7dW5yZWFkLXN0cmlu Z30uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKG1ha2UtbGluZS1idWZmZXJpbmctaW5wdXQt cG9ydCkKK0BjIC4uLy4uL2ljZS05L2xpbmVpby5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVy ZX0gbWFrZS1saW5lLWJ1ZmZlcmluZy1pbnB1dC1wb3J0IHVuZGVybHlpbmctcG9ydAorUmV0dXJu IGEgd3JhcHBlciBwb3J0IGZvciBAdmFye3VuZGVybHlpbmctcG9ydH0uCisKK1RoZSB3cmFwcGVy IHBvcnQgYnVmZmVycyBjaGFyYWN0ZXJzIHJlYWQgZnJvbSBAdmFye3VuZGVybHlpbmctcG9ydH0K K2ludGVybmFsbHksIGFuZCBwYXJjZWxzIHRoZW0gb3V0IHZpYSBjYWxscyB0byBAY29kZXtyZWFk LWNoYXJ9LAorQGNvZGV7cmVhZC1zdHJpbmd9IGFuZCBAY29kZXt1bnJlYWQtc3RyaW5nfS4KK0Bl bmQgZGVmZm4KK0BjIEB0d2VycGRvYyAocmVhZC1zdHJpbmcpCitAYyAuLi8uLi9pY2UtOS9saW5l aW8uZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHJlYWQtc3RyaW5nIGxpbmUtYnVmZmVy aW5nLWlucHV0LXBvcnQKK1JlYWQgYSBsaW5lIGZyb20gQHZhcntsaW5lLWJ1ZmZlcmluZy1pbnB1 dC1wb3J0fS4KK1JldHVybiBpdCBhcyBhIHN0cmluZywgZW5kaW5nIHdpdGggbmV3bGluZS4KK0Bl bmQgZGVmZm4KK0BjIEB0d2VycGRvYyAodW5yZWFkLXN0cmluZykKK0BjIC4uLy4uL2ljZS05L2xp bmVpby5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gdW5yZWFkLXN0cmluZyBzdHIgbGlu ZS1idWZmZXJpbmctaW5wdXQtcG9ydAorUmV0dXJuIHN0cmluZyBAdmFye3N0cn0gdG8gQHZhcnts aW5lLWJ1ZmZlcmluZy1pbnB1dC1wb3J0fS4KK0Egc3Vic2VxdWVudCBjYWxsIHRvIEBjb2Rle3Jl YWQtc3RyaW5nfSBvciBAY29kZXtyZWFkLWNoYXJ9IGZyb20KK3RoaXMgcG9ydCB3aWxsIHJldHJp ZXZlIHRoaXMgc3RyaW5nIG9yIGl0cyBmaXJzdCBjaGFyYWN0ZXIsIHJlc3BlY3RpdmVseSwKK2Jl Zm9yZSBjb25zdWx0aW5nIHRoZSB1bmRlcmx5aW5nIHBvcnQuCitAZW5kIGRlZmZuCisKK0BjIGxp bmVpby50ZXhpIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvZG9jL3JlZi9scy50ZXhpIGIvZG9jL3Jl Zi9scy50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTVlMmQKLS0t IC9kZXYvbnVsbAorKysgYi9kb2MvcmVmL2xzLnRleGkKQEAgLTAsMCArMSw3NSBAQAorQGMgbHMu dGV4aQorCitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCitAYworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5k L29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBG cmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKK0BjIGFueSBsYXRlciB2 ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIG5v CitAYyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRleHRzLCBhbmQgbm8gQmFj ay1Db3ZlciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgaW5jbHVkZWQgaW4g dGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMgRG9jdW1lbnRhdGlvbiBMaWNlbnNl LicnCisKK0Bub2RlIEJpbmRpbmdzIEJyb3dzaW5nCitAc2VjdGlvbiBCaW5kaW5ncyBCcm93c2lu ZworCitZb3UgY2FuIHRoaW5rIG9mIHRoZSBtb2R1bGUgc3lzdGVtJ3MgaGllcmFyY2hpY2FsIG5h bWVzcGFjZSBhcyBhbmFsb2dvdXMKK3RvIHRoYXQgb2YgYSAobW9kZXJuaXNoKSBmaWxlc3lzdGVt LiAgV2hlcmVhcyBhIGZpbGVzeXN0ZW0gaGFzIGRpcmVjdG9yaWVzLAorc3ViZGlyZWN0b3JlcyBh bmQgZmlsZXMsIHRoZSBtb2R1bGUgc3lzdGVtIGhhcyBtb2R1bGVzLCBiaW5kaW5ncyByZXNvbHZp bmcgdG8KK25lc3RlZCBtb2R1bGVzLCBhbmQgYmluZGluZ3MgcmVzb2x2aW5nIHRvIG9yZGluYXJ5 IFNjaGVtZSB2YWx1ZXMuICBUbyBicm93c2UKK3RoaXMgaGllcmFyY2h5LCBldmFsdWF0ZSB0aGUg Zm9ybToKKworQHNtYWxsbGlzcAorKHVzZS1tb2R1bGVzIChpY2UtOSBscykpCitAZW5kIHNtYWxs bGlzcAorCitUaGlzIHByb3ZpZGVzIHNldmVyYWwgcHJvY2VkdXJlcyB0aGF0IGFyZSByb3VnaGx5 IGFraW4gdG8gdGhlIHVuaXhvaWQgbHMoMSkKK2NvbW1hbmQsIGhlbmNlIHRoZSBuYW1lLgorCitA YyBAdHdlcnBkb2MgKGxvY2FsLWRlZmluaXRpb25zLWluKQorQGMgLi4vLi4vaWNlLTkvbHMuZG9j CitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGxvY2FsLWRlZmluaXRpb25zLWluIHJvb3QgbmFt ZXMKK1JldHVybiBhIGxpc3Qgb2YgbmFtZXMgZGVmaW5lZCBsb2NhbGx5IGluIHRoZSBuYW1lZCBz dWJkaXJlY3Rvcnkgb2YKK0B2YXJ7cm9vdH0uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGRl ZmluaXRpb25zLWluKQorQGMgLi4vLi4vaWNlLTkvbHMuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9j ZWR1cmV9IGRlZmluaXRpb25zLWluIHJvb3QgbmFtZXMKK1JldHVybiBhIGxpc3Qgb2YgYWxsIG5h bWVzIGRlZmluZWQgaW4gdGhlIG5hbWVkIHN1YmRpcmVjdG9yeSBvZgorQHZhcntyb290fS4gIFRo ZSBsaXN0IGluY2x1ZGVzIGFsbCBsb2NhbGx5IGRlZmluZWQgbmFtZXMgYXMgd2VsbCBhcworYWxs IG5hbWVzIGluaGVyaXRlZCBmcm9tIGEgbWVtYmVyIG9mIGEgdXNlLWxpc3QuCitAZW5kIGRlZmZu CitAYyBAdHdlcnBkb2MgKGxzKQorQGMgLi4vLi4vaWNlLTkvbHMuZG9jCitAZGVmZm4ge1NjaGVt ZSBQcm9jZWR1cmV9IGxzIFt2YXJpb3VzLXJlZnMuLi5dCitXaXRoIG5vIGFyZ3VtZW50cywgcmV0 dXJuIGEgbGlzdCBvZiBkZWZpbml0aW9ucyBpbiB0aGUgY3VycmVudCBtb2R1bGUuCisKK1dpdGgg anVzdCBvbmUgYXJndW1lbnQsIGludGVycHJldCB0aGF0IGFyZ3VtZW50IGFzIHRoZSBuYW1lIG9m IGEKK3N1YmRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBtb2R1bGUgYW5kIHJldHVybiBhIGxpc3Qg b2YgbmFtZXMgZGVmaW5lZAordGhlcmUuCisKK1dpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwg c3RpbGwgY29tcHV0ZSBzdWJkaXJlY3RvcnkgbGlzdHMsIGJ1dAorcmV0dXJuIGEgbGlzdDoKKwor QHNtYWxsbGlzcAorKCg8c3ViZGlyLW5hbWU+IC4gPG5hbWVzLWRlZmluZWQtdGhlcmU+KQorICg8 c3ViZGlyLW5hbWU+IC4gPG5hbWVzLWRlZmluZWQtdGhlcmU+KQorIC4uLikKK0BlbmQgc21hbGxs aXNwCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGxscykKK0BjIC4uLy4uL2ljZS05L2xzLmRv YworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBsbHMgW3ZhcmlvdXMtcmVmcy4uLl0KK0FuYWxv Z291cyB0byBAY29kZXtsc30sIGJ1dCB3aXRoIGxvY2FsIGRlZmluaXRpb25zIG9ubHkuCitAZW5k IGRlZmZuCitAYyBAdHdlcnBkb2MgKHJlY3Vyc2l2ZS1sb2NhbC1kZWZpbmUpCitAYyAuLi8uLi9p Y2UtOS9scy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcmVjdXJzaXZlLWxvY2FsLWRl ZmluZSBuYW1lIHZhbHVlCitEZWZpbmUgQHZhcntuYW1lfSB0byBoYXZlIHZhbHVlIEB2YXJ7dmFs dWV9LgorQHZhcntuYW1lfSBpcyBhIGxpc3Qgb2Ygc3ltYm9scywgdGhlIGxhc3Qgb25lIGJlaW5n IHRoZQorYmluZGluZyBuYW1lIGFuZCB0aGUgYWxsIHByZXZpb3VzIG9uZXMgYmVpbmcgZWxlbWVu dHMgb2YgdGhlCittb2R1bGUgbmFtZS4KK0BlbmQgZGVmZm4KKworQGMgW1NvbWUgZXhhbXBsZXMg aGVyZSB3b3VsZCBiZSBuaWNlLiAtLXR0bl0KKworQGMgbHMudGV4aSBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL2RvYy9yZWYvbWFwcGluZy50ZXhpIGIvZG9jL3JlZi9tYXBwaW5nLnRleGkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjZjlhMAotLS0gL2Rldi9udWxsCisrKyBi L2RvYy9yZWYvbWFwcGluZy50ZXhpCkBAIC0wLDAgKzEsODAgQEAKK0BjIG1hcHBpbmcudGV4aQor CitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitA YworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1v ZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKK0BjIGFueSBsYXRlciB2ZXJzaW9u IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIG5vCitAYyBJ bnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRleHRzLCBhbmQgbm8gQmFjay1Db3Zl ciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgaW5jbHVkZWQgaW4gdGhlIHNl Y3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLicnCisK K0Bub2RlIE5ldyBIYXNoIE1hcHBpbmdzCitAc2VjdGlvbiBOZXcgSGFzaCBNYXBwaW5ncworCitU byBjcmVhdGUgYW5kIHVzZSBuZXcgaGFzaCB0YWJsZSBtYXBwaW5ncywgZXZhbHVhdGUgdGhlIGZv cm06CisKK0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgbWFwcGluZykpCitAZW5kIHNt YWxsbGlzcAorCitAYyBAdHdlcnBkb2MgKGhhc2gtdGFibGUtbWFwcGluZykKK0BjIC4uLy4uL2lj ZS05L21hcHBpbmcuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGhhc2gtdGFibGUtbWFw cGluZyBbb3B0aW9ucy4uLl0KK1JldHVybiBhIG1hcHBpbmcgb2JqZWN0LCBjb25maWd1cmVkIGJ5 IEB2YXJ7b3B0aW9uc30uCisKK0B2YXJ7b3B0aW9uc30gYXJlIGFsdGVybmF0aW5nIGtleXdvcmRz IGFuZCB2YWx1ZXMsIHBhc3NlZCB0bworQGNvZGV7bWFrZS1oYXNoLXRhYmxlfS4gIFR3byBrZXl3 b3JkcyBhcmUgaGFuZGxlZCBzcGVjaWFsbHk6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gIzpoYXNo MiBAdmFye2hhc2gyfQorQHZhcntoYXNoMn0gaXMgYSBwcm9jZWR1cmUgdGhhdCB0YWtlcyB0d28g YXJndW1lbnRzLCBhIGtleSBhbmQgYW4gaW50ZWdlcgorQHZhcntufS4gIEl0IHNob3VsZCByZXR1 cm4gYW4gaW50ZWdlciBtb2R1bG8gQHZhcntufS4gIElmIHVuc3BlY2lmaWVkLCB0aGUKK2RlZmF1 bHQgaXMgQGNvZGV7aGFzaH0uCisKK0BpdGVtICM6ZXF1YWwgQHZhcntlcXVhbH0KK0B2YXJ7ZXF1 YWx9IGlzIGEgcHJvY2VkdXJlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBu b24tI2YKK2lmIHRoZXkgYXJlIGNvbnNpZGVyZWQgdG8gcmVwcmVzZW50IHRoZSBzYW1lIGtleS4g IElmIHVuc3BlY2lmaWVkLCB0aGUKK2RlZmF1bHQgaXMgQGNvZGV7ZXF1YWw/fS4KK0BlbmQgdGFi bGUKKworVGhlIG1hcHBpbmcgb2JqZWN0IHByaW50cyB1c2luZyBoYXNoIG5vdGF0aW9uOgorCitA ZXhhbXBsZQorKGhhc2gtdGFibGUtbWFwcGluZyAjOnNpemUgMyAjOmVxdWFsIHN0cmluZy1jaT0/ KQorQHJlc3VsdHt9ICM8bWFwcGluZyBoYXNoL3N0cmluZy1jaT0/IDMgNDAyMmZjZjg+CitAZW5k IGV4YW1wbGUKK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAobWFwcGluZy1nZXQtaGFuZGxlKQor QGMgLi4vLi4vaWNlLTkvbWFwcGluZy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbWFw cGluZy1nZXQtaGFuZGxlIG1hcCBrZXkKK1JldHVybiB0aGUgaGFuZGxlIGZyb20gbWFwcGluZyBA dmFye21hcH0gZm9yIEB2YXJ7a2V5fSwgb3IgI2YKK2lmIEB2YXJ7a2V5fSBpcyBub3QgaW4gQHZh cnttYXB9LgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChtYXBwaW5nLWNyZWF0ZS1oYW5kbGUh KQorQGMgLi4vLi4vaWNlLTkvbWFwcGluZy5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0g bWFwcGluZy1jcmVhdGUtaGFuZGxlISBtYXAga2V5IFtkZWZhdWx0XQorUmV0dXJuIHRoZSBoYW5k bGUgZnJvbSBtYXBwaW5nIEB2YXJ7bWFwfSBmb3IgQHZhcntrZXl9LCBvciBpZgorQHZhcntrZXl9 IGlzIG5vdCBpbiBAdmFye21hcH0sIGNyZWF0ZSBhIG5ldyBoYW5kbGUgd2l0aCB2YWx1ZQorQHZh cntkZWZhdWx0fSBhbmQgcmV0dXJuIHRoZSBuZXcgaGFuZGxlLgorQGVuZCBkZWZmbgorQGMgQHR3 ZXJwZG9jIChtYXBwaW5nLXJlbW92ZSEpCitAYyAuLi8uLi9pY2UtOS9tYXBwaW5nLmRvYworQGRl ZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtYXBwaW5nLXJlbW92ZSEgbWFwIGtleQorUmVtb3ZlIEB2 YXJ7a2V5fSBhbmQgaXRzIGFzc29jaWF0ZWQgdmFsdWUgZnJvbSBtYXBwcGluZyBAdmFye21hcH0u CitSZXR1cm4gdGhlIGhhbmRsZS4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAobWFwcGluZy1y ZWYpCitAYyAuLi8uLi9pY2UtOS9tYXBwaW5nLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJl fSBtYXBwaW5nLXJlZiBtYXAga2V5IFtkZWZhdWx0XQorUmV0dXJuIHRoZSB2YWx1ZSBhc3NvY2lh dGVkIHdpdGggQHZhcntrZXl9IGluIG1hcHBpbmcgQHZhcnttYXB9LAorb3IgQHZhcntkZWZhdWx0 fSBpZiB0aGVyZSBpcyBubyBzdWNoIGFzc29jaWF0aW9uLgorQGVuZCBkZWZmbgorQGMgQHR3ZXJw ZG9jIChtYXBwaW5nLXNldCEpCitAYyAuLi8uLi9pY2UtOS9tYXBwaW5nLmRvYworQGRlZmZuIHtT Y2hlbWUgUHJvY2VkdXJlfSBtYXBwaW5nLXNldCEgbWFwIGtleSB2YWwKK0Fzc29jaWF0ZSBAdmFy e2tleX0gd2l0aCBAdmFye3ZhbH0gaW4gbWFwcGluZyBAdmFye21hcH0uCitSZXR1cm4gQHZhcnt2 YWx9LgorQGVuZCBkZWZmbgorCitAYyBtYXBwaW5nLnRleGkgZW5kIGhlcmUKZGlmZiAtLWdpdCBh L2RvYy9yZWYvcG9lLnRleGkgYi9kb2MvcmVmL3BvZS50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjVjMzc3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVmL3BvZS50 ZXhpCkBAIC0wLDAgKzEsNTMgQEAKK0BjIHBvZS50ZXhpCisKK0BjIENvcHlyaWdodCAoQykgMjAx MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0BjCitAYyBQZXJtaXNzaW9uIGlzIGdy YW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKK0Bj IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBW ZXJzaW9uIDEuMyBvcgorQGMgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KK0BjIEludmFyaWFudCBTZWN0aW9ucywgbm8g RnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyIFRleHRzLiAgQQorQGMgY29weSBv ZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBG cmVlCitAYyBEb2N1bWVudGF0aW9uIExpY2Vuc2UuJycKKworQG5vZGUgTWVtb2l6YXRpb24KK0Bz ZWN0aW9uIE1lbW9pemF0aW9uCisKK1RvIG1ha2UgdXNlIG9mIHRoZSBtZW1vaXphdGlvbiBmYWNp bGl0aWVzLCBldmFsdWF0ZSB0aGUgZm9ybToKKworQHNtYWxsbGlzcAorKHVzZS1tb2R1bGVzIChp Y2UtOSBwb2UpKQorQGVuZCBzbWFsbGxpc3AKKworVGhpcyBwcm92aWRlcyB0d28gYGBwdXJpdHkg b2YgZXNzZW5jZScnIFtpbnNlcnQgYWN0dWFsIFZvbm5lZ3V0IGFsbHVzaW9uIGhlcmUsCitzb21l ZGF5LCBvciBub3RdIHByb2NlZHVyZXMgZm9yIG1lbW9pemluZyBAZGZue3B1cmUgZnVuY3Rpb25z fS4KKworQGMgQHR3ZXJwY29tbWVudGFyeSAoaW5jbHVkZSAoaWNlLTkgcG9lKSkKK0EgcHVyZSBm dW5jdGlvbiAob2Ygc29tZSBzb3J0KSBpcyBjaGFyYWN0ZXJpemVkIGJ5IHR3byBlcXVhbGl0eQor cmVsYXRpb25zOiBvbmUgb24gYXJndW1lbnQgbGlzdHMgYW5kIG9uZSBvbiByZXR1cm4gdmFsdWVz LgorQSBwdXJlIGZ1bmN0aW9uIGlzIG9uZSB0aGF0IHdoZW4gYXBwbGllZCB0byBlcXVhbCBhcmd1 bWVudHMgbGlzdHMKK3lpZWxkcyBlcXVhbCByZXN1bHRzLgorCitJZiB0aGUgZXF1YWxpdHkgcmVs YXRpb25zaGlwIG9uIHJldHVybiB2YWx1ZXMgY2FuIGJlIEBjb2Rle2VxP30sIGl0IG1heQorbWFr ZSBzZW5zZSB0byBjYWNoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uLiAgQ2hvb3Np bmcgdGhlIHJpZ2h0CitlcXVhbGl0eSByZWxhdGlvbiBvbiBhcmd1bWVudHMgaXMgdHJpY2t5Lgor CitUaGUgc2ltcGxlc3QgY2FzZSBvZiBwdXJlIGZ1bmN0aW9ucyBhcmUgdGhvc2UgaW4gd2hpY2gg cmVzdWx0cworYXJlIG9ubHkgY2VydGFpbmx5IEBjb2Rle2VxP30gaWYgYWxsIG9mIHRoZSBhcmd1 bWVudHMgYXJlLgorCitAYyBAdHdlcnBkb2MgKHB1cmUtZnVuY3EpCitAYyAuLi8uLi9pY2UtOS9w b2UuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHB1cmUtZnVuY3EgYmFzZQorUmV0dXJu IGEgcHJvY2VkdXJlIEB2YXJ7cGZ9IHRoYXQgd3JhcHMgcHJvY2VkdXJlIEB2YXJ7YmFzZX0sIGFz c29jaWF0aW5nCit0aGUgYXJnIGxpc3Qgb2YgZWFjaCBjYWxsIHRvIEB2YXJ7cGZ9IHRvIGl0cyBy ZXR1cm4gdmFsdWUgaW4gYSBnbG9iYWxseQorc2hhcmVkIChidXQgYm91bmRlZCBub25ldGhlbGVz cykgdGFibGUuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKHBlcmZlY3QtZnVuY3EpCitAYyAu Li8uLi9pY2UtOS9wb2UuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHBlcmZlY3QtZnVu Y3Egc2l6ZSBiYXNlCitSZXR1cm4gYSBwcm9jZWR1cmUgQHZhcntwZn0gdGhhdCB3cmFwcyBwcm9j ZWR1cmUgQHZhcntiYXNlfSwgYXNzb2NpYXRpbmcKK3RoZSBhcmcgbGlzdCBvZiBlYWNoIGNhbGwg dG8gQHZhcntwZn0gdG8gaXRzIHJldHVybiB2YWx1ZSBpbiBhIHByaXZhdGUKK3RhYmxlIG9mIHJv dWdobHkgQHZhcntzaXplfSBlbGVtZW50cy4gIFRodXM6IGBgQSBwdXJlIGZ1bnEgbWF5IHNvbWV0 aW1lcworZm9yZ2V0IGl0cyBwYXN0IGJ1dCBhIHBlcmZlY3QgZnVuY3EgbmV2ZXIgZG9lcy4nJwor QGVuZCBkZWZmbgorCitAYyBwb2UudGV4aSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL2RvYy9yZWYv cG9wZW4udGV4aSBiL2RvYy9yZWYvcG9wZW4udGV4aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zMjAzZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3JlZi9wb3Blbi50ZXhp CkBAIC0wLDAgKzEsNTQgQEAKK0BjIHBvcGVuLnRleGkKKworQGMgQ29weXJpZ2h0IChDKSAyMDEy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQGMKK0BjIFBlcm1pc3Npb24gaXMgZ3Jh bnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAorQGMg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZl cnNpb24gMS4zIG9yCitAYyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworQGMgSW52YXJpYW50IFNlY3Rpb25zLCBubyBG cm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292ZXIgVGV4dHMuICBBCitAYyBjb3B5IG9m IHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZy ZWUKK0BjIERvY3VtZW50YXRpb24gTGljZW5zZS4nJworCitAbm9kZSBBbHRlcm5hdGUgUGlwZXMK K0BzZWN0aW9uIEFsdGVybmF0ZSBQaXBlcworCitUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgcHJv dmlkZSBhbiBpbnRlcmZhY2UgdG8gdGhlIEBjb2Rle3BvcGVufSBhbmQKK0Bjb2Rle3BjbG9zZX0g c3lzdGVtIHJvdXRpbmVzLiAgVGhlIGNvZGUgaXMgaW4gYSBzZXBhcmF0ZSAicG9wZW4iCittb2R1 bGU6CisKK0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgcG9wZW4pKQorQGVuZCBzbWFs bGxpc3AKKworQGZpbmRleCBwb3BlbgorQGMgQHR3ZXJwZG9jIChvcGVuLXBpcGUpCitAYyAuLi8u Li9pY2UtOS9wb3Blbi5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gb3Blbi1waXBlIGNv bW1hbmQgbW9kZQorRXhlY3V0ZSB0aGUgc2hlbGwgY29tbWFuZCBAdmFye2NvbW1hbmR9IChhIHN0 cmluZykgaW4gYSBzdWJwcm9jZXNzLgorQSBwaXBlIHRvIHRoZSBwcm9jZXNzIGlzIGNyZWF0ZWQg YW5kIHJldHVybmVkLiAgQHZhcnttb2Rlc30gc3BlY2lmaWVzCit3aGV0aGVyIGFuIGlucHV0IG9y IG91dHB1dCBwaXBlIHRvIHRoZSBwcm9jZXNzIGlzIGNyZWF0ZWQ6IGl0IHNob3VsZAorYmUgdGhl IHZhbHVlIG9mIEBjb2Rle09QRU5fUkVBRH0gb3IgQGNvZGV7T1BFTl9XUklURX0uCitAZW5kIGRl ZmZuCisKK0BjIEB0d2VycGRvYyAob3Blbi1pbnB1dC1waXBlKQorQGMgLi4vLi4vaWNlLTkvcG9w ZW4uZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IG9wZW4taW5wdXQtcGlwZSBjb21tYW5k CitFcXVpdmFsZW50IHRvIEBjb2Rle29wZW4tcGlwZX0gd2l0aCBtb2RlIEBjb2Rle09QRU5fUkVB RH0uCitAZW5kIGRlZmZuCisKK0BjIEB0d2VycGRvYyAob3Blbi1vdXRwdXQtcGlwZSkKK0BjIC4u Ly4uL2ljZS05L3BvcGVuLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBvcGVuLW91dHB1 dC1waXBlIGNvbW1hbmQKK0VxdWl2YWxlbnQgdG8gQGNvZGV7b3Blbi1waXBlfSB3aXRoIG1vZGUg QGNvZGV7T1BFTl9XUklURX0uCitAZW5kIGRlZmZuCisKK0BmaW5kZXggcGNsb3NlCitAYyBAdHdl cnBkb2MgKGNsb3NlLXBpcGUpCitAYyAuLi8uLi9pY2UtOS9wb3Blbi5kb2MKK0BkZWZmbiB7U2No ZW1lIFByb2NlZHVyZX0gY2xvc2UtcGlwZSBwCitDbG9zZSB0aGUgcGlwZSBjcmVhdGVkIGJ5IEBj b2Rle29wZW4tcGlwZX0sIHdhaXQgZm9yIHRoZSBwcm9jZXNzCit0byB0ZXJtaW5hdGUsIGFuZCBy ZXR1cm4gaXRzIHN0YXR1cyB2YWx1ZS4gIEB4cmVme1Byb2Nlc3Nlcywgd2FpdHBpZH0sCitmb3Ig aW5mb3JtYXRpb24gb24gaG93IHRvIGludGVycHJldCB0aGlzIHZhbHVlLgorQGVuZCBkZWZmbgor CitAYyBwb3Blbi50ZXhpIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvZG9jL3JlZi9ydW5xLnRleGkg Yi9kb2MvcmVmL3J1bnEudGV4aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m NjZlMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3JlZi9ydW5xLnRleGkKQEAgLTAsMCArMSwx MzcgQEAKK0BjIHJ1bnEudGV4aQorCitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCitAYworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHks IGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IK K0BjIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyB3aXRoIG5vCitAYyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRl eHRzLCBhbmQgbm8gQmFjay1Db3ZlciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxpY2Vuc2Ug aXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMgRG9jdW1l bnRhdGlvbiBMaWNlbnNlLicnCisKK0Bub2RlIFJ1biBRdWV1ZXMKK0BzZWN0aW9uIFJ1biBRdWV1 ZXMKKworVG8gdXNlIGEgc3BlY2lhbCBraW5kIG9mIHF1ZXVlIChAcHhyZWZ7UXVldWVzfSkgZm9y IHNjaGVkdWxpbmcgcGFyYWxsZWwKK2NvbXB1dGF0aW9ucywgZXZhbHVhdGUgdGhlIGZvcm06CisK K0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgcnVucSkpCitAZW5kIHNtYWxsbGlzcAor CitAYyBAdHdlcnBjb21tZW50YXJ5ICh2ZXJiYXRpbSAoaWNlLTkgcnVucSkpCitAdmVyYmF0aW0K K09uZSB3YXkgdG8gc2NoZWR1bGUgcGFyYWxsZWwgY29tcHV0YXRpb25zIGluIGEgc2VyaWFsIGVu dmlyb25tZW50IGlzCit0byBleHBsaWNpdGx5IGRpdmlkZSBlYWNoIHRhc2sgdXAgaW50byBzbWFs bCwgZmluaXRlIGV4ZWN1dGlvbiB0aW1lLAorc3RyaXBzLiAgVGhlbiB5b3UgaW50ZXJsZWF2ZSB0 aGUgZXhlY3V0aW9uIG9mIHN0cmlwcyBmcm9tIHZhcmlvdXMKK3Rhc2tzIHRvIGFjaGlldmUgYSBr aW5kIG9mIHBhcmFsbGVsaXNtLiAgUnVucXMgYXJlIGEgaGFuZHkgZGF0YQorc3RydWN0dXJlIGZv ciB0aGlzIHN0eWxlIG9mIHByb2dyYW1taW5nLgorCitXZSB1c2UgdGh1bmtzIChudWxsYXJ5IHBy b2NlZHVyZXMpIGFuZCBsaXN0cyBvZiB0aHVua3MgdG8gcmVwcmVzZW50CitzdHJpcHMuICBCeSBj b252ZW50aW9uLCB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgc3RyaXAtdGh1bmsgbXVzdCBlaXRoZXIK K2JlIGFub3RoZXIgc3RyaXAgb3IgdGhlIHZhbHVlICNmLgorCitBIHJ1bnEgaXMgYSBwcm9jZWR1 cmUgdGhhdCBtYW5hZ2VzIGEgcXVldWUgb2Ygc3RyaXBzLiAgQ2FsbGVkIHdpdGggbm8KK2FyZ3Vt ZW50cywgaXQgcHJvY2Vzc2VzIG9uZSBzdHJpcCBmcm9tIHRoZSBxdWV1ZS4gIENhbGxlZCB3aXRo Cithcmd1bWVudHMsIHRoZSBhcmd1bWVudHMgZm9ybSBhIGNvbnRyb2wgbWVzc2FnZSBmb3IgdGhl IHF1ZXVlLiAgVGhlCitmaXJzdCBhcmd1bWVudCBpcyBhIHN5bWJvbCB3aGljaCBpcyB0aGUgbWVz c2FnZSBzZWxlY3Rvci4KKworQSBzdHJpcCBpcyBwcm9jZXNzZWQgdGhpcyB3YXk6IElmIHRoZSBz dHJpcCBpcyBhIHRodW5rLCB0aGUgdGh1bmsgaXMKK2NhbGxlZCAtLSBpZiBpdCByZXR1cm5zIGEg c3RyaXAsIHRoYXQgc3RyaXAgaXMgYWRkZWQgYmFjayB0byB0aGUKK3F1ZXVlLiAgVG8gcHJvY2Vz cyBhIHN0cmlwIHdoaWNoIGlzIGEgbGlzdCBvZiB0aHVua3MsIHRoZSBDQVIgb2YgdGhhdAorbGlz dCBpcyBjYWxsZWQuICBBZnRlciBhIGNhbGwgdG8gdGhhdCBDQVIsIHRoZXJlIGFyZSAwLCAxLCBv ciAyIHN0cmlwcworLS0gcGVyaGFwcyBvbmUgcmV0dXJuZWQgYnkgdGhlIHRodW5rLCBhbmQgcGVy aGFwcyB0aGUgQ0RSIG9mIHRoZQorb3JpZ2luYWwgc3RyaXAgaWYgdGhhdCBzdHJpcCBoYXMgMisg ZWxlbWVudHMuICBUaGUgcnVucSBwdXRzIHdoaWNoZXZlcgorb2YgdGhlc2Ugc3RyaXBzIGV4aXN0 IGJhY2sgb24gdGhlIHF1ZXVlLiAgKFRoZSBleGFjdCBvcmRlciBpbiB3aGljaAorc3RyaXBzIGFy ZSBwdXQgYmFjayBvbiB0aGUgcXVldWUgZGV0ZXJtaW5lcyB0aGUgc2NoZWR1bGluZyBiZWhhdmlv ciBvZgorYSBwYXJ0aWN1bGFyIHF1ZXVlIC0tIGl0J3MgYSBwYXJhbWV0ZXIuKQorQGVuZCB2ZXJi YXRpbQorCitAYyBAdHdlcnBkb2MgKHJ1bnEtY29udHJvbCkKK0BjIC4uLy4uL2ljZS05L3J1bnEu ZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHJ1bnEtY29udHJvbCBxIG1zZyBbYXJncy4u Ll0KK0ZvciBydW5xIEB2YXJ7cX0sIHByb2Nlc3MgaW4gdGhlIGRlZmF1bHQgd2F5IHRoZSBjb250 cm9sCittZXNzYWdlIEB2YXJ7bXNnfSAoYSBzeW1ib2wpIGFuZCBpdHMgQHZhcnthcmdzfS4gIFRo ZXNlCittZXNzYWdlcyBhcmUgcmVjb2duaXplZDoKKworQHRhYmxlIEBjb2RlCitAaXRlbSBhZGQh CitAaXRlbXggZW5xdWV1ZSEKK0VucXVldWUgQHZhcnthcmdzfSBhcyBzdHJpcHMuCisKK0BpdGVt IHB1c2ghCitBZGQgQHZhcnthcmdzfSBhcyBzdHJpcHMgdG8gdGhlIGZyb250IG9mIHRoZSBxdWV1 ZS4KKworQGl0ZW0gZW1wdHk/CitSZXR1cm4gI3QgaWZmIHRoZSBydW5xIGlzIGVtcHR5LgorCitA aXRlbSBsZW5ndGgKK1JldHVybiB0aGUgbnVtYmVyIG9mIHN0cmlwcyBpbiB0aGUgcnVucS4KKwor QGl0ZW0ga2lsbCEKK0VtcHR5IHRoZSBydW5xLgorQGVuZCB0YWJsZQorCitTaWduYWwgZXJyb3Ig Zm9yIGFueSBvdGhlciBtZXNzYWdlLCB3aXRoIGtleSBAY29kZXtub3QtdW5kZXJzdG9vZH0KK2Fu ZCB0d28gYXJndW1lbnRzIEB2YXJ7bXNnfSBhbmQgQHZhcnthcmdzfS4KK0BlbmQgZGVmZm4KK0Bj IEB0d2VycGRvYyAobWFrZS12b2lkLXJ1bnEpCitAYyAuLi8uLi9pY2UtOS9ydW5xLmRvYworQGRl ZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtYWtlLXZvaWQtcnVucQorUmV0dXJuIGEgcnVucSB0aGF0 IGRpc2NhcmRzIGFsbCBtZXNzYWdlcyBleGNlcHQgQGNvZGV7bGVuZ3RofSwKK2ZvciB3aGljaCBp dCByZXR1cm5zIDAuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKG1ha2UtZmFpci1ydW5xKQor QGMgLi4vLi4vaWNlLTkvcnVucS5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gbWFrZS1m YWlyLXJ1bnEKK1JldHVybiBhIHJ1bnEgcHJvY2VkdXJlLgorQ2FsbGVkIHdpdGggbm8gYXJndW1l bnRzLCB0aGUgcHJvY2VkdXJlIHByb2Nlc3NlcyBvbmUgc3RyaXAgZnJvbSB0aGUgcXVldWUuCitD YWxsZWQgd2l0aCBhcmd1bWVudHMsIGl0IHVzZXMgQGNvZGV7cnVucS1jb250cm9sfS4KKworSW4g YSBmYWlyIHJ1bnEsIGlmIGEgc3RyaXAgcmV0dXJucyBhIG5ldyBzdHJpcCBAY29kZXtYfSwgdGhh dCBpcyBhZGRlZAordG8gdGhlIGVuZCBvZiB0aGUgcXVldWUsIG1lYW5pbmcgaXQgd2lsbCBiZSB0 aGUgbGFzdCB0byBleGVjdXRlCitvZiBhbGwgdGhlIHJlbWFpbmluZyBzdHJpcHMuCitAZW5kIGRl ZmZuCitAYyBAdHdlcnBkb2MgKG1ha2UtZXhjbHVzaXZlLXJ1bnEpCitAYyAuLi8uLi9pY2UtOS9y dW5xLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtYWtlLWV4Y2x1c2l2ZS1ydW5xCitS ZXR1cm4gYSBydW5xIHByb2NlZHVyZS4KK0NhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgdGhlIHBy b2NlZHVyZSBwcm9jZXNzZXMgb25lIHN0cmlwIGZyb20gdGhlIHF1ZXVlLgorQ2FsbGVkIHdpdGgg YXJndW1lbnRzLCBpdCB1c2VzIEBjb2Rle3J1bnEtY29udHJvbH0uCisKK0luIGFuIGV4Y2x1c2l2 ZSBydW5xLCBpZiBhIHN0cmlwIEBjb2Rle1d9IHJldHVybnMgYSBuZXcgc3RyaXAgQGNvZGV7WH0s CitAY29kZXtYfSBpcyBhZGRlZCB0byB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLCBtZWFuaW5nIGl0 IHdpbGwgYmUgdGhlIG5leHQgdG8KK2V4ZWN1dGUgb2YgYWxsIHRoZSByZW1haW5pbmcgcHJvY2Vk dXJlcy4KKworQW4gZXhjZXB0aW9uIHRvIHRoaXMgb2NjdXJzIGlmIEBjb2Rle1d9IHdhcyB0aGUg QHNje2Nhcn0gb2YgYSBsaXN0IG9mCitzdHJpcHMuICBJbiB0aGF0IGNhc2UsIGFmdGVyIEBjb2Rl e1h9IGlzIHB1c2hlZCBvbnRvIHRoZSBmcm9udCBvZiB0aGUKK3F1ZXVlLCB0aGUgQHNje2Nkcn0g b2YgdGhlIGxpc3Qgb2Ygc3RyaXBzIGlzIHB1c2hlZCBpbiBmcm9udCBvZiB0aGF0IChpZgordGhl IEBzY3tjZHJ9IGlzIG5vdCBlbXB0eSkuICBUaGlzIHdheSwgdGhlIHJlc3Qgb2YgdGhlIHRodW5r cyBpbiB0aGUgbGlzdAordGhhdCBjb250YWluZWQgQGNvZGV7V30gaGF2ZSBwcmlvcml0eSBvdmVy IEBjb2Rle1h9LgorQGVuZCBkZWZmbgorQGMgQHR3ZXJwZG9jIChtYWtlLXN1Ym9yZGluYXRlLXJ1 bnEtdG8pCitAYyAuLi8uLi9pY2UtOS9ydW5xLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJl fSBtYWtlLXN1Ym9yZGluYXRlLXJ1bnEtdG8gc3VwZXJpb3IgYmFzaWMtaW5mZXJpb3IKK1JldHVy biBhIHJ1bnEgcHJveHkgZm9yIHRoZSBydW5xIEB2YXJ7YmFzaWMtaW5mZXJpb3J9LgorCitUaGUg cHJveHkgd2F0Y2hlcyBmb3Igb3BlcmF0aW9ucyBvbiBAdmFye2Jhc2ljLWluZmVyaW9yfSB0aGF0 IGNhdXNlCithIHRyYW5zaXRpb24gZnJvbSBhIHF1ZXVlIGxlbmd0aCBvZiAwIHRvIGEgbm9uLXpl cm8gbGVuZ3RoIGFuZAordmljZSB2ZXJzYS4gICBXaGlsZSBAdmFye2Jhc2ljLWluZmVyaW9yfSBp cyBub3QgZW1wdHksCit0aGUgcHJveHkgaW5zdGFsbHMgYSB0YXNrIG9uIHRoZSBAdmFye3N1cGVy aW9yfSBydW5xLiAgRWFjaCBzdHJpcAorb2YgdGhhdCB0YXNrIHByb2Nlc3NlcyBAY29kZXtOfSBz dHJpcHMgZnJvbSBAdmFye2Jhc2ljLWluZmVyaW9yfSB3aGVyZQorQGNvZGV7Tn0gaXMgdGhlIGxl bmd0aCBvZiBAdmFye2Jhc2ljLWluZmVyaW9yfSB3aGVuIHRoZSBwcm94eQorc3RyaXAgaXMgZW50 ZXJlZC4gIFtDb3VudGxlc3Mgc2NoZWR1bGluZyB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZS5dCitA ZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKHN0cmlwLXNlcXVlbmNlKQorQGMgLi4vLi4vaWNlLTkv cnVucS5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gc3RyaXAtc2VxdWVuY2UgW3N0cmlw cy4uLl0KK1JldHVybiBhIG5ldyBzdHJpcCB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBA dmFye3N0cmlwc30uCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKGZhaXItc3RyaXAtc3VidGFz aykKK0BjIC4uLy4uL2ljZS05L3J1bnEuZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGZh aXItc3RyaXAtc3VidGFzayBbaW5pdGlhbC1zdHJpcHMuLi5dCitSZXR1cm4gYSBuZXcgc3RyaXAg d2hpY2ggaXMgdGhlIHN5bmNocm9ub3VzLCBmYWlyLAorcGFyYWxsZWwgZXhlY3V0aW9uIG9mIHRo ZSBAdmFye2luaXRpYWwtc3RyaXBzfS4KK0BlbmQgZGVmZm4KKworQGMgcnVucS50ZXhpIGVuZHMg aGVyZQpkaWZmIC0tZ2l0IGEvZG9jL3JlZi9zZXNzaW9uLnRleGkgYi9kb2MvcmVmL3Nlc3Npb24u dGV4aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTllNzkwCi0tLSAvZGV2 L251bGwKKysrIGIvZG9jL3JlZi9zZXNzaW9uLnRleGkKQEAgLTAsMCArMSwxMTMgQEAKK0BjIHNl c3Npb24udGV4aQorCitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCitAYworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1 dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKK0BjIGFueSBs YXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3 aXRoIG5vCitAYyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVyIFRleHRzLCBhbmQg bm8gQmFjay1Db3ZlciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgaW5jbHVk ZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMgRG9jdW1lbnRhdGlvbiBM aWNlbnNlLicnCisKK0Bub2RlIFByZWxvYWRlZCBNb2R1bGVzIGZvciBJbnRlcmFjdGl2ZSBTZXNz aW9ucworQHNlY3Rpb24gUHJlbG9hZGVkIE1vZHVsZXMgZm9yIEludGVyYWN0aXZlIFNlc3Npb25z CisKK0ZvciBjb252ZW5pZW5jZSwgc2V2ZXJhbCBtb2R1bGVzIHByZS1sb2FkZWQgZm9yIGludGVy YWN0aXZlIHNlc3Npb25zCisoQHB4cmVme1J1bm5pbmcgR3VpbGUgSW50ZXJhY3RpdmVseX0pLiAg UHJpbWFyaWx5LCB0aGUgbW9kdWxlIEBjb2RleyhpY2UtOQorc2Vzc2lvbil9IHByb3ZpZGVzIHBy b2NlZHVyZXMgdG8gZXh0ZW5kIEBjb2RleyVsb2FkLXBhdGh9LCBhY2Nlc3MKK2RvY3VtZW50YXRp b24sIHNlYXJjaCBmb3Igc3ltYm9sIG5hbWVzLCBldGMuLCB1c2VmdWwgZm9yIGV4cGxvcmF0aW9u LgorT3RoZXIgbW9kdWxlcyBhcmUgbm90IGRvY3VtZW50ZWQgYXQgdGhpcyB0aW1lLgorCitCZWNh dXNlIHRoZXNlIG1vZHVsZXMgYXJlIHByZWxvYWRlZCwgeW91IGRvIG5vdCBuZWVkIHRvIGRvIGFu eXRoaW5nCitzcGVjaWFsIHRvIHVzZSB0aGVtIGR1cmluZyBhbiBpbnRlcmFjdGl2ZSBzZXNzaW9u LiAgRm9yIHNjcmlwdHMsCitob3dldmVyLCB5b3UgY2FuIGxvYWQgdGhlbSBleHBsaWNpdGx5IHdp dGggdGhlIGV4cHJlc3Npb246CisKK0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgc2Vz c2lvbikpCitAZW5kIHNtYWxsbGlzcAorCitUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gZGVzY3Jp YmVzIHRoZSBwcm9jZWR1cmVzIGFuZCBtYWNyb3MgYXZhaWxhYmxlCitieSBsb2FkaW5nIG1vZHVs ZSBAY29kZXsoaWNlLTkgc2Vzc3Npb24pfS4KKworQGMgQHR3ZXJwZG9jIChhZGQtdG8tbG9hZC1w YXRoISkKK0BjIC4uLy4uL2ljZS05L3Nlc3Npb24uZG9jCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1 cmV9IGFkZC10by1sb2FkLXBhdGghIGRpcmVjdG9yeSBbYXBwZW5kP10KK0FkZCBAdmFye2RpcmVj dG9yeX0gdG8gQGNvZGV7JWxvYWQtcGF0aH0sIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHRoZXJlLgor QWRkIGF0IHRoZSBiZWdpbm5pbmcsIHVubGVzcyBvcHRpb25hbCBhcmcgQHZhcnthcHBlbmQ/fSBp cyBub24tI2YuCitAZW5kIGRlZmZuCitAYyBAdHdlcnBkb2MgKHNldC1mYW5jeS1yZXBsLXByb21w dCEpCitAYyAuLi8uLi9pY2UtOS9zZXNzaW9uLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJl fSBzZXQtZmFuY3ktcmVwbC1wcm9tcHQhIGZvcm1hdC1zdHJpbmcKK1NldCB0aGUgcmVwbCBwcm9t cHQgYmFzZWQgb24gQHZhcntmb3JtYXQtc3RyaW5nfS4KK0VhY2ggY2hhcmFjdGVyIGluIEB2YXJ7 Zm9ybWF0LXN0cmluZ30gc3RhbmRzIGZvciBpdHNlbGYsCit3aXRoIHRoZSBleGNlcHRpb24gb2Yg dGhlIGZvbGxvd2luZyB0aWxkZSBlc2NhcGVzOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIH5NCitT dGFuZHMgZm9yIHRoZSBgYGN1cnJlbnQgbW9kdWxlJycuCitAZW5kIHRhYmxlCitAZW5kIGRlZmZu CisKK0BjIEZJWE1FOiBndWlsZS10b29scyByZWFkLXNjaGVtZS1zb3VyY2UgZG9lcyBub3QgZ3Jv ayBgcHJvY2VkdXJlLT5zeW50YXgnLgorQGRlZmZuIHtTY2hlbWUgTWFjcm99IGhlbHAgW2FyZ3Mu Li5dCitEaXNwbGF5IHZhcmlvdXMgZm9ybXMgb2YgaGVscCBkZXBlbmRpbmcgb24gQHZhcnthcmdz fSwgb3IgYQorZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgQGNvZGV7aGVscH0gdXNhZ2UgaWYgZ2l2 ZW4gbm8gYXJncy4KK0BlbmQgZGVmZm4KKworQGMgQHR3ZXJwZG9jIChhcHJvcG9zKQorQGMgLi4v Li4vaWNlLTkvc2Vzc2lvbi5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gYXByb3BvcyBy Z3ggW29wdGlvbnMuLi5dCitTZWFyY2ggZm9yIGJpbmRpbmdzIG1hdGNoaW5nIEB2YXJ7cmd4fSwg YSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLgorQHZhcntvcHRpb25zfSBhcmUgc3ltYm9sczog QGNvZGV7ZnVsbH0sIEBjb2Rle3NoYWRvd30sIEBjb2Rle3ZhbHVlfS4KK0BlbmQgZGVmZm4KK0Bj IEB0d2VycGRvYyAoYXByb3Bvcy1pbnRlcm5hbCkKK0BjIC4uLy4uL2ljZS05L3Nlc3Npb24uZG9j CitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGFwcm9wb3MtaW50ZXJuYWwgcmd4CitSZXR1cm4g YSBsaXN0IG9mIGFjY2Vzc2libGUgdmFyaWFibGUgbmFtZXMgZm9yIEB2YXJ7cmd4fS4KK0BlbmQg ZGVmZm4KK0BjIEB0d2VycGRvYyAoYXByb3Bvcy1mb2xkKQorQGMgLi4vLi4vaWNlLTkvc2Vzc2lv bi5kb2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gYXByb3Bvcy1mb2xkIHByb2MgaW5pdCBy Z3ggZm9sZGVyCitGb2xkIFBST0NFRFVSRSBvdmVyIGJpbmRpbmdzIG1hdGNoaW5nIHRoaXJkIGFy ZyBSRUdFWFAuCisKK1Jlc3VsdCBpcworCitAZXhhbXBsZQorICAoUFJPQ0VEVVJFIE1PRFVMRTEg TkFNRTEgVkFMVUUxCisgICAgKFBST0NFRFVSRSBNT0RVTEUyIE5BTUUyIFZBTFVFMgorICAgICAg Li4uCisgICAgICAoUFJPQ0VEVVJFIE1PRFVMRW4gTkFNRW4gVkFMVUVuIElOSVQpKSkKK0BlbmQg ZXhhbXBsZQorCit3aGVyZSBJTklUIGlzIHRoZSBzZWNvbmQgYXJnIHRvIGBhcHJvcG9zLWZvbGQn LgorCitGb3VydGggYXJnIEZPTERFUiBpcyBvbmUgb2YKKworQGV4YW1wbGUKKyAgKGFwcm9wb3Mt Zm9sZC1hY2Nlc3NpYmxlIE1PRFVMRSkgO2ZvbGQgb3ZlciBiaW5kaW5ncyBhY2Nlc3NpYmxlIGlu IE1PRFVMRQorICBhcHJvcG9zLWZvbGQtZXhwb3J0ZWQgICAgICAgICAgICA7Zm9sZCBvdmVyIGFs bCBleHBvcnRlZCBiaW5kaW5ncworICBhcHJvcG9zLWZvbGQtYWxsICAgICAgICAgICAgICAgICA7 Zm9sZCBvdmVyIGFsbCBiaW5kaW5ncworQGVuZCBleGFtcGxlCitAZW5kIGRlZmZuCitAYyBAdHdl cnBkb2MgKGFwcm9wb3MtZm9sZC1hY2Nlc3NpYmxlKQorQGMgLi4vLi4vaWNlLTkvc2Vzc2lvbi5k b2MKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gYXByb3Bvcy1mb2xkLWFjY2Vzc2libGUgbW9k dWxlCitGSVhNRTogRG9jcyBpbmNvbXBsZXRlLgorQGVuZCBkZWZmbgorQGMgKyBAdHdlcnBkb2Mg KGFwcm9wb3MtZm9sZC1leHBvcnRlZCkKK0BjICsgQHR3ZXJwZG9jIChhcHJvcG9zLWZvbGQtYWxs KQorQGMgQHR3ZXJwZG9jIChzb3VyY2UpCitAYyAuLi8uLi9pY2UtOS9zZXNzaW9uLmRvYworQGRl ZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBzb3VyY2Ugb2JqCitSZXR1cm4gdGhlIHNvdXJjZSBjb2Rl IGZvciBAdmFye29ian0sIGEgcHJvY2VkdXJlIG9yIG1hY3JvLgorVGhlIHNvdXJjZSBjb2RlIGlz IGFuIGFjeWNsaWMgc3RydWN0dXJlZCBleHByZXNzaW9uICh0cmVlIG9mIHN5bWJvbHMsIGV0Yyku CitJZiBAdmFye29ian0gZG9lcyBub3QgaGF2ZSBzb3VyY2UgY29kZSBhc3NvY2lhdGVkIHdpdGgg aXQsIHJldHVybiAjZi4KK0BlbmQgZGVmZm4KK0BjIEB0d2VycGRvYyAoYXJpdHkpCitAYyAuLi8u Li9pY2UtOS9zZXNzaW9uLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBhcml0eSBwcm9j CitEaXNwbGF5IHRoZSBhcml0eSBvZiBwcm9jZWR1cmUgQHZhcntwcm9jfS4KK0BlbmQgZGVmZm4K K0BjICsgQHR3ZXJwZG9jIChzeXN0ZW0tbW9kdWxlKQorCitAYyBzZXNzaW9uLnRleGkgZW5kcyBo ZXJlCmRpZmYgLS1naXQgYS9kb2MvcmVmL3N0YWNrLWNhdGNoLnRleGkgYi9kb2MvcmVmL3N0YWNr LWNhdGNoLnRleGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2MjY4Ywot LS0gL2Rldi9udWxsCisrKyBiL2RvYy9yZWYvc3RhY2stY2F0Y2gudGV4aQpAQCAtMCwwICsxLDEz NSBAQAorQGMgc3RhY2stY2F0Y2gudGV4aQorCitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitAYworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRv IGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAx LjMgb3IKK0BjIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyB3aXRoIG5vCitAYyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNv dmVyIFRleHRzLCBhbmQgbm8gQmFjay1Db3ZlciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxp Y2Vuc2UgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMg RG9jdW1lbnRhdGlvbiBMaWNlbnNlLicnCisKK0Bub2RlIExhenkgQ2F0Y2gKK0BzZWN0aW9uIENh dGNoIFdpdGhvdXQgVW53aW5kaW5nCisKK0EgQGRmbntsYXp5IGNhdGNofSBpcyB1c2VkIGluIHRo ZSBzYW1lIHdheSBhcyBhIG5vcm1hbCBAY29kZXtjYXRjaH0sCit3aXRoIEB2YXJ7a2V5fSwgQHZh cnt0aHVua30gYW5kIEB2YXJ7aGFuZGxlcn0gYXJndW1lbnRzIHNwZWNpZnlpbmcgdGhlCitleGNl cHRpb24gdHlwZSwgbm9ybWFsIGNhc2UgY29kZSBhbmQgaGFuZGxlciBwcm9jZWR1cmUsIGJ1dCBk aWZmZXJzIGluCitvbmUgaW1wb3J0YW50IHJlc3BlY3Q6IHRoZSBoYW5kbGVyIHByb2NlZHVyZSBp cyBleGVjdXRlZCB3aXRob3V0Cit1bndpbmRpbmcgdGhlIGNhbGwgc3RhY2sgZnJvbSB0aGUgY29u dGV4dCBvZiB0aGUgQGNvZGV7dGhyb3d9IGV4cHJlc3Npb24KK3RoYXQgY2F1c2VkIHRoZSBoYW5k bGVyIHRvIGJlIGludm9rZWQuCisKK0BjIEB0d2VycGRvYyAobGF6eS1jYXRjaCAoQyBzY21fbGF6 eV9jYXRjaCkpCitAYyAuLi8uLi9saWJndWlsZS90aHJvdy5kb2MKK0BkZWZmbiB7U2NoZW1lIFBy b2NlZHVyZX0gbGF6eS1jYXRjaCB0YWcgdGh1bmsgaGFuZGxlcgorQGRlZmZueCB7QyBGdW5jdGlv bn0gc2NtX2xhenlfY2F0Y2ggKHRhZywgdGh1bmssIGhhbmRsZXIpCitCZWhhdmUgbGlrZSBAY29k ZXtjYXRjaH0sIGV4Y2VwdCB0aGF0IHRoZSBzdGFjayBpcworbm90IHVud291bmQgYmVmb3JlIGlu dm9raW5nIEB2YXJ7aGFuZGxlcn0uCitUaGUgQHZhcntoYW5kbGVyfSBwcm9jZWR1cmUgaXMgbm90 IGFsbG93ZWQgdG8gcmV0dXJuOworaXQgbXVzdCB0aHJvdyB0byBhbm90aGVyIGNhdGNoLCBvciBv dGhlcndpc2UgZXhpdCBub24tbG9jYWxseS4KK0BlbmQgZGVmZm4KKworVHlwaWNhbGx5LCBAdmFy e2hhbmRsZXJ9IHNob3VsZCBzYXZlIGFueSBkZXNpcmVkIHN0YXRlIGFzc29jaWF0ZWQgd2l0aAor dGhlIHN0YWNrIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29ycmVzcG9uZGluZyBAY29kZXt0aHJv d30gb2NjdXJyZWQsCithbmQgdGhlbiB0aHJvdyBhbiBleGNlcHRpb24gaXRzZWxmIC0tLSB1c3Vh bGx5IHRoZSBzYW1lIGV4Y2VwdGlvbiBhcyB0aGUKK29uZSBpdCBjYXVnaHQuICBJZiBAdmFye2hh bmRsZXJ9IGlzIGludm9rZWQgYW5kIGRvZXMgQGVtcGh7bm90fSB0aHJvdyBhbgorZXhjZXB0aW9u LCBHdWlsZSBpdHNlbGYgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aXRoIGtleSBAY29kZXttaXNjLWVy cm9yfS4KKworTm90IHVud2luZGluZyB0aGUgc3RhY2sgbWVhbnMgdGhhdCB0aHJvd2luZyBhbiBl eGNlcHRpb24gdGhhdCBpcyBjYXVnaHQKK2J5IGEgQGNvZGV7bGF6eS1jYXRjaH0gaXMgQGVtcGh7 YWxtb3N0fSBlcXVpdmFsZW50IHRvIGNhbGxpbmcgdGhlCitAY29kZXtsYXp5LWNhdGNofSdzIGhh bmRsZXIgaW5saW5lIGluc3RlYWQgb2YgZWFjaCBAY29kZXt0aHJvd30sIGFuZAordGhlbiBvbWl0 dGluZyB0aGUgc3Vycm91bmRpbmcgQGNvZGV7bGF6eS1jYXRjaH0uICBJbiBvdGhlciB3b3JkcywK KworQGxpc3AKKyhsYXp5LWNhdGNoICdrZXkKKyAgKGxhbWJkYSAoKSBAZG90c3t9ICh0aHJvdyAn a2V5IGFyZ3MgQGRvdHN7fSkgQGRvdHN7fSkKKyAgaGFuZGxlcikKK0BlbmQgbGlzcAorCitAbm9p bmRlbnQKK2lzIEBlbXBoe2FsbW9zdH0gZXF1aXZhbGVudCB0bworCitAbGlzcAorKChsYW1iZGEg KCkgQGRvdHN7fSAoaGFuZGxlciAna2V5IGFyZ3MgQGRvdHN7fSkgQGRvdHN7fSkpCitAZW5kIGxp c3AKKworQG5vaW5kZW50CitCdXQgd2h5IG9ubHkgQGVtcGh7YWxtb3N0fT8gIFRoZSBkaWZmZXJl bmNlIGlzIHRoYXQgd2l0aAorQGNvZGV7bGF6eS1jYXRjaH0gKGFzIHdpdGggbm9ybWFsIEBjb2Rl e2NhdGNofSksIHRoZSBkeW5hbWljIGNvbnRleHQgaXMKK3Vud291bmQgYmFjayB0byBqdXN0IG91 dHNpZGUgdGhlIEBjb2Rle2xhenktY2F0Y2h9IGV4cHJlc3Npb24gYmVmb3JlCitpbnZva2luZyB0 aGUgaGFuZGxlci4gIChGb3IgYW4gaW50cm9kdWN0aW9uIHRvIHdoYXQgaXMgbWVhbnQgYnkgZHlu YW1pYworY29udGV4dCwgQHhyZWZ7RHluYW1pYyBXaW5kfS4pCisKK1RoZW4sIHdoZW4gdGhlIGhh bmRsZXIgQGVtcGh7aXRzZWxmfSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB0aGF0IGV4Y2VwdGlvbgor bXVzdCBiZSBjYXVnaHQgYnkgc29tZSBraW5kIG9mIEBjb2Rle2NhdGNofSAoaW5jbHVkaW5nIHBl cmhhcHMgYW5vdGhlcgorQGNvZGV7bGF6eS1jYXRjaH0pIGhpZ2hlciB1cCB0aGUgY2FsbCBzdGFj ay4KKworVGhlIGR5bmFtaWMgY29udGV4dCBhbHNvIGluY2x1ZGVzIEBjb2Rle3dpdGgtZmx1aWRz fSBibG9ja3MgQHhyZWZ7Rmx1aWRzCithbmQgRHluYW1pYyBTdGF0ZXN9LCBzbyB0aGUgZWZmZWN0 IG9mIHVud2luZGluZyB0aGUgZHluYW1pYyBjb250ZXh0IGNhbgorYWxzbyBiZSBzZWVuIGluIGZs dWlkIHZhcmlhYmxlIHZhbHVlcy4gIFRoaXMgaXMgaWxsdXN0cmF0ZWQgYnkgdGhlCitmb2xsb3dp bmcgY29kZSwgaW4gd2hpY2ggdGhlIG5vcm1hbCBjYXNlIHRodW5rIHVzZXMgQGNvZGV7d2l0aC1m bHVpZHN9Cit0byB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIHZhbHVlIG9mIGEgZmx1aWQ6CisKK0Bs aXNwCisoZGVmaW5lIGYgKG1ha2UtZmx1aWQpKQorKGZsdWlkLXNldCEgZiAidG9wIGxldmVsIHZh bHVlIikKKworKGRlZmluZSAoaGFuZGxlciAuIGFyZ3MpCisgIChjb25zIChmbHVpZC1yZWYgZikg YXJncykpCisKKyhsYXp5LWNhdGNoICdmb28KKyAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAg ICAgICAgICAgKHdpdGgtZmx1aWRzICgoZiAibG9jYWwgdmFsdWUiKSkKKyAgICAgICAgICAgICAg ICAodGhyb3cgJ2ZvbykpKQorICAgICAgICAgICAgaGFuZGxlcikKK0ByZXN1bHR7fSAoInRvcCBs ZXZlbCB2YWx1ZSIgZm9vKQorCisoKGxhbWJkYSAoKQorICAgKHdpdGgtZmx1aWRzICgoZiAibG9j YWwgdmFsdWUiKSkKKyAgICAgKGhhbmRsZXIgJ2ZvbykpKSkKK0ByZXN1bHR7fSAoImxvY2FsIHZh bHVlIiBmb28pCitAZW5kIGxpc3AKKworQG5vaW5kZW50CitJbiB0aGUgQGNvZGV7bGF6eS1jYXRj aH0gdmVyc2lvbiwgdGhlIHVud2luZGluZyBvZiBkeW5hbWljIGNvbnRleHQKK3Jlc3RvcmVzIEBj b2Rle2Z9IHRvIGl0cyB2YWx1ZSBvdXRzaWRlIHRoZSBAY29kZXt3aXRoLWZsdWlkc30gYmxvY2sK K2JlZm9yZSB0aGUgaGFuZGxlciBpcyBpbnZva2VkLCBzbyB0aGUgaGFuZGxlcidzIEBjb2Rleyhm bHVpZC1yZWYgZil9CityZXR1cm5zIHRoZSBleHRlcm5hbCB2YWx1ZS4KKworQGNvZGV7bGF6eS1j YXRjaH0gaXMgdXNlZnVsIGJlY2F1c2UgaXQgcGVybWl0cyB0aGUgaW1wbGVtZW50YXRpb24gb2YK K2RlYnVnZ2VycyBhbmQgb3RoZXIgcmVmbGVjdGl2ZSBwcm9ncmFtbWluZyB0b29scyB0aGF0IG5l ZWQgdG8gYWNjZXNzIHRoZQorc3RhdGUgb2YgdGhlIGNhbGwgc3RhY2sgYXQgdGhlIGV4YWN0IHBv aW50IHdoZXJlIGFuIGV4Y2VwdGlvbiBvciBhbgorZXJyb3IgaXMgdGhyb3duLiAgRm9yIGFuIGV4 YW1wbGUgb2YgdGhpcywgc2VlIEBjb2Rle3N0YWNrLWNhdGNofSBiZWxvdywKK2F2YWlsYWJsZSBh ZnRlciBldmFsdWF0aW5nIHRoZSBmb3JtOgorCitAbGlzcAorKHVzZS1tb2R1bGVzIChpY2UtOSBz dGFjay1jYXRjaCkpCitAZW5kIGxpc3AKKworQGMgQHR3ZXJwZG9jIChzdGFjay1jYXRjaCkKK0Bj IC4uLy4uL2ljZS05L3N0YWNrLWNhdGNoLmRvYworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBz dGFjay1jYXRjaCBrZXkgdGh1bmsgaGFuZGxlcgorTGlrZSBAY29kZXtjYXRjaH0sIGludm9rZSBA dmFye3RodW5rfSBpbiB0aGUgZHluYW1pYyBjb250ZXh0IG9mCitAdmFye2hhbmRsZXJ9IGZvciBl eGNlcHRpb25zIG1hdGNoaW5nIEB2YXJ7a2V5fSwgYnV0IGFsc28gc2F2ZSB0aGUKK2N1cnJlbnQg c3RhY2sgc3RhdGUgaW4gdGhlIEBjb2Rle3RoZS1sYXN0LXN0YWNrfSBmbHVpZCwgZm9yIHRoZSBw dXJwb3NlCitvZiBkZWJ1Z2dpbmcgb3IgcmUtdGhyb3dpbmcgb2YgYW4gZXJyb3IuICBJZiB0aHVu ayB0aHJvd3MgdG8gdGhlCitzeW1ib2wgQHZhcntrZXl9LCB0aGVuIEB2YXJ7aGFuZGxlcn0gaXMg aW52b2tlZCB0aGlzIHdheToKKworQGV4YW1wbGUKKyhoYW5kbGVyIGtleSBhcmdzIC4uLikKK0Bl bmQgZXhhbXBsZQorCitAdmFye2tleX0gaXMgYSBzeW1ib2wgb3IgI3QuCisKK0B2YXJ7dGh1bmt9 IHRha2VzIG5vIGFyZ3VtZW50cy4gIElmIEB2YXJ7dGh1bmt9IHJldHVybnMgbm9ybWFsbHksIHRo YXQKK2lzIHRoZSByZXR1cm4gdmFsdWUgb2YgQGNvZGV7Y2F0Y2h9LgorCitIYW5kbGVyIGlzIGlu dm9rZWQgb3V0c2lkZSB0aGUgc2NvcGUgb2YgaXRzIG93biBAY29kZXtjYXRjaH0uICBJZgorQHZh cntoYW5kbGVyfSBhZ2FpbiB0aHJvd3MgdG8gdGhlIHNhbWUga2V5LCBhIG5ldyBoYW5kbGVyIGZy b20gZnVydGhlcgordXAgdGhlIGNhbGwgY2hhaW4gaXMgaW52b2tlZC4KKworSWYgdGhlIGtleSBp cyBAY29kZXsjdH0sIHRoZW4gYSB0aHJvdyB0byBAZW1waHthbnl9IHN5bWJvbCB3aWxsIG1hdGNo Cit0aGlzIGNhbGwgdG8gQGNvZGV7Y2F0Y2h9LiIKK0BlbmQgZGVmZm4KKworQGMgc3RhY2stY2F0 Y2gudGV4aSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL2RvYy9yZWYvdGhyZWFkcy50ZXhpIGIvZG9j L3JlZi90aHJlYWRzLnRleGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIy NTIzOQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9yZWYvdGhyZWFkcy50ZXhpCkBAIC0wLDAgKzEs NzEgQEAKK0BjIHRocmVhZHMudGV4aQorCitAYyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitAYworQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNv cHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CitAYyB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMg b3IKK0BjIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyB3aXRoIG5vCitAYyBJbnZhcmlhbnQgU2VjdGlvbnMsIG5vIEZyb250LUNvdmVy IFRleHRzLCBhbmQgbm8gQmFjay1Db3ZlciBUZXh0cy4gIEEKK0BjIGNvcHkgb2YgdGhlIGxpY2Vu c2UgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZQorQGMgRG9j dW1lbnRhdGlvbiBMaWNlbnNlLicnCisKK0Bub2RlIEhpZ2hlciBsZXZlbCB0aHJlYWQgcHJvY2Vk dXJlcworQHNlY3Rpb24gSGlnaGVyIGxldmVsIHRocmVhZCBwcm9jZWR1cmVzCisKK0hpZ2hlciBs ZXZlbCB0aHJlYWQgcHJvY2VkdXJlcyBhcmUgYXZhaWxhYmxlIGJ5IGV2YWx1YXRpbmc6CisKK0Bz bWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgdGhyZWFkcykpCitAZW5kIHNtYWxsbGlzcAor CitUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgYW5kIG1hY3JvcyBwcm92aWRlIHN0YW5kYXJkaXpl ZAordGhyZWFkIGNyZWF0aW9uIGFuZCBtdXRleCBpbnRlcmFjdGlvbi4KKworQGMgQHR3ZXJwZG9j ICgldGhyZWFkLWhhbmRsZXIpCitAYyAuLi8uLi9pY2UtOS90aHJlYWRzLmRvYworQGRlZmZuIHtT Y2hlbWUgUHJvY2VkdXJlfSAldGhyZWFkLWhhbmRsZXIgdGFnIFthcmdzLi4uXQorVGhpcyBwcm9j ZWR1cmUgaXMgc3BlY2lmaWVkIGFzIHRoZSBzdGFuZGFyZCBlcnJvci1oYW5kbGVyIGZvcgorQGNv ZGV7bWFrZS10aHJlYWR9IGFuZCBAY29kZXtiZWdpbi10aHJlYWR9LiAgSWYgdGhlIG51bWJlciBv ZiBAdmFye2FyZ3N9CitpcyB0aHJlZSBvciBtb3JlLCB1c2UgQGNvZGV7ZGlzcGxheS1lcnJvcn0s IG90aGVyd2lzZSBkaXNwbGF5IGEgbWVzc2FnZQorInVuY2F1Z2h0IHRocm93IHRvIEB2YXJ7dGFn fSIuICBBbGwgb3V0cHV0IGlzIHNlbnQgdG8gdGhlIHBvcnQgc3BlY2lmaWVkCitieSBAY29kZXtj dXJyZW50LWVycm9yLXBvcnR9LgorCitCZWZvcmUgZGlzcGxheSwgZ2xvYmFsIHZhciBAY29kZXt0 aGUtbGFzdC1zdGFja30gaXMgc2V0IHRvIEBjb2RleyNmfQorYW5kIHNpZ25hbHMgYXJlIHVubWFz a2VkIHdpdGggQGNvZGV7dW5tYXNrLXNpZ25hbHN9LgorCitAYyBbRklYTUU6IFdoeSBkaXN0aW5n dWlzaCBiYXNlZCBvbiBudW1iZXIgb2YgYXJncz8hICBDdWUgdm9vZG9vIG11c2ljIGhlcmUuXQor QGVuZCBkZWZmbgorCitAYyBAdHdlcnBtYWNkb2MgKG1ha2UtdGhyZWFkKQorQGMgLi4vLi4vaWNl LTkvdGhyZWFkcy5kb2MKK0BkZWZmbiB7U2NoZW1lIE1hY3JvfSBtYWtlLXRocmVhZCBwcm9jIFth cmdzLi4uXQorQXBwbHkgQHZhcntwcm9jfSB0byBAdmFye2FyZ3N9IGluIGEgbmV3IHRocmVhZCBm b3JtZWQgYnkKK0Bjb2Rle2NhbGwtd2l0aC1uZXctdGhyZWFkfSB1c2luZyBAY29kZXsldGhyZWFk LWhhbmRsZXJ9IGFzIHRoZSBlcnJvcgoraGFuZGxlci4KK0BlbmQgZGVmZm4KKworQGMgQHR3ZXJw bWFjZG9jIChiZWdpbi10aHJlYWQpCitAYyAuLi8uLi9pY2UtOS90aHJlYWRzLmRvYworQGRlZmZu IHtTY2hlbWUgTWFjcm99IGJlZ2luLXRocmVhZCBmaXJzdCBbcmVzdC4uLl0KK0V2YWx1YXRlIGZv cm1zIEB2YXJ7Zmlyc3R9IGFuZCBAdmFye3Jlc3R9IGluIGEgbmV3IHRocmVhZCBmb3JtZWQgYnkK K0Bjb2Rle2NhbGwtd2l0aC1uZXctdGhyZWFkfSB1c2luZyBAY29kZXsldGhyZWFkLWhhbmRsZXJ9 IGFzIHRoZSBlcnJvcgoraGFuZGxlci4KK0BlbmQgZGVmZm4KKworQGMgQHR3ZXJwbWFjZG9jICh3 aXRoLW11dGV4KQorQGMgLi4vLi4vaWNlLTkvdGhyZWFkcy5kb2MKK0BkZWZmbiB7U2NoZW1lIE1h Y3JvfSB3aXRoLW11dGV4IG0gW2JvZHkuLi5dCitMb2NrIG11dGV4IEB2YXJ7bX0sIGV2YWx1YXRl IEB2YXJ7Ym9keX0sIGFuZCB0aGVuIHVubG9jayBAdmFye219LgorVGhlc2Ugc3ViLW9wZXJhdGlv bnMgZm9ybSB0aGUgYnJhbmNoZXMgb2YgYSBAY29kZXtkeW5hbWljLXdpbmR9LgorQGVuZCBkZWZm bgorCitAYyBAdHdlcnBtYWNkb2MgKG1vbml0b3IpCitAYyAuLi8uLi9pY2UtOS90aHJlYWRzLmRv YworQGRlZmZuIHtTY2hlbWUgTWFjcm99IG1vbml0b3IgZmlyc3QgW3Jlc3QuLi5dCitFdmFsdWF0 ZSBmb3JtcyBAdmFye2ZpcnN0fSBhbmQgQHZhcntyZXN0fSB1bmRlciBhIG5ld2x5IGNyZWF0ZWQK K2Fub255bW91cyBtdXRleCwgdXNpbmcgQGNvZGV7d2l0aC1tdXRleH0uCisKK0BjIFtGSVhNRTog SXMgdGhlcmUgYW55IHdheSB0byBhY2Nlc3MgdGhlIG11dGV4P10KK0BlbmQgZGVmZm4KKworQGMg dGhyZWFkcy50ZXhpIGVuZHMgaGVyZQotLSAKMS43LjYKCg== --e89a8fb1f8d6dbf80e04c48513bf Content-Type: application/octet-stream; name="0003-Documentation-style-change.patch" Content-Disposition: attachment; filename="0003-Documentation-style-change.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4htp3r22 RnJvbSA0YjVlZjE0OGVkZWU2NGQ4MDgzMTczZjJmMzRlNGMzN2U5ZWFjOGQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bm9haC5iLmxhdmluZUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgSnVsIDIwMTIgMjE6MDE6MjUgLTA0MDAKU3ViamVjdDogW1BBVENIIDMv NF0gRG9jdW1lbnRhdGlvbiBzdHlsZSBjaGFuZ2UKCiAqIGRvYy9yZWYvaGNvbnMudGV4aTogY2hh bmdlIHNlY3Rpb24gbmFtZS4KLS0tCiBkb2MvcmVmL2hjb25zLnRleGkgfCAgIDIxICsrKysrKysr LS0tLS0tLS0tLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9yZWYvaGNvbnMudGV4aSBiL2RvYy9yZWYvaGNvbnMu dGV4aQppbmRleCAxZmMzNjEzLi4yNzNhODcxIDEwMDY0NAotLS0gYS9kb2MvcmVmL2hjb25zLnRl eGkKKysrIGIvZG9jL3JlZi9oY29ucy50ZXhpCkBAIC05LDI0ICs5LDE5IEBACiBAYyBjb3B5IG9m IHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZy ZWUKIEBjIERvY3VtZW50YXRpb24gTGljZW5zZS4nJwogCi1Abm9kZSBEb3VibGUtS2V5IEhhc2gg VGFibGVzCi1Ac2VjdGlvbiBEb3VibGUtS2V5IEhhc2ggVGFibGVzCi0KLVRvIHVzZSBkb3VibGUt a2V5IGhhc2ggdGFibGVzLCBldmFsdWF0ZSB0aGUgZm9ybToKLQotQHNtYWxsbGlzcAotKHVzZS1t b2R1bGVzIChpY2UtOSBoY29ucykpCi1AZW5kIHNtYWxsbGlzcAotCi1AYyBAdHdlcnBjb21tZW50 YXJ5ICh2ZXJiYXRpbSAoaWNlLTkgaGNvbnMpKQotQGMgQHZlcmJhdGltCi1FcT8gaGFzaC1jb25z aW5nCitAbm9kZSBFcT8gSGFzaCBDb25zaW5nCitAc2VjdGlvbiBFcT8gSGFzaCBDb25zaW5nCiAK IEEgaGFzaCBjb25zZXIgbWFpbnRhaW5zIGEgcHJpdmF0ZSB1bml2ZXJzZSBvZiBwYWlycyBzLnQu IGlmCiB0d28gY29ucyBjYWxscyBwYXNzIGVxPyBhcmd1bWVudHMsIHRoZSBwYWlycyByZXR1cm5l ZCBhcmUgZXE/LgogCiBBIGhhc2ggY29uc2VyIGRvZXMgbm90IGNvbnRyaWJ1dGUgbGlmZSB0byB0 aGUgcGFpcnMgaXQgcmV0dXJucy4KLUBjIEBlbmQgdmVyYmF0aW0KKworVG8gdXNlIGVxPy1oYXNo IGNvbnNlcnMsIGV2YWx1YXRlCisKK0BzbWFsbGxpc3AKKyh1c2UtbW9kdWxlcyAoaWNlLTkgaGNv bnMpKQorQGVuZCBzbWFsbGxpc3AKIAogQGMgQHR3ZXJwZG9jIChoYXNocS1jb25zLWhhc2gpCiBA YyAuLi8uLi9pY2UtOS9oY29ucy5kb2MKLS0gCjEuNy42Cgo= --e89a8fb1f8d6dbf80e04c48513bf Content-Type: application/octet-stream; name="0004-Document-ice-9-string-fun.patch" Content-Disposition: attachment; filename="0004-Document-ice-9-string-fun.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4htp88c3 RnJvbSAyZTE4MzVkOWRmNWNhOTM5ODE0NzFmYzg0ODAwMWRhYjBjYjlkNWE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bm9haC5iLmxhdmluZUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTAgSnVsIDIwMTIgMjE6MDI6MTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDQv NF0gRG9jdW1lbnQgKGljZS05IHN0cmluZy1mdW4pCgogKiBkb2MvcmVmL3N0cmluZy1mdW4udGV4 aTogYWRkIGRvY3VtZW50YXRpb24uCiAqIGRvYy9yZWYvTWFrZWZpbGUuYW06IHVwZGF0ZSBNYWtl ZmlsZS4KCkJhc2VkIG9uIGRvY3VtZW50YXRpb24gY29udHJpYnV0ZWQgYnkgVGhpZW4tVGhpIE5n dXllbi4KLS0tCiBkb2MvcmVmL01ha2VmaWxlLmFtICAgICB8ICAgIDEgKwogZG9jL3JlZi9zdHJp bmctZnVuLnRleGkgfCAgMTM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWYvc3RyaW5nLWZ1bi50ZXhpCgpkaWZmIC0t Z2l0IGEvZG9jL3JlZi9NYWtlZmlsZS5hbSBiL2RvYy9yZWYvTWFrZWZpbGUuYW0KaW5kZXggZjg2 YTgzMS4uNTUyNGFiNiAxMDA2NDQKLS0tIGEvZG9jL3JlZi9NYWtlZmlsZS5hbQorKysgYi9kb2Mv cmVmL01ha2VmaWxlLmFtCkBAIC03MSw2ICs3MSw3IEBAIGd1aWxlX1RFWElORk9TID0gcHJlZmFj ZS50ZXhpCQkJXAogCQkgcG9lLnRleGkJCQlcCiAJCSBwb3Blbi50ZXhpCQkJXAogCQkgcnVucS50 ZXhpCQkJXAorCQkgc3RyaW5nLWZ1bi50ZXhpCQlcCiAJCSBzZXNzaW9uLnRleGkJCQlcCiAJCSBz dGFjay1jYXRjaC50ZXhpCQlcCiAJCSB0aHJlYWRzLnRleGkJCQlcCmRpZmYgLS1naXQgYS9kb2Mv cmVmL3N0cmluZy1mdW4udGV4aSBiL2RvYy9yZWYvc3RyaW5nLWZ1bi50ZXhpCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNzA3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mv cmVmL3N0cmluZy1mdW4udGV4aQpAQCAtMCwwICsxLDEzOSBAQAorQGMgc3RyaW5nLWZ1bi50ZXhp CisKK0BjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K K0BjCitAYyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3Ig bW9kaWZ5IHRoaXMgZG9jdW1lbnQKK0BjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUg RG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMyBvcgorQGMgYW55IGxhdGVyIHZlcnNp b24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KK0Bj IEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNv dmVyIFRleHRzLiAgQQorQGMgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGUg c2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlCitAYyBEb2N1bWVudGF0aW9uIExpY2Vuc2UuJycK KworQG5vZGUgU3RyaW5nIFV0aWxpdGllcworQHNlY3Rpb24gU3RyaW5nIFV0aWxpdGllcworQGNp bmRleCBzdHJpbmcgdXRpbGl0aWVzCitAY2luZGV4IHN0cmluZ3MKKworR3VpbGUgcHJvdmlkZXMg YSBjb252ZW5pZW50IHNldCBvZiBwcm9jZWR1cmVzIHRoYXQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhl CitzaGFyZWQgc3Vic3RyaW5nIGNhcGFiaWxpdHkuICBUaGVzZSBhcmUgYXZhaWxhYmxlIGJ5IGV2 YWx1YXRpbmc6CisKK0BsaXNwCisodXNlLW1vZHVsZXMgKGljZS05IHN0cmluZy1mdW4pKQorQGVu ZCBsaXNwCisKK0BjIEB0d2VycGNvbW1lbnRhcnkgKHZlcmJhdGltIChpY2UtOSBzdHJpbmctZnVu KSkKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzOgorCitA dmVyYmF0aW0KKyAoc3BsaXQtYWZ0ZXItY2hhciBjaGFyIHN0ciByZXQpCisgKHNwbGl0LWJlZm9y ZS1jaGFyIGNoYXIgc3RyIHJldCkKKyAoc3BsaXQtZGlzY2FyZGluZy1jaGFyIGNoYXIgc3RyIHJl dCkKKyAoc3BsaXQtYWZ0ZXItY2hhci1sYXN0IGNoYXIgc3RyIHJldCkKKyAoc3BsaXQtYmVmb3Jl LWNoYXItbGFzdCBjaGFyIHN0ciByZXQpCisgKHNwbGl0LWRpc2NhcmRpbmctY2hhci1sYXN0IGNo YXIgc3RyIHJldCkKKyAoc3BsaXQtYmVmb3JlLXByZWRpY2F0ZSBwcmVkIHN0ciByZXQpCisgKHNw bGl0LWFmdGVyLXByZWRpY2F0ZSBwcmVkIHN0ciByZXQpCisgKHNwbGl0LWRpc2NhcmRpbmctcHJl ZGljYXRlIHByZWQgc3RyIHJldCkKKyAoc2VwYXJhdGUtZmllbGRzLWRpc2NhcmRpbmctY2hhciBj aCBzdHIgcmV0KQorIChzZXBhcmF0ZS1maWVsZHMtYWZ0ZXItY2hhciBjaCBzdHIgcmV0KQorIChz ZXBhcmF0ZS1maWVsZHMtYmVmb3JlLWNoYXIgY2ggc3RyIHJldCkKKyAoKHN0cmluZy1wcmVmaXgt cHJlZGljYXRlIHByZWQ/KSBwcmVmaXggc3RyKQorIChzdHJpbmctcHJlZml4PT8gcHJlZml4IHN0 cikKKyAoc2Fucy1zdXJyb3VuZGluZy13aGl0ZXNwYWNlIHMpCisgKHNhbnMtdHJhaWxpbmctd2hp dGVzcGFjZSBzKQorIChzYW5zLWxlYWRpbmctd2hpdGVzcGFjZSBzKQorIChzYW5zLWZpbmFsLW5l d2xpbmUgc3RyKQorIChoYXMtdHJhaWxpbmctbmV3bGluZT8gc3RyKQorQGVuZCB2ZXJiYXRpbQor CitAc3Vic2VjdGlvbiBEaXZpZGluZyBTdHJpbmdzIEludG8gRmllbGRzCisKK1RoZSBuYW1lcyBv ZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHZlcnkgcmVndWxhci4KK0hlcmUgaXMgYSBncmFtbWFyIG9m IGEgY2FsbCB0byBvbmUgb2YgdGhlc2U6CisKK0B2ZXJiYXRpbQorICA8c3RyaW5nLWZ1bmN0aW9u LWludm9jYXRpb24+CisgIDo9ICg8YWN0aW9uPi08c2VwZXJhdG9yLWRpc3Bvc2l0aW9uPi08c2Vw ZXJhdG9yLWRldGVybWluYXRpb24+CisgICAgICAgICAgICAgICA8c2VwZXJhdG9yLXBhcmFtPiA8 c3RyPiA8cmV0PikKKworPHN0cj4gICAgPSB0aGUgc3RyaW5nCisKKzxyZXQ+ICAgID0gVGhlIGNv bnRpbnVhdGlvbi4gIFN0cmluZyBmdW5jdGlvbnMgZ2VuZXJhbGx5IHJldHVybgorICAgICAgICAg ICBtdWx0aXBsZSB2YWx1ZXMgYnkgcGFzc2luZyB0aGVtIHRvIHRoaXMgcHJvY2VkdXJlLgorCis8 YWN0aW9uPiA9ICAgIHNwbGl0CisgICAgICAgICAgICB8IHNlcGFyYXRlLWZpZWxkcworCisgInNw bGl0IiBtZWFucyB0byBkaXZpZGUgYSBzdHJpbmcgaW50byB0d28gcGFydHMuCisgPHJldD4gd2ls bCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLgorCisgInNlcGFyYXRlLWZpZWxkcyIgbWVh bnMgdG8gZGl2aWRlIGEgc3RyaW5nIGludG8gYXMgbWFueSBwYXJ0cyBhcworIHBvc3NpYmxlLiAg PHJldD4gd2lsbCBiZSBjYWxsZWQgd2l0aCBob3dldmVyIG1hbnkgZmllbGRzIGFyZSBmb3VuZC4K KworPHNlcGVyYXRvci1kaXNwb3NpdGlvbj4gPSAgICAgIGJlZm9yZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGlz Y2FyZGluZworCisgImJlZm9yZSIgbWVhbnMgdG8gbGVhdmUgdGhlIHNlcGVyYXRvciBhdHRhY2hl ZCB0bworIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpZWxkIHRvIGl0cyByaWdodC4KKworICJhZnRl ciIgbWVhbnMgdG8gbGVhdmUgdGhlIHNlcGVyYXRvciBhdHRhY2hlZCB0bworIHRoZSBlbmQgb2Yg dGhlIGZpZWxkIHRvIGl0cyBsZWZ0LgorCisgImRpc2NhcmRpbmciIG1lYW5zIHRvIGRpc2NhcmQg c2VwZXJhdG9ycy4KKworIE90aGVyIGRpc3Bvc2l0aW9ucyBtaWdodCBiZSBoYW5keS4gIEZvciBl eGFtcGxlLCAiaXNvbGF0ZSIKKyBjb3VsZCBtZWFuIHRvIHRyZWF0IHRoZSBzZXBhcmF0b3IgYXMg YSBmaWVsZCB1bnRvIGl0c2VsZi4KKworPHNlcGVyYXRvci1kZXRlcm1pbmF0aW9uPiA9ICAgIGNo YXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcmVkaWNhdGUKKworICJjaGFyIiBt ZWFucyB0byB1c2UgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciBhcyBmaWVsZCBzZXBlcmF0b3IuCisg InByZWRpY2F0ZSIgbWVhbnMgdG8gY2hlY2sgZWFjaCBjaGFyYWN0ZXIgdXNpbmcgYSBwYXJ0aWN1 bGFyIHByZWRpY2F0ZS4KKworIE90aGVyIGRldGVybWluYXRpb25zIG1pZ2h0IGJlIGhhbmR5LiAg Rm9yIGV4YW1wbGUsICJjaGFyYWN0ZXItc2V0LW1lbWJlciIuCisKKzxzZXBlcmF0b3ItcGFyYW0+ ID0gQSBwYXJhbWV0ZXIgdGhhdCBjb21wbGV0ZXMgdGhlIG1lYW5pbmcgb2YgdGhlCisgICAgICAg ICAgICAgICAgICAgIGRldGVybWluYXRpb25zLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXRlcm1p bmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGlzICJjaGFyIiwgdGhlbiB0aGlzIHBhcmFtZXRl ciBzYXlzIHdoaWNoIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgSWYgaXQgaXMgInBy ZWRpY2F0ZSIsIHRoZSBwYXJhbWV0ZXIgaXMgdGhlIHByZWRpY2F0ZS4KKworRm9yIGV4YW1wbGU6 CisKKyAoc2VwYXJhdGUtZmllbGRzLWRpc2NhcmRpbmctY2hhciAjXCwgImZvbywgYmFyLCBiYXos ICwgYmF0IiBsaXN0KQorID0+ICgiZm9vIiAiIGJhciIgIiBiYXoiICIgIiAiIGJhdCIpCisKKyAo c3BsaXQtYWZ0ZXItY2hhciAjXC0gJ2FuLWV4YW1wbGUtb2Ytc3BsaXQgbGlzdCkKKyA9PiAoImFu LSIgImV4YW1wbGUtb2Ytc3BsaXQiKQorQGVuZCB2ZXJiYXRpbQorCitBcyBhbiBhbHRlcm5hdGl2 ZSB0byB1c2luZyBhIGRldGVybWluYXRpb24gInByZWRpY2F0ZSIsIG9yIHRvIHRyeWluZyB0bwor ZG8gYW55dGhpbmcgY29tcGxpY2F0ZWQgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGNvbnNpZGVyIHVz aW5nIHJlZ3VsYXIKK2V4cHJlc3Npb25zLgorCisKK0BzdWJzZWN0aW9uIFN0cmluZyBQcmVmaXgg UHJlZGljYXRlcworCitWZXJ5IHNpbXBsZToKKworQGxpc3AKKyhkZWZpbmUtcHVibGljICgoc3Ry aW5nLXByZWZpeC1wcmVkaWNhdGUgcHJlZD8pIHByZWZpeCBzdHIpCisgKGFuZCAoPD0gKHN0cmlu Zy1sZW5ndGggcHJlZml4KSAoc3RyaW5nLWxlbmd0aCBzdHIpKQorICAgICAgIChwcmVkPyBwcmVm aXggKG1ha2Utc2hhcmVkLXN1YnN0cmluZyBzdHIgMCAoc3RyaW5nLWxlbmd0aCBwcmVmaXgpKSkp KQorCisoZGVmaW5lLXB1YmxpYyBzdHJpbmctcHJlZml4PT8gKHN0cmluZy1wcmVmaXgtcHJlZGlj YXRlIHN0cmluZz0/KSkKK0BlbmQgbGlzcAorCitAc3Vic2VjdGlvbiBTdHJpcHBlcnMKKworQHZl cmJhdGltCis8c3RyaXBwZXI+ID0gc2Fucy08cmVtb3ZhYmxlLXBhcnQ+CisKKzxyZW1vdmFibGUt cGFydD4gPSAgICAgc3Vycm91bmRpbmctd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAg fCB0cmFpbGluZy13aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgICB8IGxlYWRpbmctd2hp dGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAgfCBmaW5hbC1uZXdsaW5lCitAZW5kIHZlcmJh dGltCisKK0BjIHN0cmluZy1mdW4udGV4aSBlbmRzIGhlcmUKLS0gCjEuNy42Cgo= --e89a8fb1f8d6dbf80e04c48513bf--