From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Linus_Bj=C3=B6rnstam?= Newsgroups: gmane.lisp.guile.devel Subject: [PATCH] Add srfi-171 to guile Date: Sun, 22 Dec 2019 15:55:55 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=437cd8e90e8646e9a30270743b78464e Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="141724"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Cyrus-JMAP/3.1.7-694-gd5bab98-fmstable-20191218v1 To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun Dec 22 15:56:30 2019 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1ij2ei-000afm-NB for guile-devel@m.gmane.org; Sun, 22 Dec 2019 15:56:30 +0100 Original-Received: from localhost ([::1]:48226 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ij2eg-0006Jr-SG for guile-devel@m.gmane.org; Sun, 22 Dec 2019 09:56:26 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46292) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ij2eb-0006Jl-KB for guile-devel@gnu.org; Sun, 22 Dec 2019 09:56:22 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ij2ea-00015z-AA for guile-devel@gnu.org; Sun, 22 Dec 2019 09:56:21 -0500 Original-Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:43751) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ij2eZ-0000rq-HQ for guile-devel@gnu.org; Sun, 22 Dec 2019 09:56:20 -0500 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 8B667459 for ; Sun, 22 Dec 2019 09:56:16 -0500 (EST) Original-Received: from imap1 ([10.202.2.51]) by compute3.internal (MEProxy); Sun, 22 Dec 2019 09:56:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=veryfast.biz; h= mime-version:message-id:date:from:to:subject:content-type; s= fm1; bh=VDcWpk9h89OzsUWm1wKS7Xo3TdSoleVsiPYmiCFfHHs=; b=KjowGq30 zG1dC1kUiAur0t6bTs0BJL11XACy6D2qjR04Butd6Fv1JeoNcMTY+PniCRt5tqRz hQu5mL4H6s85vuq4DRcDu3CTqbkZMWoGIvMEo1yfpjVLuvrVSYMZ7EIC9+f5XHbG omf0sH4f15f7joo7Ehvx8d+yEYDx3Vt0KCdzPI6Uaz4s5wt9LyAzO+0wcEgEtVQt RgYQQkM6+JJviohyYVGrB7YnsTeejLB3+PJVGXdWyw+dV1WLYydH7lrlF6sq5uPI ykxVNKrj6cG/7HLH6ra0rQSUNyIqtQJWefIhMBP2LJcs7gb3RXhKKI/Kh24EL/It lOMPAZORCSqPHw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=VDcWpk9h89OzsUWm1wKS7Xo3TdSol eVsiPYmiCFfHHs=; b=KiGmeEUMSrIkGC/K9nPvdSBBLSRYs3+V9NhseR6UakVdZ t/gjmHTqvXiPYOP1ONf94/Ql/mL1VZGmDsx4jTxi62EdUFBB1TzCo4Lqc8FAHMwW WilDjn2HDN/4FFcbTvg5QDpGhnXJfwFJr+5+QUIYs/C6yj6bQbBFrrIwrZ0f8dPD 87D9W5hX9qrysuO+3YXCmn3MrwvnQFL4bvEU8FkheovJsaSj6Nd9uTdthxJenvID fHHxsd/4eGowip6W1V9/YP+aWwQwabO+njNU46jAaaCbCSJ2gJMqahms8pUBecgl XaLNAAF9Hd6IZmJGhElrFJKF2CNPJWJ7lM6bRWH7Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrvddukedgieeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfffhffvufgtsehmtderre erreejnecuhfhrohhmpefnihhnuhhspgeujhpnrhhnshhtrghmuceolhhinhhushdrsghj ohhrnhhsthgrmhesvhgvrhihfhgrshhtrdgsihiiqeenucfrrghrrghmpehmrghilhhfrh homheplhhinhhushdrsghjohhrnhhsthgrmhesvhgvrhihfhgrshhtrdgsihiinecuvehl uhhsthgvrhfuihiivgeptd X-ME-Proxy: Original-Received: by mailuser.nyi.internal (Postfix, from userid 501) id D6C72C200A4; Sun, 22 Dec 2019 09:56:15 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 64.147.123.24 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 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" Xref: news.gmane.org gmane.lisp.guile.devel:20201 Archived-At: --437cd8e90e8646e9a30270743b78464e Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi there! This is a patch to add srfi-171 (transducers) to guile.=20 It adds the srfi implementation, a guile-specific extension (tfold and t= batch which can be used to generalize things like tsegment), documentati= on (the whole srfi document plus additions into srfi-modules.texi) and t= ests.=20 I have built it successfully on the latest master. This would be my firs= t ever commit to a project I did not start myself, with the added bonus = that I have no idea of how git works. Be kind :) Happy holidays!=20 Linus Bj=C3=B6rnstam --437cd8e90e8646e9a30270743b78464e Content-Disposition: attachment;filename="0001-Added-srfi-171-to-guile-under-the-module-name-srfi-s.patch" Content-Type: application/octet-stream; name="0001-Added-srfi-171-to-guile-under-the-module-name-srfi-s.patch" Content-Transfer-Encoding: BASE64 RnJvbSA3ZThkM2IyMmJhNWY4MTRjNDBkYmI1YWI2MTZhMzE4YzBjZGMyZjNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TGludXM9MjBCaj1DMz1CNnJuc3Rh bT89IDxsaW51cy5iam9ybnN0YW1AZmFzdG1haWwuc2U+CkRhdGU6IFN1biwgMjIgRGVjIDIw MTkgMTU6Mzg6MzQgKzAxMDAKU3ViamVjdDogW1BBVENIIDEvMl0gQWRkZWQgc3JmaS0xNzEg dG8gZ3VpbGUgdW5kZXIgdGhlIG1vZHVsZSBuYW1lIChzcmZpCiBzcmZpLTE3MSkuCgpGb3Ig bW9yZSBpbmZvLCByZWFkIHRoZSBTUkZJIGRvY3VtZW50OiBodHRwczovL3NyZmkuc2NoZW1l cnMub3JnL3NyZmktMTcxL3NyZmktMTcxLmh0bWwKLS0tCiBtb2R1bGUvc3JmaS9zcmZpLTE3 MS5zY20gICAgICAgfCA0OTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBt b2R1bGUvc3JmaS9zcmZpLTE3MS9nbnUuc2NtICAgfCAgNDkgKysrKwogbW9kdWxlL3NyZmkv c3JmaS0xNzEvbWV0YS5zY20gIHwgMTE1ICsrKysrKysrCiB0ZXN0LXN1aXRlL3Rlc3RzL3Ny ZmktMTcxLnRlc3QgfCAxOTUgKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4NTcg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1vZHVsZS9zcmZpL3NyZmktMTcx LnNjbQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1vZHVsZS9zcmZpL3NyZmktMTcxL2dudS5zY20K IGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTE3MS9tZXRhLnNjbQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xNzEudGVzdAoKZGlmZiAt LWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTcxLnNjbSBiL21vZHVsZS9zcmZpL3NyZmktMTcx LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdlOGRjNjAzZgot LS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktMTcxLnNjbQpAQCAtMCwwICsx LDQ5OCBAQAorOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cis7OyBDb3B5cmlnaHQgMjAx OSBMaW51cyBCasO2cm5zdGFtCis7OworOzsgWW91IG1heSB1c2UgdGhpcyBjb2RlIHVuZGVy IGVpdGhlciB0aGUgbGljZW5zZSBpbiB0aGUgU1JGSSBkb2N1bWVudCBvciB0aGUKKzs7IGxp Y2Vuc2UgYmVsb3cuCis7OworOzsgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwg YW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Cis7OyBwdXJwb3NlIHdp dGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhl IGFib3ZlCis7OyBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IGFwcGVhciBpbiBhbGwgc291cmNlIGNvcGllcy4KKzs7IFRoZSBzb2Z0d2FyZSBpcyBwcm92 aWRlZCAiYXMgaXMiLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudGll cy4KKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworCisKKzs7IFRoaXMgbW9kdWxlIG5h bWUgaXMgZ3VpbGUtc3BlY2lmaWMuIFRoZSBjb3JyZWN0IG1vZHVsZSBuYW1lIGlzIG9mIGNv dXJzZQorOzsgKHNyZmkgMTcxKQorKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xNzEpCisg ICM6ZGVjbGFyYXRpdmU/ICN0CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTkpCisgICM6 dXNlLW1vZHVsZSAoKHNyZmkgc3JmaS00MykKKyAgICAgICAgICAgICAgICAjOnNlbGVjdCAo dmVjdG9yLT5saXN0KSkKKyAgIzp1c2UtbW9kdWxlICgoc3JmaSBzcmZpLTY5KSAjOnByZWZp eCBzcmZpNjk6KQorICAjOnVzZS1tb2R1bGUgKChybnJzIGhhc2h0YWJsZXMpICM6cHJlZml4 IHJucnM6KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xNzEgbWV0YSkKKyAgIzpleHBv cnQgKHJjb25zIHJldmVyc2UtcmNvbnMKKyAgICAgICAgICAgICAgICAgIHJjb3VudAorICAg ICAgICAgICAgICAgICAgcmFueQorICAgICAgICAgICAgICAgICAgcmV2ZXJ5CisgICAgICAg ICAgICAgICAgICBsaXN0LXRyYW5zZHVjZQorICAgICAgICAgICAgICAgICAgdmVjdG9yLXRy YW5zZHVjZQorICAgICAgICAgICAgICAgICAgc3RyaW5nLXRyYW5zZHVjZQorICAgICAgICAg ICAgICAgICAgYnl0ZXZlY3Rvci11OC10cmFuc2R1Y2UKKyAgICAgICAgICAgICAgICAgIHBv cnQtdHJhbnNkdWNlCisgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItdHJhbnNkdWNlCisg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIHRtYXAKKyAgICAgICAgICAg ICAgICAgIHRmaWx0ZXIKKyAgICAgICAgICAgICAgICAgIHRyZW1vdmUKKyAgICAgICAgICAg ICAgICAgIHRyZXBsYWNlCisgICAgICAgICAgICAgICAgICB0ZmlsdGVyLW1hcAorICAgICAg ICAgICAgICAgICAgdGRyb3AKKyAgICAgICAgICAgICAgICAgIHRkcm9wLXdoaWxlCisgICAg ICAgICAgICAgICAgICB0dGFrZQorICAgICAgICAgICAgICAgICAgdHRha2Utd2hpbGUKKyAg ICAgICAgICAgICAgICAgIHRjb25jYXRlbmF0ZQorICAgICAgICAgICAgICAgICAgdGFwcGVu ZC1tYXAKKyAgICAgICAgICAgICAgICAgIHRkZWxldGUtbmVpZ2hib3ItZHVwbGljYXRlcwor ICAgICAgICAgICAgICAgICAgdGRlbGV0ZS1kdXBsaWNhdGVzCisgICAgICAgICAgICAgICAg ICB0ZmxhdHRlbgorICAgICAgICAgICAgICAgICAgdHNlZ21lbnQKKyAgICAgICAgICAgICAg ICAgIHRwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgIHRhZGQtYmV0d2VlbgorICAgICAg ICAgICAgICAgICAgdGVudW1lcmF0ZQorICAgICAgICAgICAgICAgICAgdGxvZykpCisKKwor Cis7OyBBIHNwZWNpYWwgdmFsdWUgdG8gYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIHdoZXJl IG5vIHZhbHVlIGhhcyBiZWVuIHNldCBhbmQgI2YKKzs7IGRvZXNuJ3QgY3V0IGl0LiBOb3Qg ZXhwb3J0ZWQuCisKKyhkZWZpbmUtcmVjb3JkLXR5cGUgPG5vdGhpbmc+CisgIChtYWtlLW5v dGhpbmcpCisgIG5vdGhpbmc/KQorKGRlZmluZSBub3RoaW5nIChtYWtlLW5vdGhpbmcpKQor CisKKzs7IGhlbHBlciBmdW5jdGlvbiB3aGljaCBlbnN1cmVzIHggaXMgcmVkdWNlZC4KKyhk ZWZpbmUgKGVuc3VyZS1yZWR1Y2VkIHgpCisgIChpZiAocmVkdWNlZD8geCkKKyAgICAgIHgK KyAgICAgIChyZWR1Y2VkIHgpKSkKKworCis7OyBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3cmFw cyBhIHJlZHVjZWQgdmFsdWUgdHdpY2Ugc2luY2UgcmVkdWNpbmcgZnVuY3Rpb25zIChsaWtl IGxpc3QtcmVkdWNlKQorOzsgdW53cmFwcyB0aGVtLiB0Y29uY2F0ZW5hdGUgaXMgYSBnb29k IGV4YW1wbGU6IGl0IHJlLXVzZXMgaXQncyByZWR1Y2VyIG9uIGl0J3MgaW5wdXQgdXNpbmcg bGlzdC1yZWR1Y2UuCis7OyBJZiB0aGF0IHJlZHVjdGlvbiBmaW5pc2hlcyBlYXJseSBhbmQg cmV0dXJucyBhIHJlZHVjZWQgdmFsdWUsIGxpc3QtcmVkdWNlIHdvdWxkICJ1bnJlZHVjZSIK Kzs7IHRoYXQgdmFsdWUgYW5kIHRyeSB0byBjb250aW51ZSB0aGUgdHJhbnNkdWNpbmcgcHJv Y2Vzcy4KKyhkZWZpbmUgKHByZXNlcnZpbmctcmVkdWNlZCBmKQorICAobGFtYmRhIChhIGIp CisgICAgKGxldCAoKHJldHVybiAoZiBhIGIpKSkKKyAgICAgIChpZiAocmVkdWNlZD8gcmV0 dXJuKQorICAgICAgICAgIChyZWR1Y2VkIHJldHVybikKKyAgICAgICAgICByZXR1cm4pKSkp CisKKworCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cis7OyBSZWR1Y2luZyBmdW5jdGlvbnMgbWVhbnQg dG8gYmUgdXNlZCBhdCB0aGUgZW5kIGF0IHRoZSB0cmFuc2R1Y2luZworOzsgcHJvY2Vzcy4g ICAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKKworOzsgYSB0cmFuc2R1Y2VyLWZyaWVuZGx5IGNvbnMgd2l0aCB0aGUgZW1wdHkgbGlz dCBhcyBpZGVudGl0eQorKGRlZmluZSByY29ucworICAoY2FzZS1sYW1iZGEKKyAgICAoKCkg JygpKQorICAgICgobHN0KSAocmV2ZXJzZSEgbHN0KSkKKyAgICAoKGxzdCB4KSAoY29ucyB4 IGxzdCkpKSkKKworCisoZGVmaW5lIHJldmVyc2UtcmNvbnMKKyAgKGNhc2UtbGFtYmRhCisg ICAgKCgpICcoKSkKKyAgICAoKGxzdCkgbHN0KQorICAgICgobHN0IHgpIChjb25zIHggbHN0 KSkpKQorCisKKzs7IFVzZSB0aGlzIGFzIHRoZSBmIGluIHRyYW5zZHVjZSB0byBjb3VudCB0 aGUgYW1vdW50IG9mIGVsZW1lbnRzIHBhc3NlZCB0aHJvdWdoLgorOzsgKHRyYW5zZHVjZSAo dGZpbHRlciBvZGQ/KSB0Y291bnQgKGxpc3QgMSAyIDMpKSA9PiAyCisoZGVmaW5lIHJjb3Vu dAorICAoY2FzZS1sYW1iZGEKKyAgICAoKCkgMCkKKyAgICAoKHJlc3VsdCkgcmVzdWx0KQor ICAgICgocmVzdWx0IGlucHV0KQorICAgICAoKyAxICByZXN1bHQpKSkpCisKKworOzsgVGhl c2UgdHdvIHRha2UgYSBwcmVkaWNhdGUgYW5kIHJldHVybnMgcmVkdWNpbmcgZnVuY3Rpb25z IHRoYXQgYmVoYXZlCis7OyBsaWtlIGFueSBhbmQgZXZlcnkgZnJvbSBzcmZpLTEKKyhkZWZp bmUgKHJhbnkgcHJlZCkKKyAgKGNhc2UtbGFtYmRhCisgICAgKCgpICNmKQorICAgICgocmVz dWx0KSByZXN1bHQpCisgICAgKChyZXN1bHQgaW5wdXQpCisgICAgIChsZXQgKCh0ZXN0IChw cmVkIGlucHV0KSkpCisgICAgICAgKGlmIHRlc3QKKyAgICAgICAgICAgKHJlZHVjZWQgdGVz dCkKKyAgICAgICAgICAgI2YpKSkpKQorCisKKyhkZWZpbmUgKHJldmVyeSBwcmVkKQorICAo Y2FzZS1sYW1iZGEKKyAgICAoKCkgI3QpCisgICAgKChyZXN1bHQpIHJlc3VsdCkKKyAgICAo KHJlc3VsdCBpbnB1dCkKKyAgICAgKGxldCAoKHRlc3QgKHByZWQgaW5wdXQpKSkKKyAgICAg ICAoaWYgKGFuZCByZXN1bHQgdGVzdCkKKyAgICAgICAgICAgdGVzdAorICAgICAgICAgICAo cmVkdWNlZCAjZikpKSkpKQorCisKKyhkZWZpbmUgbGlzdC10cmFuc2R1Y2UKKyAgKGNhc2Ut bGFtYmRhCisgICAgKCh4Zm9ybSBmIGNvbGwpCisgICAgIChsaXN0LXRyYW5zZHVjZSB4Zm9y bSBmIChmKSBjb2xsKSkKKyAgICAoKHhmb3JtIGYgaW5pdCBjb2xsKQorICAgICAobGV0KiAo KHhmICh4Zm9ybSBmKSkKKyAgICAgICAgICAgIChyZXN1bHQgKGxpc3QtcmVkdWNlIHhmIGlu aXQgY29sbCkpKQorICAgICAgICh4ZiByZXN1bHQpKSkpKQorCisoZGVmaW5lIHZlY3Rvci10 cmFuc2R1Y2UKKyAgKGNhc2UtbGFtYmRhCisgICAgKCh4Zm9ybSBmIGNvbGwpCisgICAgICh2 ZWN0b3ItdHJhbnNkdWNlIHhmb3JtIGYgKGYpIGNvbGwpKQorICAgICgoeGZvcm0gZiBpbml0 IGNvbGwpCisgICAgIChsZXQqICgoeGYgKHhmb3JtIGYpKQorICAgICAgICAgICAgKHJlc3Vs dCAodmVjdG9yLXJlZHVjZSB4ZiBpbml0IGNvbGwpKSkKKyAgICAgICAoeGYgcmVzdWx0KSkp KSkKKworKGRlZmluZSBzdHJpbmctdHJhbnNkdWNlCisgIChjYXNlLWxhbWJkYQorICAgICgo eGZvcm0gZiBjb2xsKQorICAgICAoc3RyaW5nLXRyYW5zZHVjZSB4Zm9ybSBmIChmKSBjb2xs KSkKKyAgICAoKHhmb3JtIGYgaW5pdCBjb2xsKQorICAgICAobGV0KiAoKHhmICh4Zm9ybSBm KSkKKyAgICAgICAgICAgIChyZXN1bHQgKHN0cmluZy1yZWR1Y2UgeGYgaW5pdCBjb2xsKSkp CisgICAgICAgKHhmIHJlc3VsdCkpKSkpCisKKyhkZWZpbmUgYnl0ZXZlY3Rvci11OC10cmFu c2R1Y2UKKyAgKGNhc2UtbGFtYmRhCisgICAgKCh4Zm9ybSBmIGNvbGwpCisgICAgIChieXRl dmVjdG9yLXU4LXRyYW5zZHVjZSB4Zm9ybSBmIChmKSBjb2xsKSkKKyAgICAoKHhmb3JtIGYg aW5pdCBjb2xsKQorICAgICAobGV0KiAoKHhmICh4Zm9ybSBmKSkKKyAgICAgICAgICAgIChy ZXN1bHQgKGJ5dGV2ZWN0b3ItdTgtcmVkdWNlIHhmIGluaXQgY29sbCkpKQorICAgICAgICh4 ZiByZXN1bHQpKSkpKQorCisoZGVmaW5lIHBvcnQtdHJhbnNkdWNlCisgIChjYXNlLWxhbWJk YQorICAgICgoeGZvcm0gZiBieSkKKyAgICAgKGdlbmVyYXRvci10cmFuc2R1Y2UgeGZvcm0g ZiBieSkpCisgICAgKCh4Zm9ybSBmIGJ5IHBvcnQpCisgICAgIChwb3J0LXRyYW5zZHVjZSB4 Zm9ybSBmIChmKSBieSBwb3J0KSkKKyAgICAoKHhmb3JtIGYgaW5pdCBieSBwb3J0KQorICAg ICAobGV0KiAoKHhmICh4Zm9ybSBmKSkKKyAgICAgICAgICAgIChyZXN1bHQgKHBvcnQtcmVk dWNlIHhmIGluaXQgYnkgcG9ydCkpKQorICAgICAgICh4ZiByZXN1bHQpKSkpKQorCisoZGVm aW5lIGdlbmVyYXRvci10cmFuc2R1Y2UKKyAgKGNhc2UtbGFtYmRhCisgICAgKCh4Zm9ybSBm IGdlbikKKyAgICAgKGdlbmVyYXRvci10cmFuc2R1Y2UgeGZvcm0gZiAoZikgZ2VuKSkKKyAg ICAoKHhmb3JtIGYgaW5pdCBnZW4pCisgICAgIChsZXQqICgoeGYgKHhmb3JtIGYpKQorICAg ICAgICAgICAgKHJlc3VsdCAoZ2VuZXJhdG9yLXJlZHVjZSB4ZiBpbml0IGdlbikpKQorICAg ICAgICh4ZiByZXN1bHQpKSkpKQorCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzsgVHJhbnNkdWNlcnMhICAgIDs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CisKKyhkZWZpbmUgKHRt YXAgZikKKyAgKGxhbWJkYSAocmVkdWNlcikKKyAgICAoY2FzZS1sYW1iZGEKKyAgICAgICgo KSAocmVkdWNlcikpCisgICAgICAoKHJlc3VsdCkgKHJlZHVjZXIgcmVzdWx0KSkgCisgICAg ICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAocmVkdWNlciByZXN1bHQgKGYgaW5wdXQpKSkp KSkKKworCisoZGVmaW5lICh0ZmlsdGVyIHByZWQpCisgIChsYW1iZGEgKHJlZHVjZXIpCisg ICAgKGNhc2UtbGFtYmRhCisgICAgICAoKCkgKHJlZHVjZXIpKQorICAgICAgKChyZXN1bHQp IChyZWR1Y2VyIHJlc3VsdCkpCisgICAgICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAoaWYg KHByZWQgaW5wdXQpCisgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkKKyAgICAg ICAgICAgcmVzdWx0KSkpKSkKKworCisoZGVmaW5lICh0cmVtb3ZlIHByZWQpCisgIChsYW1i ZGEgKHJlZHVjZXIpCisgICAgKGNhc2UtbGFtYmRhCisgICAgICAoKCkgKHJlZHVjZXIpKQor ICAgICAgKChyZXN1bHQpIChyZWR1Y2VyIHJlc3VsdCkpCisgICAgICAoKHJlc3VsdCBpbnB1 dCkKKyAgICAgICAoaWYgKG5vdCAocHJlZCBpbnB1dCkpCisgICAgICAgICAgIChyZWR1Y2Vy IHJlc3VsdCBpbnB1dCkKKyAgICAgICAgICAgcmVzdWx0KSkpKSkKKworCisoZGVmaW5lICh0 ZmlsdGVyLW1hcCBmKSAKKyAgKGNvbXBvc2UgKHRtYXAgZikgKHRmaWx0ZXIgdmFsdWVzKSkp CisKKworKGRlZmluZSAobWFrZS1yZXBsYWNlciBtYXApCisgIChjb25kCisgICAoKGxpc3Q/ IG1hcCkKKyAgICAobGFtYmRhICh4KQorICAgICAgKGxldCAoKHJlcGxhY2VyPyAoYXNzb2Mg eCBtYXApKSkKKyAgICAgICAgKGlmIHJlcGxhY2VyPworICAgICAgICAgICAgKGNkciByZXBs YWNlcj8pCisgICAgICAgICAgICB4KSkpKQorICAgKChzcmZpNjk6aGFzaC10YWJsZT8gbWFw KQorICAgIChsYW1iZGEgKHgpCisgICAgICAoc3JmaTY5Omhhc2gtdGFibGUtcmVmL2RlZmF1 bHQgbWFwIHggeCkpKQorICAgKChybnJzOmhhc2h0YWJsZT8gbWFwKQorICAgIChsYW1iZGEg KHgpCisgICAgICAocm5yczpoYXNodGFibGUtcmVmIG1hcCB4IHgpKSkKKyAgICgoaGFzaC10 YWJsZT8gbWFwKQorICAgIChsYW1iZGEgKHgpCisgICAgICAoaGFzaC1yZWYgbWFwIHggeCkp KQorICAgKChwcm9jZWR1cmU/IG1hcCkgbWFwKQorICAgKGVsc2UKKyAgICAoZXJyb3IgIlVu c3VwcG9ydGVkIG1hcHBpbmcgaW4gdHJlcGxhY2UiIG1hcCkpKSkKKworOzsgRm9yIGFsaXN0 cyBhbmQgZ3VpbGUncyBuYXRpdmUgaGFzaCB0YWJsZXMsIGNvbXBhcmUgdXNpbmcgZXF1YWw/ LgorOzsgRm9yIHI2cnMgYW5kIHNyZmk2OSBoYXNodGFibGVzLCB1c2Ugd2hhdGV2ZXIgdGhl IGhhc2ggdGFibGUgaGFzIGNvbmZpZ3VyZWQuCisoZGVmaW5lICh0cmVwbGFjZSBtYXApCisg ICh0bWFwIChtYWtlLXJlcGxhY2VyIG1hcCkpKQorCisKKyhkZWZpbmUgKHRkcm9wIG4pCisg IChsYW1iZGEgKHJlZHVjZXIpCisgICAgKGxldCAoKG5ldy1uICgrIDEgbikpKQorICAgICAg KGNhc2UtbGFtYmRhCisgICAgICAgICgoKSAocmVkdWNlcikpCisgICAgICAgICgocmVzdWx0 KSAocmVkdWNlciByZXN1bHQpKQorICAgICAgICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAg IChzZXQhIG5ldy1uICgtIG5ldy1uIDEpKQorICAgICAgICAgKGlmIChwb3NpdGl2ZT8gbmV3 LW4pCisgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAgKHJlZHVjZXIgcmVzdWx0 IGlucHV0KSkpKSkpKQorCisKKyhkZWZpbmUgKHRkcm9wLXdoaWxlIHByZWQpCisgIChsYW1i ZGEgKHJlZHVjZXIpCisgICAgKGxldCAoKGRyb3A/ICN0KSkKKyAgICAgIChjYXNlLWxhbWJk YQorICAgICAgICAoKCkgKHJlZHVjZXIpKQorICAgICAgICAoKHJlc3VsdCkgKHJlZHVjZXIg cmVzdWx0KSkKKyAgICAgICAgKChyZXN1bHQgaW5wdXQpCisgICAgICAgICAoaWYgKGFuZCAo cHJlZCBpbnB1dCkgZHJvcD8pCisgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAg KGJlZ2luCisgICAgICAgICAgICAgICAoc2V0ISBkcm9wPyAjZikKKyAgICAgICAgICAgICAg IChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkpKSkpKSkpCisKKworKGRlZmluZSAodHRha2UgbikK KyAgKGxhbWJkYSAocmVkdWNlcikKKyAgICA7OyB3ZSBuZWVkIHRvIHJlc2V0IG5ldy1uIGZv ciBldmVyeSBuZXcgdHJhbnNkdWN0aW9uCisgICAgKGxldCAoKG5ldy1uIG4pKQorICAgICAg KGNhc2UtbGFtYmRhCisgICAgICAgICgoKSAocmVkdWNlcikpCisgICAgICAgICgocmVzdWx0 KSAocmVkdWNlciByZXN1bHQpKQorICAgICAgICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAg IChsZXQgKChyZXN1bHQgKGlmIChwb3NpdGl2ZT8gbmV3LW4pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAocmVkdWNlciByZXN1bHQgaW5wdXQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXN1bHQpKSkKKyAgICAgICAgICAgKHNldCEgbmV3LW4gKC0gbmV3LW4gMSkp CisgICAgICAgICAgIChpZiAobm90IChwb3NpdGl2ZT8gbmV3LW4pKQorICAgICAgICAgICAg ICAgKGVuc3VyZS1yZWR1Y2VkIHJlc3VsdCkKKyAgICAgICAgICAgICAgIHJlc3VsdCkpKSkp KSkKKworCisKKyhkZWZpbmUgdHRha2Utd2hpbGUKKyAgKGNhc2UtbGFtYmRhCisgICAgKChw cmVkKSAodHRha2Utd2hpbGUgcHJlZCAobGFtYmRhIChyZXN1bHQgaW5wdXQpIHJlc3VsdCkp KQorICAgICgocHJlZCByZXRmKQorICAgICAobGFtYmRhIChyZWR1Y2VyKQorICAgICAgIChs ZXQgKCh0YWtlPyAjdCkpCisgICAgICAgICAoY2FzZS1sYW1iZGEKKyAgICAgICAgICAgKCgp IChyZWR1Y2VyKSkKKyAgICAgICAgICAgKChyZXN1bHQpIChyZWR1Y2VyIHJlc3VsdCkpCisg ICAgICAgICAgICgocmVzdWx0IGlucHV0KQorICAgICAgICAgICAgKGlmIChhbmQgdGFrZT8g KHByZWQgaW5wdXQpKQorICAgICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkK KyAgICAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgICAgICAgIChzZXQhIHRha2U/ ICNmKQorICAgICAgICAgICAgICAgICAgKGVuc3VyZS1yZWR1Y2VkIChyZXRmIHJlc3VsdCBp bnB1dCkpKSkpKSkpKSkpCisKKworCisoZGVmaW5lICh0Y29uY2F0ZW5hdGUgcmVkdWNlcikK KyAgKGxldCAoKHByZXNlcnZpbmctcmVkdWNlciAocHJlc2VydmluZy1yZWR1Y2VkIHJlZHVj ZXIpKSkKKyAgICAoY2FzZS1sYW1iZGEKKyAgICAgICgoKSAocmVkdWNlcikpCisgICAgICAo KHJlc3VsdCkgKHJlZHVjZXIgcmVzdWx0KSkKKyAgICAgICgocmVzdWx0IGlucHV0KQorICAg ICAgIChsaXN0LXJlZHVjZSBwcmVzZXJ2aW5nLXJlZHVjZXIgcmVzdWx0IGlucHV0KSkpKSkK KworCisoZGVmaW5lICh0YXBwZW5kLW1hcCBmKQorICAoY29tcG9zZSAodG1hcCBmKSB0Y29u Y2F0ZW5hdGUpKQorCisKKworOzsgRmxhdHRlbnMgZXZlcnl0aGluZyBhbmQgcGFzc2VzIGVh Y2ggdmFsdWUgdGhyb3VnaCB0aGUgcmVkdWNlcgorOzsgKGxpc3QtdHJhbnNkdWNlIHRmbGF0 dGVuIGNvbmogKGxpc3QgMSAyIChsaXN0IDMgNCAnKDUgNikgNyA4KSkpID0+ICgxIDIgMyA0 IDUgNiA3IDgpCisoZGVmaW5lIHRmbGF0dGVuCisgIChsYW1iZGEgKHJlZHVjZXIpCisgICAg KGNhc2UtbGFtYmRhCisgICAgICAoKCkgJygpKQorICAgICAgKChyZXN1bHQpIChyZWR1Y2Vy IHJlc3VsdCkpCisgICAgICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAoaWYgKGxpc3Q/IGlu cHV0KQorICAgICAgICAgICAobGlzdC1yZWR1Y2UgKHByZXNlcnZpbmctcmVkdWNlZCAodGZs YXR0ZW4gcmVkdWNlcikpIHJlc3VsdCBpbnB1dCkKKyAgICAgICAgICAgKHJlZHVjZXIgcmVz dWx0IGlucHV0KSkpKSkpCisKKworCis7OyByZW1vdmVzIGR1cGxpY2F0ZSBjb25zZWN1dGl2 ZSBlbGVtZW50cworKGRlZmluZSB0ZGVsZXRlLW5laWdoYm9yLWR1cGxpY2F0ZXMKKyAgKGNh c2UtbGFtYmRhCisgICAgKCgpICh0ZGVsZXRlLW5laWdoYm9yLWR1cGxpY2F0ZXMgZXF1YWw/ KSkKKyAgICAoKGVxdWFsaXR5LXByZWQ/KSAKKyAgICAgKGxhbWJkYSAocmVkdWNlcikKKyAg ICAgICAobGV0ICgocHJldiBub3RoaW5nKSkKKyAgICAgICAgIChjYXNlLWxhbWJkYQorICAg ICAgICAgICAoKCkgKHJlZHVjZXIpKQorICAgICAgICAgICAoKHJlc3VsdCkgKHJlZHVjZXIg cmVzdWx0KSkKKyAgICAgICAgICAgKChyZXN1bHQgaW5wdXQpCisgICAgICAgICAgICAoaWYg KGVxdWFsaXR5LXByZWQ/IHByZXYgaW5wdXQpCisgICAgICAgICAgICAgICAgcmVzdWx0Cisg ICAgICAgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAgICAgICAoc2V0ISBwcmV2IGlu cHV0KQorICAgICAgICAgICAgICAgICAgKHJlZHVjZXIgcmVzdWx0IGlucHV0KSkpKSkpKSkp KQorCisKKzs7IERlbGV0ZXMgYWxsIGR1cGxpY2F0ZXMgdGhhdCBwYXNzZXMgdGhyb3VnaC4K KyhkZWZpbmUgdGRlbGV0ZS1kdXBsaWNhdGVzCisgIChjYXNlLWxhbWJkYQorICAgICgoKSAo dGRlbGV0ZS1kdXBsaWNhdGVzIGVxdWFsPykpCisgICAgKChlcXVhbGl0eS1wcmVkPykKKyAg ICAgKGxhbWJkYSAocmVkdWNlcikKKyAgICAgICAobGV0ICgoYWxyZWFkeS1zZWVuIChzcmZp Njk6bWFrZS1oYXNoLXRhYmxlIGVxdWFsaXR5LXByZWQ/KSkpCisgICAgICAgICAoY2FzZS1s YW1iZGEKKyAgICAgICAgICAgKCgpIChyZWR1Y2VyKSkKKyAgICAgICAgICAgKChyZXN1bHQp IChyZWR1Y2VyIHJlc3VsdCkpCisgICAgICAgICAgICgocmVzdWx0IGlucHV0KQorICAgICAg ICAgICAgKGlmIChzcmZpNjk6aGFzaC10YWJsZS1leGlzdHM/IGFscmVhZHktc2VlbiBpbnB1 dCkKKyAgICAgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgICAgICAgICAoYmVnaW4KKyAg ICAgICAgICAgICAgICAgIChzcmZpNjk6aGFzaC10YWJsZS1zZXQhIGFscmVhZHktc2VlbiBp bnB1dCAjdCkKKyAgICAgICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkpKSkp KSkpKSkKKworOzsgUGFydGl0aW9ucyB0aGUgaW5wdXQgaW50byBsaXN0cyBvZiBOIGl0ZW1z LiBJZiB0aGUgaW5wdXQgc3RvcHMgaXQgZmx1c2hlcyB3aGF0ZXZlcgorOzsgaXQgaGFzIGNv bGxlY3RlZCwgd2hpY2ggbWF5IGJlIHNob3J0ZXIgdGhhbiBuLgorOzsgSSBhbSBub3Qgc3Vy ZSBhYm91dCB0aGUgY29ycmVjdG5lc3MgYWJvdXQgdGhpcy4gSXQgc2VlbXMgdG8gd29yay4K KyhkZWZpbmUgKHRzZWdtZW50IG4pCisgIChpZiAobm90IChhbmQgKGludGVnZXI/IG4pIChw b3NpdGl2ZT8gbikpKQorICAgICAgKGVycm9yICJhcmd1bWVudCB0byB0c2VnbWVudCBtdXN0 IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpCisgICAgICAobGFtYmRhIChyZWR1Y2VyKQorICAg ICAgICAobGV0ICgoaSAwKQorICAgICAgICAgICAgICAoY29sbGVjdCAobWFrZS12ZWN0b3Ig bikpKQorICAgICAgICAgIChjYXNlLWxhbWJkYQorICAgICAgICAgICAgKCgpIChyZWR1Y2Vy KSkKKyAgICAgICAgICAgICgocmVzdWx0KQorICAgICAgICAgICAgIDs7IGlmIHRoZXJlIGlz IGFueXRoaW5nIGNvbGxlY3RlZCB3aGVuIHdlIGFyZSBhc2tlZCB0byBxdWl0CisgICAgICAg ICAgICAgOzsgd2UgZmx1c2ggaXQgdG8gdGhlIHJlbWFpbmluZyB0cmFuc2R1Y2VycworICAg ICAgICAgICAgIChsZXQgKChyZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgKGlmICh6ZXJv PyBpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAgICAg ICAgICAgICAocmVkdWNlciByZXN1bHQgKHZlY3Rvci0+bGlzdCBjb2xsZWN0IDAgaSkpKSkp CisgICAgICAgICAgICAgICAoc2V0ISBpIDApCisgICAgICAgICAgICAgICA7OyBub3cgZmlu YWxseSwgcGFzcyBpdCBkb3duc3RyZWFtcworICAgICAgICAgICAgICAgKHJlZHVjZXIgcmVz dWx0KSkpCisgICAgICAgICAgICAoKHJlc3VsdCBpbnB1dCkKKyAgICAgICAgICAgICAodmVj dG9yLXNldCEgY29sbGVjdCBpIGlucHV0KQorICAgICAgICAgICAgIChzZXQhIGkgKCsgaSAx KSkKKyAgICAgICAgICAgICA7OyBJZiB3ZSBoYXZlIGNvbGxlY3RlZCBlbm91Z2ggaW5wdXQg d2UgY2FuIHBhc3MgaXQgb24gZG93bnN0cmVhbQorICAgICAgICAgICAgIChpZiAoPCBpIG4p CisgICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAgICAgICAobGV0ICgobmV4 dC1pbnB1dCAodmVjdG9yLT5saXN0IGNvbGxlY3QgMCBpKSkpCisgICAgICAgICAgICAgICAg ICAgKHNldCEgaSAwKQorICAgICAgICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBuZXh0 LWlucHV0KSkpKSkpKSkpCisKKworOzsgSSBhbSBub3Qgc3VyZSBhYm91dCB0aGUgY29ycmVj dG5lc3Mgb2YgdGhpcy4gSXQgc2VlbXMgdG8gd29yay4KKzs7IHdlIGNvdWxkIG1heWJlIG1h a2UgaXQgZmFzdGVyPworKGRlZmluZSAodHBhcnRpdGlvbiBmKQorICAobGFtYmRhIChyZWR1 Y2VyKQorICAgIChsZXQqICgocHJldiBub3RoaW5nKQorICAgICAgICAgICAoY29sbGVjdCAn KCkpKQorICAgICAgKGNhc2UtbGFtYmRhCisgICAgICAgICgoKSAocmVkdWNlcikpCisgICAg ICAgICgocmVzdWx0KQorICAgICAgICAgKGxldCAoKHJlc3VsdAorICAgICAgICAgICAgICAg IChpZiAobnVsbD8gY29sbGVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0CisgICAg ICAgICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCAocmV2ZXJzZSEgY29sbGVjdCkpKSkp CisgICAgICAgICAgIChzZXQhIGNvbGxlY3QgJygpKQorICAgICAgICAgICAocmVkdWNlciBy ZXN1bHQpKSkKKyAgICAgICAgKChyZXN1bHQgaW5wdXQpCisgICAgICAgICAobGV0ICgoZm91 dCAoZiBpbnB1dCkpKQorICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgKChvciAoZXF1 YWw/IGZvdXQgcHJldikgKG5vdGhpbmc/IHByZXYpKSA7IGNvbGxlY3QKKyAgICAgICAgICAg ICAoc2V0ISBwcmV2IGZvdXQpCisgICAgICAgICAgICAgKHNldCEgY29sbGVjdCAoY29ucyBp bnB1dCBjb2xsZWN0KSkKKyAgICAgICAgICAgICByZXN1bHQpCisgICAgICAgICAgICAoZWxz ZSA7IGZsdXNoIHdoYXQgd2UgY29sbGVjdGVkIGFscmVhZHkgdG8gdGhlIHJlZHVjZXIKKyAg ICAgICAgICAgICAobGV0ICgobmV4dC1pbnB1dCAgKHJldmVyc2UhIGNvbGxlY3QpKSkKKyAg ICAgICAgICAgICAgIChzZXQhIHByZXYgZm91dCkKKyAgICAgICAgICAgICAgIChzZXQhIGNv bGxlY3QgKGxpc3QgaW5wdXQpKQorICAgICAgICAgICAgICAgKHJlZHVjZXIgcmVzdWx0IG5l eHQtaW5wdXQpKSkpKSkpKSkpCisKKworOzsgSW50ZXJwb3NlcyBlbGVtZW50IGJldHdlZW4g ZWFjaCB2YWx1ZSBwdXNoZWQgdGhyb3VnaCB0aGUgdHJhbnNkdWN0aW9uLgorKGRlZmluZSAo dGFkZC1iZXR3ZWVuIGVsZW0pCisgIChsYW1iZGEgKHJlZHVjZXIpCisgICAgKGxldCAoKHNl bmQtZWxlbT8gI2YpKQorICAgICAgKGNhc2UtbGFtYmRhCisgICAgICAgICgoKSAocmVkdWNl cikpCisgICAgICAgICgocmVzdWx0KQorICAgICAgICAgKHJlZHVjZXIgcmVzdWx0KSkKKyAg ICAgICAgKChyZXN1bHQgaW5wdXQpCisgICAgICAgICAoaWYgc2VuZC1lbGVtPworICAgICAg ICAgICAgIChsZXQgKChyZXN1bHQgKHJlZHVjZXIgcmVzdWx0IGVsZW0pKSkKKyAgICAgICAg ICAgICAgIChpZiAocmVkdWNlZD8gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgIHJlc3Vs dAorICAgICAgICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkpKQorICAgICAg ICAgICAgIChiZWdpbgorICAgICAgICAgICAgICAgKHNldCEgc2VuZC1lbGVtPyAjdCkKKyAg ICAgICAgICAgICAgIChyZWR1Y2VyIHJlc3VsdCBpbnB1dCkpKSkpKSkpCisKKworOzsgaW5k ZXhlcyBldmVyeSB2YWx1ZSBwYXNzZWQgdGhyb3VnaCBpbiBhIGNvbnMgcGFpciBhcyBpbiAo aW5kZXggLiB2YWx1ZSkuIEJ5IGRlZmF1bHQgc3RhcnRzIGF0IDAKKyhkZWZpbmUgdGVudW1l cmF0ZQorICAoY2FzZS1sYW1iZGEKKyAgICAoKCkgKHRlbnVtZXJhdGUgMCkpCisgICAgKChu KQorICAgICAobGFtYmRhIChyZWR1Y2VyKQorICAgICAgIChsZXQgKChuIG4pKQorICAgICAg ICAgKGNhc2UtbGFtYmRhCisgICAgICAgICAgICgoKSAocmVkdWNlcikpCisgICAgICAgICAg ICgocmVzdWx0KSAocmVkdWNlciByZXN1bHQpKQorICAgICAgICAgICAoKHJlc3VsdCBpbnB1 dCkKKyAgICAgICAgICAgIChsZXQgKChpbnB1dCAoY29ucyBuIGlucHV0KSkpCisgICAgICAg ICAgICAgIChzZXQhIG4gKCsgbiAxKSkKKyAgICAgICAgICAgICAgKHJlZHVjZXIgcmVzdWx0 IGlucHV0KSkpKSkpKSkpCisKKworKGRlZmluZSB0bG9nCisgIChjYXNlLWxhbWJkYQorICAg ICgoKSAodGxvZyAobGFtYmRhIChyZXN1bHQgaW5wdXQpICh3cml0ZSBpbnB1dCkgKG5ld2xp bmUpKSkpCisgICAgKChsb2ctZnVuY3Rpb24pCisgICAgIChsYW1iZGEgKHJlZHVjZXIpCisg ICAgICAgKGNhc2UtbGFtYmRhCisgICAgICAgICAoKCkgKHJlZHVjZXIpKQorICAgICAgICAg KChyZXN1bHQpIChyZWR1Y2VyIHJlc3VsdCkpCisgICAgICAgICAoKHJlc3VsdCBpbnB1dCkK KyAgICAgICAgICAobG9nLWZ1bmN0aW9uIHJlc3VsdCBpbnB1dCkKKyAgICAgICAgICAocmVk dWNlciByZXN1bHQgaW5wdXQpKSkpKSkpCisKKworCisKZGlmZiAtLWdpdCBhL21vZHVsZS9z cmZpL3NyZmktMTcxL2dudS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTE3MS9nbnUuc2NtCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uOWFhOGFiMjhlCi0tLSAvZGV2 L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS0xNzEvZ251LnNjbQpAQCAtMCwwICsxLDQ5 IEBACisoZGVmaW5lLW1vZHVsZSAoc3JmaSBzcmZpLTE3MSBnbnUpCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTE3MSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTcxIG1ldGEp CisgICM6ZXhwb3J0ICh0YmF0Y2ggdGZvbGQpKQorCisKKyhkZWZpbmUgdGJhdGNoCisgIChj YXNlLWxhbWJkYQorICAgICgocmVkdWNlcikKKyAgICAgKHRiYXRjaCBpZGVudGl0eSByZWR1 Y2VyKSkKKyAgICAoKHQgcikKKyAgICAgKGxhbWJkYSAocmVkdWNlcikKKyAgICAgICAobGV0 ICgoY3VyLXJlZHVjZXIgKHQgcikpCisgICAgICAgICAgICAgKGN1ci1zdGF0ZSAocikpKQor ICAgICAgICAgKGNhc2UtbGFtYmRhCisgICAgICAgICAgICgoKSAocmVkdWNlcikpCisgICAg ICAgICAgICgocmVzdWx0KQorICAgICAgICAgICAgKGlmIChlcXVhbD8gY3VyLXN0YXRlIChj dXItcmVkdWNlcikpCisgICAgICAgICAgICAgICAgKHJlZHVjZXIgcmVzdWx0KQorICAgICAg ICAgICAgICAgIChsZXQgKChuZXctcmVzIChyZWR1Y2VyIHJlc3VsdCAoY3VyLXJlZHVjZXIg Y3VyLXN0YXRlKSkpKQorICAgICAgICAgICAgICAgICAgKGlmIChyZWR1Y2VkPyBuZXctcmVz KQorICAgICAgICAgICAgICAgICAgICAgIChyZWR1Y2VyICh1bnJlZHVjZSBuZXctcmVzKSkK KyAgICAgICAgICAgICAgICAgICAgICAocmVkdWNlciBuZXctcmVzKSkpKSkKKyAgICAgICAg ICAgKChyZXN1bHQgdmFsdWUpCisgICAgICAgICAgICAobGV0ICgodmFsIChjdXItcmVkdWNl ciBjdXItc3RhdGUgdmFsdWUpKSkKKyAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAg ICAgIDs7IGN1ci1yZWR1Y2VyIGlzIGRvbmUuIFB1c2ggdmFsdWUgZG93bnN0cmVhbQorICAg ICAgICAgICAgICAgOzsgcmUtaW5zdGFudGlhdGUgdGhlIHN0YXRlIGFuZCB0aGUgY3VyLXJl ZHVjZXIKKyAgICAgICAgICAgICAgICgocmVkdWNlZD8gdmFsKQorICAgICAgICAgICAgICAg IChsZXQgKCh1bnJlZHVjZWQtdmFsICh1bnJlZHVjZSB2YWwpKSkKKyAgICAgICAgICAgICAg ICAgIChzZXQhIGN1ci1yZWR1Y2VyICh0IHIpKQorICAgICAgICAgICAgICAgICAgKHNldCEg Y3VyLXN0YXRlIChjdXItcmVkdWNlcikpCisgICAgICAgICAgICAgICAgICAocmVkdWNlciBy ZXN1bHQgKGN1ci1yZWR1Y2VyIHVucmVkdWNlZC12YWwpKSkpCisgICAgICAgICAgICAgICAo ZWxzZQorICAgICAgICAgICAgICAgIChzZXQhIGN1ci1zdGF0ZSB2YWwpCisgICAgICAgICAg ICAgICAgcmVzdWx0KSkpKSkpKSkpKQorCisKKyhkZWZpbmUqICh0Zm9sZCByZWR1Y2VyICM6 b3B0aW9uYWwgKHNlZWQgKHJlZHVjZXIpKSkKKyAgKGxhbWJkYSAocikKKyAgICAobGV0ICgo c3RhdGUgc2VlZCkpCisgICAgICAoY2FzZS1sYW1iZGEKKyAgICAgICAgKCgpIChyKSkKKyAg ICAgICAgKChyZXN1bHQpIChyIHJlc3VsdCkpCisgICAgICAgICgocmVzdWx0IHZhbHVlKQor ICAgICAgICAgKHNldCEgc3RhdGUgKHJlZHVjZXIgc3RhdGUgdmFsdWUpKQorICAgICAgICAg KGlmIChyZWR1Y2VkPyBzdGF0ZSkKKyAgICAgICAgICAgICAocmVkdWNlZCAocmVkdWNlciAo dW5yZWR1Y2Ugc3RhdGUpKSkKKyAgICAgICAgICAgICAociByZXN1bHQgc3RhdGUpKSkpKSkp CmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTE3MS9tZXRhLnNjbSBiL21vZHVsZS9z cmZpL3NyZmktMTcxL21ldGEuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uZGQxZmQwNmM0Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS0x NzEvbWV0YS5zY20KQEAgLTAsMCArMSwxMTUgQEAKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OworOzsgQ29weXJpZ2h0IDIwMTkgTGludXMgQmrDtnJuc3RhbQorOzsKKzs7IFlvdSBt YXkgdXNlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgdGhlIGxpY2Vuc2UgaW4gdGhlIFNSRkkg ZG9jdW1lbnQgb3IgdGhlCis7OyBsaWNlbnNlIGJlbG93LgorOzsKKzs7IFBlcm1pc3Npb24g dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUg Zm9yIGFueQorOzsgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFu dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorOzsgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIHNvdXJjZSBjb3BpZXMuCis7 OyBUaGUgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiwgd2l0aG91dCBhbnkgZXhwcmVz cyBvciBpbXBsaWVkIHdhcnJhbnRpZXMuCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsK KworCis7OyBUaGlzIG1vZHVsZSBuYW1lIGlzIGd1aWxlLXNwZWNpZmljLiBUaGUgY29ycmVj dCBuYW1lIGlzIG9mIGNvdXJzZQorOzsgKHNyZmkgMTcxIG1ldGEpCisoZGVmaW5lLW1vZHVs ZSAoc3JmaSBzcmZpLTE3MSBtZXRhKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS05KQor ICAjOnVzZS1tb2R1bGUgKChybnJzIGJ5dGV2ZWN0b3JzKSAjOnNlbGVjdCAoYnl0ZXZlY3Rv ci1sZW5ndGggYnl0ZXZlY3Rvci11OC1yZWYpKQorICAjOmV4cG9ydCAocmVkdWNlZCByZWR1 Y2VkPworICAgICAgICAgICAgdW5yZWR1Y2UKKyAgICAgICAgICAgIGVuc3VyZS1yZWR1Y2Vk CisgICAgICAgICAgICBwcmVzZXJ2aW5nLXJlZHVjZWQKKworICAgICAgICAgICAgbGlzdC1y ZWR1Y2UKKyAgICAgICAgICAgIHZlY3Rvci1yZWR1Y2UKKyAgICAgICAgICAgIHN0cmluZy1y ZWR1Y2UKKyAgICAgICAgICAgIGJ5dGV2ZWN0b3ItdTgtcmVkdWNlCisgICAgICAgICAgICBw b3J0LXJlZHVjZQorICAgICAgICAgICAgZ2VuZXJhdG9yLXJlZHVjZSkpCisKKworOzsgQSBy ZWR1Y2VkIHZhbHVlIGlzIHN0b3BzIHRoZSB0cmFuc2R1Y3Rpb24uCisoZGVmaW5lLXJlY29y ZC10eXBlIDxyZWR1Y2VkPgorICAocmVkdWNlZCB2YWwpCisgIHJlZHVjZWQ/CisgICh2YWwg dW5yZWR1Y2UpKQorCisKKzs7IGhlbHBlciBmdW5jdGlvbiB3aGljaCBlbnN1cmVzIHggaXMg cmVkdWNlZC4KKyhkZWZpbmUgKGVuc3VyZS1yZWR1Y2VkIHgpCisgIChpZiAocmVkdWNlZD8g eCkKKyAgICAgIHgKKyAgICAgIChyZWR1Y2VkIHgpKSkKKworCis7OyBoZWxwZXIgZnVuY3Rp b24gdGhhdCB3cmFwcyBhIHJlZHVjZWQgdmFsdWUgdHdpY2Ugc2luY2UgcmVkdWNpbmcgZnVu Y3Rpb25zIChsaWtlIGxpc3QtcmVkdWNlKQorOzsgdW53cmFwcyB0aGVtLiB0Y29uY2F0ZW5h dGUgaXMgYSBnb29kIGV4YW1wbGU6IGl0IHJlLXVzZXMgaXQncyByZWR1Y2VyIG9uIGl0J3Mg aW5wdXQgdXNpbmcgbGlzdC1yZWR1Y2UuCis7OyBJZiB0aGF0IHJlZHVjdGlvbiBmaW5pc2hl cyBlYXJseSBhbmQgcmV0dXJucyBhIHJlZHVjZWQgdmFsdWUsIGxpc3QtcmVkdWNlIHdvdWxk ICJ1bnJlZHVjZSIKKzs7IHRoYXQgdmFsdWUgYW5kIHRyeSB0byBjb250aW51ZSB0aGUgdHJh bnNkdWNpbmcgcHJvY2Vzcy4KKyhkZWZpbmUgKHByZXNlcnZpbmctcmVkdWNlZCByZWR1Y2Vy KQorICAobGFtYmRhIChhIGIpCisgICAgKGxldCAoKHJldHVybiAocmVkdWNlciBhIGIpKSkK KyAgICAgIChpZiAocmVkdWNlZD8gcmV0dXJuKQorICAgICAgICAgIChyZWR1Y2VkIHJldHVy bikKKyAgICAgICAgICByZXR1cm4pKSkpCisKKworOzsgVGhpcyBpcyB3aGVyZSB0aGUgbWFn aWMgdG9mdSBpcyBjb29rZWQKKyhkZWZpbmUgKGxpc3QtcmVkdWNlIGYgaWRlbnRpdHkgbHN0 KQorICAoaWYgKG51bGw/IGxzdCkKKyAgICAgIGlkZW50aXR5CisgICAgICAobGV0ICgodiAo ZiBpZGVudGl0eSAoY2FyIGxzdCkpKSkKKyAgICAgICAgKGlmIChyZWR1Y2VkPyB2KQorICAg ICAgICAgICAgKHVucmVkdWNlIHYpCisgICAgICAgICAgICAobGlzdC1yZWR1Y2UgZiB2IChj ZHIgbHN0KSkpKSkpCisKKyhkZWZpbmUgKHZlY3Rvci1yZWR1Y2UgZiBpZGVudGl0eSB2ZWMp CisgIChsZXQgKChsZW4gKHZlY3Rvci1sZW5ndGggdmVjKSkpCisgICAgKGxldCBsb29wICgo aSAwKSAoYWNjIGlkZW50aXR5KSkKKyAgICAgIChpZiAoPSBpIGxlbikKKyAgICAgICAgICBh Y2MKKyAgICAgICAgICAobGV0ICgoYWNjIChmIGFjYyAodmVjdG9yLXJlZiB2ZWMgaSkpKSkK KyAgICAgICAgICAgIChpZiAocmVkdWNlZD8gYWNjKQorICAgICAgICAgICAgICAgICh1bnJl ZHVjZSBhY2MpCisgICAgICAgICAgICAgICAgKGxvb3AgKCsgaSAxKSBhY2MpKSkpKSkpCisK KyhkZWZpbmUgKHN0cmluZy1yZWR1Y2UgZiBpZGVudGl0eSBzdHIpCisgIChsZXQgKChsZW4g KHN0cmluZy1sZW5ndGggc3RyKSkpCisgICAgKGxldCBsb29wICgoaSAwKSAoYWNjIGlkZW50 aXR5KSkKKyAgICAgIChpZiAoPSBpIGxlbikKKyAgICAgICAgICBhY2MKKyAgICAgICAgICAo bGV0ICgoYWNjIChmIGFjYyAoc3RyaW5nLXJlZiBzdHIgaSkpKSkKKyAgICAgICAgICAgIChp ZiAocmVkdWNlZD8gYWNjKQorICAgICAgICAgICAgICAgICh1bnJlZHVjZSBhY2MpCisgICAg ICAgICAgICAgICAgKGxvb3AgKCsgaSAxKSBhY2MpKSkpKSkpCisKKyhkZWZpbmUgKGJ5dGV2 ZWN0b3ItdTgtcmVkdWNlIGYgaWRlbnRpdHkgdmVjKQorICAobGV0ICgobGVuIChieXRldmVj dG9yLWxlbmd0aCB2ZWMpKSkKKyAgICAobGV0IGxvb3AgKChpIDApIChhY2MgaWRlbnRpdHkp KQorICAgICAgKGlmICg9IGkgbGVuKQorICAgICAgICAgIGFjYworICAgICAgICAgIChsZXQg KChhY2MgKGYgYWNjIChieXRldmVjdG9yLXU4LXJlZiB2ZWMgaSkpKSkKKyAgICAgICAgICAg IChpZiAocmVkdWNlZD8gYWNjKQorICAgICAgICAgICAgICAgICh1bnJlZHVjZSBhY2MpCisg ICAgICAgICAgICAgICAgKGxvb3AgKCsgaSAxKSBhY2MpKSkpKSkpCisKKyhkZWZpbmUgKHBv cnQtcmVkdWNlIGYgaWRlbnRpdHkgcmVhZGVyIHBvcnQpCisgIChsZXQgbG9vcCAoKHZhbCAo cmVhZGVyIHBvcnQpKSAoYWNjIGlkZW50aXR5KSkKKyAgICAoaWYgKGVvZi1vYmplY3Q/IHZh bCkKKyAgICAgICAgYWNjCisgICAgICAgIChsZXQgKChhY2MgKGYgYWNjIHZhbCkpKQorICAg ICAgICAgIChpZiAocmVkdWNlZD8gYWNjKQorICAgICAgICAgICAgICAodW5yZWR1Y2UgYWNj KQorICAgICAgICAgICAgICAobG9vcCAocmVhZGVyIHBvcnQpIGFjYykpKSkpKQorCisoZGVm aW5lIChnZW5lcmF0b3ItcmVkdWNlIGYgaWRlbnRpdHkgZ2VuKQorICAobGV0IGxvb3AgKCh2 YWwgKGdlbikpIChhY2MgaWRlbnRpdHkpKQorICAgIChpZiAoZW9mLW9iamVjdD8gdmFsKQor ICAgICAgICBhY2MKKyAgICAgICAgKGxldCAoKGFjYyAoZiBhY2MgdmFsKSkpCisgICAgICAg ICAgKGlmIChyZWR1Y2VkPyBhY2MpCisgICAgICAgICAgICAgICh1bnJlZHVjZSBhY2MpCisg ICAgICAgICAgICAgIChsb29wIChnZW4pIGFjYykpKSkpKQorCisKZGlmZiAtLWdpdCBhL3Rl c3Qtc3VpdGUvdGVzdHMvc3JmaS0xNzEudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0x NzEudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmM2ZDU3NGFm MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xNzEudGVzdApA QCAtMCwwICsxLDE5NSBAQAorOzsgVE9ETzogdGVzdCBhbGwgdHJhbnNkdWNlcnMgdGhhdCB0 YWtlIGFuIGVxdWFsaXR5IHByZWRpY2F0ZQorOzsgVE9ETzogdGVzdCB0cmVwbGFjZSB3aXRo IGFsbCBraW5kcyBvZiBoYXNoIHRhYmxlcworCisoZGVmaW5lLW1vZHVsZSAodGVzdC1zcmZp LTE3MSkKKyAgIzp1c2UtbW9kdWxlICh0ZXN0LXN1aXRlIGxpYikKKyAgIzp1c2UtbW9kdWxl IChpY2UtOSBoYXNoLXRhYmxlKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xNzEpCisg ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTE3MSBnbnUpCisgICM6dXNlLW1vZHVsZSAocm5y cyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxlICgocm5ycyBoYXNodGFibGVzKSAjOnBy ZWZpeCBybnJzOikKKyAgIzp1c2UtbW9kdWxlICgoc3JmaSBzcmZpLTY5KSAjOnByZWZpeCBz cmZpOikpCisKKyhkZWZpbmUgKGFkZDEgeCkgKCsgeCAxKSkKKworCisoZGVmaW5lIG51bWVy aWMtbGlzdCAoaW90YSA1KSkKKyhkZWZpbmUgbnVtZXJpYy12ZWMgKGxpc3QtPnZlY3RvciBu dW1lcmljLWxpc3QpKQorKGRlZmluZSBidiAobGlzdC0+dTh2ZWN0b3IgbnVtZXJpYy1saXN0 KSkKKyhkZWZpbmUgdGVzdC1zdHJpbmcgIjAxMjM0NTY3ODlhYmNkZWYiKQorKGRlZmluZSBs aXN0LW9mLWNoYXJzIChzdHJpbmctPmxpc3QgdGVzdC1zdHJpbmcpKQorCisKKzs7IGZvciB0 ZXN0aW5nIGFsbCB0cmVwbGFjZSB2YXJpYXRpb25zCisoZGVmaW5lIHJlcGxhY2UtYWxpc3Qg JygoMSAuIHMpICgyIC4gYykgKDMgLiBoKSAoNCAuIGUpICg1IC4gbSkpKQorKGRlZmluZSBn dWlsZS1oYXNodGFibGUgKGFsaXN0LT5oYXNoLXRhYmxlIHJlcGxhY2UtYWxpc3QpKQorKGRl ZmluZSBzcmZpNjktaGFzaHRhYmxlIChzcmZpOmFsaXN0LT5oYXNoLXRhYmxlIHJlcGxhY2Ut YWxpc3QpKQorKGRlZmluZSBybnJzLWhhc2h0YWJsZSAocm5yczptYWtlLWVxLWhhc2h0YWJs ZSkpCisocm5yczpoYXNodGFibGUtc2V0ISBybnJzLWhhc2h0YWJsZSAxICdzKQorKHJucnM6 aGFzaHRhYmxlLXNldCEgcm5ycy1oYXNodGFibGUgMiAnYykKKyhybnJzOmhhc2h0YWJsZS1z ZXQhIHJucnMtaGFzaHRhYmxlIDMgJ2gpCisocm5yczpoYXNodGFibGUtc2V0ISBybnJzLWhh c2h0YWJsZSA0ICdlKQorKHJucnM6aGFzaHRhYmxlLXNldCEgcm5ycy1oYXNodGFibGUgNSAn bSkKKyhkZWZpbmUgKHJlcGxhY2UtZnVuY3Rpb24gdmFsKQorICAoY2FzZSB2YWwKKyAgICAo KDEpICdzKQorICAgICgoMikgJ2MpCisgICAgKCgzKSAnaCkKKyAgICAoKDQpICdlKQorICAg ICgoNSkgJ20pCisgICAgKGVsc2UgdmFsKSkpCisKKworOzsgVGVzdCBwcm9jZWR1cmVzIGZv ciBwb3J0LXRyYW5zZHVjZQorOzsgYnJva2VuIG91dCB0byBwcm9wZXJseSBjbG9zZSBwb3J0 CisoZGVmaW5lIChwb3J0LXRyYW5zZHVjZS10ZXN0KQorICAobGV0KiAoKHBvcnQgKG9wZW4t aW5wdXQtc3RyaW5nICIwIDEgMiAzIDQiKSkKKyAgICAgICAgKHJlcyAoZXF1YWw/IDE1IChw b3J0LXRyYW5zZHVjZSAodG1hcCBhZGQxKSArIHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIw IDEgMiAzIDQiKSkpKSkKKyAgICAoY2xvc2UtcG9ydCBwb3J0KQorICAgIHJlcykpCisoZGVm aW5lIChwb3J0LXRyYW5zZHVjZS13aXRoLWlkZW50aXR5LXRlc3QpCisgIChsZXQqICgocG9y dCAob3Blbi1pbnB1dC1zdHJpbmcgIjAgMSAyIDMgNCIpKQorICAgICAgICAgKHJlcyAoZXF1 YWw/IDE1IChwb3J0LXRyYW5zZHVjZSAodG1hcCBhZGQxKSArIDAgcmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIjAgMSAyIDMgNCIpKSkpKQorICAgIChjbG9zZS1wb3J0IHBvcnQpCisgICAg cmVzKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRyYW5zZHVjZXJzIgorICAocGFzcy1pZiAi dG1hcCIgKGVxdWFsPyAnKDEgMiAzIDQgNSkgKGxpc3QtdHJhbnNkdWNlICh0bWFwIGFkZDEp IHJjb25zIG51bWVyaWMtbGlzdCkpKQorCisgIChwYXNzLWlmICJ0ZmlsdGVyIiAoZXF1YWw/ ICcoMCAyIDQpIChsaXN0LXRyYW5zZHVjZSAodGZpbHRlciBldmVuPykgcmNvbnMgbnVtZXJp Yy1saXN0KSkpCisKKyAgKHBhc3MtaWYgInRmaWx0ZXIrdG1hcCIgKGVxdWFsPworICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygxIDMgNSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0LXRyYW5zZHVjZSAoY29tcG9zZSAodGZpbHRlciBldmVuPykgKHRtYXAgYWRk MSkpIHJjb25zIG51bWVyaWMtbGlzdCkpKQorCisgIChwYXNzLWlmICJ0ZmlsdGVyLW1hcCIK KyAgICAgICAgICAgKGVxdWFsPyAnKDEgMyA1KQorICAgICAgICAgICAgICAgICAgIChsaXN0 LXRyYW5zZHVjZSAodGZpbHRlci1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiAoZXZlbj8geCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgrIHggMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICNmKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjb25zIG51 bWVyaWMtbGlzdCkpKQorCisgIChwYXNzLWlmICJ0cmVtb3ZlIgorICAgICAgICAgICAoZXF1 YWw/IChsaXN0LXRyYW5zZHVjZSAodHJlbW92ZSBjaGFyLWFscGhhYmV0aWM/KSByY291bnQg bGlzdC1vZi1jaGFycykKKyAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyYW5zZHVjZSAo dHJlbW92ZSBjaGFyLWFscGhhYmV0aWM/KSByY291bnQgdGVzdC1zdHJpbmcpKSkKKworICAo cGFzcy1pZiAidHJlcGxhY2Ugd2l0aCBhbGlzdCIKKyAgICAgICAgICAgKGVxdWFsPyAnKHMg YyBoIGUgbSBlICByIG8gYyBrIHMpCisgICAgICAgICAgICAgICAgICAgKGxpc3QtdHJhbnNk dWNlICh0cmVwbGFjZSByZXBsYWNlLWFsaXN0KSByY29ucyAnKDEgMiAzIDQgNSA0IHIgbyBj IGsgcykgKSkpCisKKyAgKHBhc3MtaWYgInRyZXBsYWNlIHdpdGggcmVwbGFjZS1mdW5jdGlv biIKKyAgICAgICAgICAgKGVxdWFsPyAnKHMgYyBoIGUgbSBlICByIG8gYyBrIHMpCisgICAg ICAgICAgICAgICAgICAgKGxpc3QtdHJhbnNkdWNlICh0cmVwbGFjZSByZXBsYWNlLWZ1bmN0 aW9uKSByY29ucyAnKDEgMiAzIDQgNSA0IHIgbyBjIGsgcykpKSkKKworCisgIChwYXNzLWlm ICJ0cmVwbGFjZSB3aXRoIGd1aWxlIGhhc2gtdGFibGUiCisgICAgICAgICAgIChlcXVhbD8g JyhzIGMgaCBlIG0gZSAgciBvIGMgayBzKQorICAgICAgICAgICAgICAgICAgIChsaXN0LXRy YW5zZHVjZSAodHJlcGxhY2UgZ3VpbGUtaGFzaHRhYmxlKSByY29ucyAnKDEgMiAzIDQgNSA0 IHIgbyBjIGsgcykpKSkKKworICAocGFzcy1pZiAidHJlcGxhY2Ugd2l0aCBzcmZpLTY5IGhh c2gtdGFibGUiCisgICAgICAgICAgIChlcXVhbD8gJyhzIGMgaCBlIG0gZSAgciBvIGMgayBz KQorICAgICAgICAgICAgICAgICAgIChsaXN0LXRyYW5zZHVjZSAodHJlcGxhY2Ugc3JmaTY5 LWhhc2h0YWJsZSkgcmNvbnMgJygxIDIgMyA0IDUgNCByIG8gYyBrIHMpKSkpCisKKyAgKHBh c3MtaWYgInRyZXBsYWNlIHdpdGggcm5ycyBoYXNoLXRhYmxlIgorICAgICAgICAgICAoZXF1 YWw/ICcocyBjIGggZSBtIGUgIHIgbyBjIGsgcykKKyAgICAgICAgICAgICAgICAgICAobGlz dC10cmFuc2R1Y2UgKHRyZXBsYWNlIHJucnMtaGFzaHRhYmxlKSByY29ucyAnKDEgMiAzIDQg NSA0IHIgbyBjIGsgcykpKSkKKworCisKKyAgKHBhc3MtaWYgInR0YWtlIgorICAgICAgICAg ICAoZXF1YWw/IDYgKGxpc3QtdHJhbnNkdWNlICh0dGFrZSA0KSArIG51bWVyaWMtbGlzdCkp KQorCisgIChwYXNzLWlmICJ0ZHJvcCIKKyAgICAgICAgICAgKGVxdWFsPyA3IChsaXN0LXRy YW5zZHVjZSAodGRyb3AgMykgKyBudW1lcmljLWxpc3QpKSkKKworICAocGFzcy1pZiAidGRy b3Atd2hpbGUiCisgICAgICAgICAgIChlcXVhbD8gJygzIDQpIChsaXN0LXRyYW5zZHVjZSAo dGRyb3Atd2hpbGUgKGxhbWJkYSAoeCkgKDwgeCAzKSkpIHJjb25zIG51bWVyaWMtbGlzdCkp KQorCisgIChwYXNzLWlmICJ0dGFrZS13aGlsZSIgKGVxdWFsPyAnKDAgMSAyKSAobGlzdC10 cmFuc2R1Y2UgKHR0YWtlLXdoaWxlIChsYW1iZGEgKHgpICg8IHggMykpKSByY29ucyBudW1l cmljLWxpc3QpKSkKKworICAocGFzcy1pZiAidGNvbmNhdGVuYXRlIgorICAgICAgICAgICAo ZXF1YWw/ICcoMCAxIDIgMyA0KSAobGlzdC10cmFuc2R1Y2UgdGNvbmNhdGVuYXRlIHJjb25z ICcoKDAgMSkgKDIgMykgKDQpKSkpKQorCisgIChwYXNzLWlmICJ0YXBwZW5kLW1hcCIKKyAg ICAgICAgICAgKGVxdWFsPyAnKDEgMiAyIDQgMyA2KSAobGlzdC10cmFuc2R1Y2UgKHRhcHBl bmQtbWFwIChsYW1iZGEgKHgpIChsaXN0IHggKCogeCAyKSkpKSByY29ucyAnKDEgMiAzKSkp KQorCisgIChwYXNzLWlmICJ0ZGVsZXRlLW5laWdoYm9yLWR1cGxpY2F0ZXMiCisgICAgICAg ICAgIChlcXVhbD8gJygxIDIgMSAyIDMpIChsaXN0LXRyYW5zZHVjZSAodGRlbGV0ZS1uZWln aGJvci1kdXBsaWNhdGVzKSByY29ucyAnKDEgMSAxIDIgMiAxIDIgMyAzKSkpKQorCisgIChw YXNzLWlmICJ0ZGVsZXRlLW5laWdoYm9yLWR1cGxpY2F0ZXMgd2l0aCBlcXVhbGl0eSBwcmVk aWNhdGUiCisgICAgICAgICAgIChlcXVhbD8KKyAgICAgICAgICAgICcoYSBiIGMgImhlaiIg ImhlaiIpCisgICAgICAgICAgICAobGlzdC10cmFuc2R1Y2UgKHRkZWxldGUtbmVpZ2hib3It ZHVwbGljYXRlcyBlcT8pIHJjb25zIChsaXN0ICdhICdhICdiICdjICdjICJoZWoiIChzdHJp bmcgI1xoICNcZSAjXGopKSkpKQorCisgIChwYXNzLWlmICJ0ZGVsZXRlLWR1cGxpY2F0ZXMi CisgICAgICAgICAgIChlcXVhbD8gJygxIDIgMyA0KSAobGlzdC10cmFuc2R1Y2UgKHRkZWxl dGUtZHVwbGljYXRlcykgcmNvbnMgJygxIDEgMiAxIDIgMyAzIDEgMiAzIDQpKSkpCisKKyAg KHBhc3MtaWYgInRkZWxldGUtZHVwbGljYXRlcyB3aXRoIHByZWRpY2F0ZSIKKyAgICAgICAg ICAgKGVxdWFsPyAnKCJoZWoiICJob3BwIikKKyAgICAgICAgICAgICAgICAgICAobGlzdC10 cmFuc2R1Y2UgKHRkZWxldGUtZHVwbGljYXRlcyBzdHJpbmctY2k9PykgcmNvbnMgKGxpc3Qg ImhlaiIgIkhFSiIgImhvcHAiICJIT1BQIiAiaGVKIikpKSkKKworICAocGFzcy1pZiAidGZs YXR0ZW4iCisgICAgICAgICAgIChlcXVhbD8gJygxIDIgMyA0IDUgNiA3IDggOSkgKGxpc3Qt dHJhbnNkdWNlIHRmbGF0dGVuIHJjb25zICcoKDEgMikgMyAoNCAoNSA2KSA3KSA4ICg5KSkp KSkKKworICAocGFzcy1pZiAidHBhcnRpdGlvbiIKKyAgICAgICAgICAgKGVxdWFsPyAnKCgx IDEgMSAxKSAoMiAyIDIgMikgKDMgMyAzKSAoNCA0IDQgNCkpIChsaXN0LXRyYW5zZHVjZSAo dHBhcnRpdGlvbiBldmVuPykgcmNvbnMgJygxIDEgMSAxIDIgMiAyIDIgMyAzIDMgNCA0IDQg NCkpKSkKKworICAocGFzcy1pZiAidHNlZ21lbnQiCisgICAgICAgICAgIChlcXVhbD8gJygo MCAxKSAoMiAzKSAoNCkpICh2ZWN0b3ItdHJhbnNkdWNlICh0c2VnbWVudCAyKSByY29ucyBu dW1lcmljLXZlYykpKQorCisgIChwYXNzLWlmICJ0YWRkLWJldHdlZW4iCisgICAgICAgICAg IChlcXVhbD8gJygwIGFuZCAxIGFuZCAyIGFuZCAzIGFuZCA0KSAobGlzdC10cmFuc2R1Y2Ug KHRhZGQtYmV0d2VlbiAnYW5kKSByY29ucyBudW1lcmljLWxpc3QpKSkKKworICAocGFzcy1p ZiAidGVudW1lcmF0ZSIKKyAgICAgICAgICAgKGVxdWFsPyAnKCgtMSAuIDApICgwIC4gMSkg KDEgLiAyKSAoMiAuIDMpICgzIC4gNCkpIChsaXN0LXRyYW5zZHVjZSAodGVudW1lcmF0ZSAo LSAxKSkgcmNvbnMgbnVtZXJpYy1saXN0KSkpCisKKyAgKHBhc3MtaWYgInRiYXRjaCIKKyAg ICAgICAgICAgKGVxdWFsPworICAgICAgICAgICAgJygoMCAxKSAoMiAzKSAoNCkpCisgICAg ICAgICAgICAobGlzdC10cmFuc2R1Y2UgKHRiYXRjaCAodHRha2UgMikgcmNvbnMpIHJjb25z IG51bWVyaWMtbGlzdCkpKQorCisgIChwYXNzLWlmICJ0Zm9sZCIKKyAgICAgICAgICAgKGVx dWFsPworICAgICAgICAgICAgJygwIDEgMyA2IDEwKQorICAgICAgICAgICAgKGxpc3QtdHJh bnNkdWNlICh0Zm9sZCArKSByY29ucyBudW1lcmljLWxpc3QpKSkpCisKKworKHdpdGgtdGVz dC1wcmVmaXggIngtdHJhbnNkdWNlIgorICAocGFzcy1pZiAibGlzdC10cmFuc2R1Y2UiIAor ICAgICAgICAgICAoZXF1YWw/IDE1IChsaXN0LXRyYW5zZHVjZSAodG1hcCBhZGQxKSArIG51 bWVyaWMtbGlzdCkpKQorCisgIChwYXNzLWlmICJsaXN0LXRyYW5zZHVjZSB3aXRoIGlkZW50 aXR5IgorICAgICAgICAgICAoZXF1YWw/IDE1IChsaXN0LXRyYW5zZHVjZSAodG1hcCBhZGQx KSArIDAgbnVtZXJpYy1saXN0KSkpCisKKyAgKHBhc3MtaWYgInZlY3Rvci10cmFuc2R1Y2Ui CisgICAgICAgICAgIChlcXVhbD8gMTUgKHZlY3Rvci10cmFuc2R1Y2UgKHRtYXAgYWRkMSkg KyBudW1lcmljLXZlYykpKQorCisgIChwYXNzLWlmICJ2ZWN0b3ItdHJhbnNkdWNlIHdpdGgg aWRlbnRpdHkiIChlcXVhbD8gMTUgKHZlY3Rvci10cmFuc2R1Y2UgKHRtYXAgYWRkMSkgKyAw IG51bWVyaWMtdmVjKSkpCisKKworICAocGFzcy1pZiAicG9ydC10cmFuc2R1Y2UiIChwb3J0 LXRyYW5zZHVjZS10ZXN0KSkKKyAgKHBhc3MtaWYgInBvcnQtdHJhbnNkdWNlIHdpdGggaWRl bnRpdHkiIChwb3J0LXRyYW5zZHVjZS13aXRoLWlkZW50aXR5LXRlc3QpKQorCisKKyAgOzsg Q29udmVydHMgZWFjaCBudW1lcmljIGNoYXIgdG8gaXQncyBjb3JyZXNwb25kaW5nIGludGVn ZXIgIGFuZCBzdW1zIHRoZW0uCisgIChwYXNzLWlmICJzdHJpbmctdHJhbnNkdWNlIiAKKyAg ICAgICAgICAgKGVxdWFsPyAxNSAoc3RyaW5nLXRyYW5zZHVjZSAgKHRtYXAgKGxhbWJkYSAo eCkgKC0gKGNoYXItPmludGVnZXIgeCkgNDcpKSkgKyAiMDEyMzQiKSkpCisKKyAgKHBhc3Mt aWYgInN0cmluZy10cmFuc2R1Y2Ugd2l0aCBpZGVudGl0eSIgCisgICAgICAgICAgIChlcXVh bD8gMTUgKHN0cmluZy10cmFuc2R1Y2UgICh0bWFwIChsYW1iZGEgKHgpICgtIChjaGFyLT5p bnRlZ2VyIHgpIDQ3KSkpICsgMCAiMDEyMzQiKSkpCisKKyAgKHBhc3MtaWYgImdlbmVyYXRv ci10cmFuc2R1Y2UiIAorICAgICAgICAgICAoZXF1YWw/ICcoMSAyIDMpIChwYXJhbWV0ZXJp emUgKChjdXJyZW50LWlucHV0LXBvcnQgKG9wZW4taW5wdXQtc3RyaW5nICIxIDIgMyIpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmF0b3ItdHJhbnNkdWNlICh0 bWFwIChsYW1iZGEgKHgpIHgpKSByY29ucyByZWFkKSkpKQorCisgIChwYXNzLWlmICJnZW5l cmF0b3ItdHJhbnNkdWNlIHdpdGggaWRlbnRpdHkiIAorICAgICAgICAgICAoZXF1YWw/ICco MSAyIDMpIChwYXJhbWV0ZXJpemUgKChjdXJyZW50LWlucHV0LXBvcnQgKG9wZW4taW5wdXQt c3RyaW5nICIxIDIgMyIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5l cmF0b3ItdHJhbnNkdWNlICh0bWFwIChsYW1iZGEgKHgpIHgpKSByY29ucyAnKCkgcmVhZCkp KSkKKworICAocGFzcy1pZiAiYnl0ZXZlY3Rvci11OC10cmFuc2R1Y2UiIAorICAgICAgICAg ICAoZXF1YWw/IDE1IChieXRldmVjdG9yLXU4LXRyYW5zZHVjZSAodG1hcCBhZGQxKSArIGJ2 KSkpCisKKyAgKHBhc3MtaWYgImJ5dGV2ZWN0b3ItdTgtdHJhbnNkdWNlIHdpdGggaWRlbnRp dHkiIAorICAgICAgICAgICAoZXF1YWw/IDE1IChieXRldmVjdG9yLXU4LXRyYW5zZHVjZSAo dG1hcCBhZGQxKSArIDAgYnYpKSkpCi0tIAoyLjI0LjEKCg== --437cd8e90e8646e9a30270743b78464e Content-Disposition: attachment;filename="0002-Added-documentation-and-tests-for-srfi-171.patch" Content-Type: application/octet-stream; name="0002-Added-documentation-and-tests-for-srfi-171.patch" Content-Transfer-Encoding: BASE64 RnJvbSAzOWJlNDgwOGY1OTIxYTcxNjkxNmRlNmY0ZGIwMzk5MDQxMmYyNTE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TGludXM9MjBCaj1DMz1CNnJuc3Rh bT89IDxsaW51cy5iam9ybnN0YW1AZmFzdG1haWwuc2U+CkRhdGU6IFN1biwgMjIgRGVjIDIw MTkgMTU6Mzk6MzUgKzAxMDAKU3ViamVjdDogW1BBVENIIDIvMl0gQWRkZWQgZG9jdW1lbnRh dGlvbiBhbmQgdGVzdHMgZm9yIHNyZmktMTcxLgoKKiBkb2MvcmVmL3NyZmktbW9kdWxlcy50 ZXhpIC0gQWRhcHRlZCBhbmQgYWRkZWQgdGhlIHNyZmkgZG9jdW1lbnQgdG8gdGhlCmd1aWxl IHNyZmkgZG9jdW1lbnRhdGlvbgoqIG1vZHVsZS9NYWtlZmlsZS5hbSAtIEFkZGVkIHRoZSBz cmZpIGZpbGVzIGZvciBjb21waWxhdGlvbgoqIHRlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gLSBB ZGRlZCB0aGUgc3JmaS0xNzEudGVzdCB0byB0aGUgdGVzdCBzdWl0ZS4KLS0tCiBkb2MvcmVm L3NyZmktbW9kdWxlcy50ZXhpIHwgMzk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBtb2R1bGUvTWFrZWZpbGUuYW0gICAgICAgIHwgICAzICsKIHRlc3Qtc3Vp dGUvTWFrZWZpbGUuYW0gICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0MDMgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9yZWYvc3JmaS1tb2R1bGVzLnRleGkgYi9kb2Mv cmVmL3NyZmktbW9kdWxlcy50ZXhpCmluZGV4IDhmNWI2NDNjNi4uZmJkZmUwMDc5IDEwMDY0 NAotLS0gYS9kb2MvcmVmL3NyZmktbW9kdWxlcy50ZXhpCisrKyBiL2RvYy9yZWYvc3JmaS1t b2R1bGVzLnRleGkKQEAgLTY0LDYgKzY0LDcgQEAgZ2V0IHRoZSByZWxldmFudCBTUkZJIGRv Y3VtZW50cyBmcm9tIHRoZSBTUkZJIGhvbWUgcGFnZQogKiBTUkZJLTk4OjogICAgICAgICAg ICAgICAgICAgICBBY2Nlc3NpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogKiBTUkZJLTEw NTo6ICAgICAgICAgICAgICAgICAgICBDdXJseS1pbmZpeCBleHByZXNzaW9ucy4KICogU1JG SS0xMTE6OiAgICAgICAgICAgICAgICAgICAgQm94ZXMuCisqIFNSRkktMTcxOjogICAgICAg ICAgICAgICAgICAgIFRyYW5zZHVjZXJzCiBAZW5kIG1lbnUKIAogCkBAIC01NjAyLDYgKzU2 MDMsNDA0IEBAIFJldHVybiB0aGUgY3VycmVudCBjb250ZW50cyBvZiBAdmFye2JveH0uCiBT ZXQgdGhlIGNvbnRlbnRzIG9mIEB2YXJ7Ym94fSB0byBAdmFye3ZhbHVlfS4KIEBlbmQgZGVm Zm4KIAorCisKKworQG5vZGUgU1JGSS0xNzEKK0BzdWJzZWN0aW9uIFRyYW5zZHVjZXJzCitA Y2luZGV4IFNSRkktMTcxCitAY2luZGV4IHRyYW5zZHVjZXJzCisKK1NvbWUgb2YgdGhlIG1v c3QgY29tbW9uIG9wZXJhdGlvbnMgdXNlZCBpbiB0aGUgU2NoZW1lIGxhbmd1YWdlIGFyZSB0 aG9zZSB0cmFuc2Zvcm1pbmcgbGlzdHM6IG1hcCwgZmlsdGVyLCB0YWtlIGFuZCBzbyBvbi4g VGhleSB3b3JrIHdlbGwsIGFyZSB3ZWxsIHVuZGVyc3Rvb2QsIGFuZCBhcmUgdXNlZCBkYWls eSBieSBtb3N0IFNjaGVtZSBwcm9ncmFtbWVycy4gVGhleSBhcmUgaG93ZXZlciBub3QgZ2Vu ZXJhbCBiZWNhdXNlIHRoZXkgb25seSB3b3JrIG9uIGxpc3RzLCBhbmQgdGhleSBkbyBub3Qg Y29tcG9zZSB2ZXJ5IHdlbGwgc2luY2UgY29tYmluaW5nIE4gb2YgdGhlbSBidWlsZHMgQGNv ZGV7KC0gTiAxKX0gaW50ZXJtZWRpYXRlIGxpc3RzLgorCitUcmFuc2R1Y2VycyBhcmUgb2Js aXZpb3VzIHRvIHdoYXQga2luZCBvZiBwcm9jZXNzIHRoZXkgYXJlIHVzZWQgaW4sIGFuZCBh cmUgY29tcG9zYWJsZSB3aXRob3V0IGJ1aWxkaW5nIGludGVybWVkaWF0ZSBjb2xsZWN0aW9u cy4gVGhpcyBtZWFucyB3ZSBjYW4gY3JlYXRlIGEgdHJhbnNkdWNlciB0aGF0IHNxdWFyZXMg YWxsIGV2ZW4gbnVtYmVyczogQGNvZGV7KGNvbXBvc2UgKHRmaWx0ZXIgb2RkPykgKHRtYXAg KGxhbWJkYSAoeCkgKCogeCB4KSkpKX0gYW5kIHJldXNlIGl0IHdpdGggbGlzdHMsIHZlY3Rv cnMsIG9yIGluIGp1c3QgYWJvdXQgYW55IGNvbnRleHQgd2hlcmUgZGF0YSBmbG93cyBpbiBv bmUgZGlyZWN0aW9uLiBXZSBjb3VsZCB1c2UgaXQgYXMgYSBwcm9jZXNzaW5nIHN0ZXAgZm9y IGFzeW5jaHJvbm91cyBjaGFubmVscywgd2l0aCBhbiBldmVudCBmcmFtZXdvcmsgYXMgYSBw cmUtcHJvY2Vzc2luZyBzdGVwLCBvciBldmVuIGluIGxhenkgY29udGV4dHMgd2hlcmUgeW91 IHBhc3MgYSBsYXp5IGNvbGxlY3Rpb24gYW5kIGEgdHJhbnNkdWNlciB0byBhIGZ1bmN0aW9u IGFuZCBnZXQgYSBuZXcgbGF6eSBjb2xsZWN0aW9uIGJhY2suCisKK1RoZSB0cmFkaXRpb25h bCBTY2hlbWUgYXBwcm9hY2ggb2YgaGF2aW5nIGNvbGxlY3Rpb24tc3BlY2lmaWMgcHJvY2Vk dXJlcyBpcyBub3QgY2hhbmdlZC4gV2UgaW5zdGVhZCBzcGVjaWZ5IGEgZ2VuZXJhbCBmb3Jt IG9mIHRyYW5zZm9ybWF0aW9ucyB0aGF0IGNvbXBsZW1lbnQgdGhlc2UgcHJvY2VkdXJlcy4g VGhlIGJlbmVmaXRzIGFyZSBvYnZpb3VzOiBhIGNsZWFyLCB3ZWxsLXVuZGVyc3Rvb2Qgd2F5 IG9mIGRlc2NyaWJpbmcgY29tbW9uIHRyYW5zZm9ybWF0aW9ucyBpbiBhIHdheSB0aGF0IGlz IGZhc3RlciB0aGFuIGp1c3QgY2hhaW5pbmcgdGhlIGNvbGxlY3Rpb24tc3BlY2lmaWMgY291 bnRlcnBhcnRzLiBGb3IgZ3VpbGUgaW4gcGFydGljdWxhciB0aGlzIG1lYW5zIGEgbG90IGJl dHRlciBHQyBwZXJmb3JtYW5jZS4KKworTm90aWNlIGhvd2V2ZXIgdGhhdCBAY29kZXsoY29t cG9zZSBAZG90c3t9KX0gY29tcG9zZXMgdHJhbnNkdWNlcnMgbGVmdC10by1yaWdodCwgZHVl IHRvIGhvdyB0cmFuc2R1Y2VycyBhcmUgaW5pdGlhdGVkLgorCitAbWVudQorKiBTUkZJLTE3 MSBHZW5lcmFsIERpc2N1c3Npb246OiAgICAgICBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0 IHRyYW5zZHVjZXJzCisqIFNSRkktMTcxIEFwcGx5aW5nIFRyYW5zZHVjZXJzOjogICAgIERv Y3VtZW50YXRpb24gb2YgY29sbGVjdGlvbi1zcGVjaWZpYyBmb3JtcworKiBTUkZJLTE3MSBS ZWR1Y2Vyczo6ICAgICAgICAgICAgICAgICBSZWR1Y2VycyBzcGVjaWZpZWQgYnkgdGhlIFNS RkkKKyogU1JGSS0xNzEgVHJhbnNkdWNlcnM6OiAgICAgICAgICAgICAgVHJhbnNkdWNlcnMg c3BlY2lmaWVkIGJ5IHRoZSBTUkZJCisqIFNSRkktMTcxIEhlbHBlcnM6OiAgICAgICAgICAg ICAgICAgIFV0aWxpdGllcyBmb3Igd3JpdGluZyB5b3VyIG93biB0cmFuc2R1Y2VycworQGVu ZCBtZW51CisKK0Bub2RlIFNSRkktMTcxIEdlbmVyYWwgRGlzY3Vzc2lvbgorQHN1YnN1YnNl Y3Rpb24gU1JGSS0xNzEgR2VuZXJhbCBEaXNjdXNzaW9uCitAY2luZGV4IHRyYW5zZHVjZXJz IGRpc2N1c3Npb24KKworQHN1YmhlYWRpbmcgVGhlIGNvbmNlcHQgb2YgcmVkdWNlcnMKK1Ro ZSBjZW50cmFsIHBhcnQgb2YgdHJhbnNkdWNlcnMgYXJlIDMtYXJpdHkgcmVkdWNpbmcgZnVu Y3Rpb25zLgorCitAaXRlbWl6ZSBAYnVsbGV0CitAaXRlbQorKCk6IFByb2R1Y2UgYW4gaWRl bnRpdHkKKworQGl0ZW0KKyhyZXN1bHQtc28tZmFyKTogY29tcGxldGlvbi4gSWYgeW91IGhh dmUgbm90aGluZyB0byBkbywgdGhlbiBqdXN0IHJldHVybiB0aGUgcmVzdWx0IHNvIGZhcgor CitAaXRlbQorKHJlc3VsdC1zby1mYXIgaW5wdXQpIGRvIHdoYXRldmVyIHlvdSBsaWtlIHRv IHRoZSBpbnB1dCBhbmQgcHJvZHVjZSBhIG5ldyByZXN1bHQtc28tZmFyCitAZW5kIGl0ZW1p emUKKworSW4gdGhlIGNhc2Ugb2YgYSBzdW1taW5nIEBjb2Rleyt9IHJlZHVjZXIsIHRoZSBy ZWR1Y2VyIHdvdWxkIHByb2R1Y2UsIGluIGFyaXR5IG9yZGVyOiBAY29kZXswfSwgQGNvZGV7 cmVzdWx0LXNvLWZhcn0sIEBjb2RleygrIHJlc3VsdC1zby1mYXIgaW5wdXQpfS4gVGhpcyBo YXBwZW5zIHRvIGJlIGV4YWN0bHkgd2hhdCB0aGUgcmVndWxhciBAY29kZXsrfSBkb2VzLgor CitAc3ViaGVhZGluZyBUaGUgY29uY2VwdCBvZiB0cmFuc2R1Y2VycworCitBIHRyYW5zZHVj ZXIgaXMgYSBvbmUtYXJpdHkgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZHVjZXIgYW5kIHBy b2R1Y2VzIGEgcmVkdWNpbmcgZnVuY3Rpb24gdGhhdCBiZWhhdmVzIGFzIGZvbGxvd3M6CisK K0BpdGVtaXplIEBidWxsZXQKK0BpdGVtCisoKTogY2FsbHMgcmVkdWNlciB3aXRoIG5vIGFy Z3VtZW50cyAocHJvZHVjaW5nIGl0cyBpZGVudGl0eSkKKworQGl0ZW0KKyhyZXN1bHQtc28t ZmFyKTogTWF5YmUgdHJhbnNmb3JtIHRoZSByZXN1bHQtc28tZmFyIGFuZCBjYWxsIHJlZHVj ZXIgd2l0aCBpdC4KKworQGl0ZW0KKyhyZXN1bHQtc28tZmFyIGlucHV0KSBNYXliZSBkbyBz b21ldGhpbmcgdG8gaW5wdXQgYW5kIG1heWJlIGNhbGwgdGhlIHJlZHVjZXIgd2l0aCByZXN1 bHQtc28tZmFyIGFuZCB0aGUgbWF5YmUtdHJhbnNmb3JtZWQgaW5wdXQuCitAZW5kIGl0ZW1p emUKKworYSBzaW1wbGUgZXhhbXBsZSBpcyBhcyBmb2xsb3dpbmc6IEBjb2RleyAobGlzdC10 cmFuc2R1Y2UgKHRmaWx0ZXIgb2RkPykgKyAnKDEgMiAzIDQgNSkpfS4gVGhpcyBmaXJzdCBy ZXR1cm5zIGEgdHJhbnNkdWNlciBmaWx0ZXJpbmcgYWxsIG9kZCBlbGVtZW50cywgdGhlbiBp dCBydW5zIEBjb2Rleyt9IHdpdGhvdXQgYXJndW1lbnRzIHRvIHJldHJpZXZlIGl0cyBpZGVu dGl0eS4gSXQgdGhlbiBzdGFydHMgdGhlIHRyYW5zZHVjdGlvbiBieSBwYXNzaW5nIEBjb2Rl eyt9IHRvIHRoZSB0cmFuc2R1Y2VyIHJldHVybmVkIGJ5IEBjb2Rleyh0ZmlsdGVyIG9kZD8p fSB3aGljaCByZXR1cm5zIGEgcmVkdWNpbmcgZnVuY3Rpb24uIEl0IHdvcmtzIG5vdCB1bmxp a2UgcmVkdWNlIGZyb20gU1JGSSAxLCBidXQgYWxzbyBjaGVja3Mgd2hldGhlciBvbmUgb2Yg dGhlIGludGVybWVkaWF0ZSB0cmFuc2R1Y2VycyByZXR1cm5zIGEgInJlZHVjZWQiIHZhbHVl IChpbXBsZW1lbnRlZCBhcyBhIFNSRkkgOSByZWNvcmQpLCB3aGljaCBtZWFucyB0aGUgcmVk dWN0aW9uIGZpbmlzaGVkIGVhcmx5LgorCitCZWNhdXNlIHRyYW5zZHVjZXJzIGNvbXBvc2Ug YW5kIHRoZSBmaW5hbCByZWR1Y3Rpb24gaXMgb25seSBleGVjdXRlZCBpbiB0aGUgbGFzdCBz dGVwLCBjb21wb3NlZCB0cmFuc2R1Y2VycyB3aWxsIG5vdCBidWlsZCBhbnkgaW50ZXJtZWRp YXRlIHJlc3VsdCBvciBjb2xsZWN0aW9ucy4gQWx0aG91Z2ggdGhlIG5vcm1hbCB3YXkgb2Yg dGhpbmtpbmcgYWJvdXQgYXBwbGljYXRpb24gb2YgY29tcG9zZWQgZnVuY3Rpb25zIGlzIHJp Z2h0IHRvIGxlZnQsIGR1ZSB0byBob3cgdGhlIHRyYW5zZHVjdGlvbiBpcyBidWlsdCBpdCBp cyBhcHBsaWVkIGxlZnQgdG8gcmlnaHQuIEBjb2Rleyhjb21wb3NlICh0ZmlsdGVyIG9kZD8p ICh0bWFwIHNxcnQpKX0gd2lsbCBjcmVhdGUgYSB0cmFuc2R1Y2VyIHRoYXQgZmlyc3QgZmls dGVycyBvdXQgYW55IG9kZCB2YWx1ZXMgYW5kIHRoZW4gY29tcHV0ZXMgdGhlIHNxdWFyZSBy b290IG9mIHRoZSByZXN0LgorCisKK0BzdWJoZWFkaW5nIFN0YXRlCisKKyBFdmVuIHRob3Vn aCB0cmFuc2R1Y2VycyBhcHBlYXIgdG8gYmUgc29tZXdoYXQgb2YgYSBnZW5lcmFsaXNhdGlv biBvZiBtYXAgYW5kIGZyaWVuZHMsIHRoaXMgaXMgbm90IHJlYWxseSB0cnVlLiBTaW5jZSB0 cmFuc2R1Y2VycyBkb24ndCBrbm93IGluIHdoaWNoIGNvbnRleHQgdGhleSBhcmUgYmVpbmcg dXNlZCwgc29tZSB0cmFuc2R1Y2VycyBtdXN0IGtlZXAgc3RhdGUgd2hlcmUgdGhlaXIgY29s bGVjdGlvbi1zcGVjaWZpYyBjb3VudGVycGFydHMgZG8gbm90LiBUaGUgdHJhbnNkdWNlcnMg dGhhdCBrZWVwIHN0YXRlIGRvIHNvIHVzaW5nIGhpZGRlbiBtdXRhYmxlIHN0YXRlLCBhbmQg YXMgc3VjaCBhbGwgdGhlIGNhdmVhdHMgb2YgbXV0YXRpb24sIHBhcmFsbGVsaXNtLCBhbmQg bXVsdGktc2hvdCBjb250aW51YXRpb25zIGFwcGx5LiBFYWNoIHRyYW5zZHVjZXIga2VlcGlu ZyBzdGF0ZSBpcyBjbGVhcmx5IGRlc2NyaWJlZCBhcyBkb2luZyBzbyBpbiB0aGUgZG9jdW1l bnRhdGlvbi4KKworQHN1YmhlYWRpbmcgTmFtaW5nCisKK1JlZHVjZXJzIGV4cG9ydGVkIGZy b20gdGhlIHRyYW5zZHVjZXJzIG1vZHVsZSBhcmUgbmFtZWQgYXMgaW4gdGhlaXIgU1JGSS0x IGNvdW50ZXJwYXJ0LCBidXQgcHJlcGVuZGVkIHdpdGggYW4gci4gVHJhbnNkdWNlcnMgYWxz byBmb2xsb3cgdGhhdCBuYW1pbmcsIGJ1dCBhcmUgcHJlcGVuZGVkIHdpdGggYSB0LgorCisK K0Bub2RlIFNSRkktMTcxIEFwcGx5aW5nIFRyYW5zZHVjZXJzCitAc3Vic3Vic2VjdGlvbiBB cHBseWluZyBUcmFuc2R1Y2VycworQGNpbmRleCB0cmFuc2R1Y2VycyBhcHBseWluZworCitA ZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGxpc3QtdHJhbnNkdWNlIHhmb3JtIGYgbHN0CitA ZGVmZm54IHtTY2hlbWUgUHJvY2VkdXJlfSBsaXN0LXRyYW5zZHVjZSB4Zm9ybSBmIGlkZW50 aXR5IGxzdAorIEluaXRpYWxpemVzIHRoZSB0cmFuc2R1Y2VyIEBjb2Rle3hmb3JtfSBieSBw YXNzaW5nIHRoZSByZWR1Y2VyIEBjb2Rle2Z9IHRvIGl0LiBJZiBubyBpZGVudGl0eSBpcyBw cm92aWRlZCwgQGNvZGV7Zn0gaXMgcnVuIHdpdGhvdXQgYXJndW1lbnRzIHRvIHJldHVybiB0 aGUgcmVkdWNlciBpZGVudGl0eS4gSXQgdGhlbiByZWR1Y2VzIG92ZXIgQGNvZGV7bHN0fSB1 c2luZyB0aGUgaWRlbnRpdHkgYXMgdGhlIHNlZWQuCisKK0lmIG9uZSBvZiB0aGUgdHJhbnNk dWNlcnMgZmluaXNoZXMgZWFybHkgKHN1Y2ggYXMgQGNvZGV7dHRha2V9IG9yIEBjb2Rle3Rk cm9wfSksIGl0IGNvbW11bmljYXRlcyB0aGlzIGJ5IHJldHVybmluZyBhIHJlZHVjZWQgdmFs dWUsIHdoaWNoIGluIHRoZSBzYW1wbGUgaW1wbGVtZW50YXRpb24gaXMganVzdCBhIHZhbHVl IHdyYXBwZWQgaW4gYSBTUkZJIDkgcmVjb3JkIHR5cGUgbmFtZWQgInJlZHVjZWQiLiBJZiBz dWNoIGEgdmFsdWUgaXMgcmV0dXJuZWQgYnkgdGhlIHRyYW5zZHVjZXIsIEBjb2Rle2xpc3Qt dHJhbnNkdWNlfSBtdXN0IHN0b3AgZXhlY3V0aW9uIGFuZCByZXR1cm4gYW4gdW5yZWR1Y2Vk IHZhbHVlIGltbWVkaWF0ZWx5LgorQGVuZCBkZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQcm9j ZWR1cmV9IHZlY3Rvci10cmFuc2R1Y2UgeGZvcm0gZiB2ZWMKK0BkZWZmbngge1NjaGVtZSBQ cm9jZWR1cmV9IHZlY3Rvci10cmFuc2R1Y2UgeGZvcm0gZiBpZGVudGl0eSB2ZWMKK0BkZWZm bngge1NjaGVtZSBQcm9jZWR1cmV9IHN0cmluZy10cmFuc2R1Y2UgeGZvcm0gZiBzdHIKK0Bk ZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9IHN0cmluZy10cmFuc2R1Y2UgeGZvcm0gZiBpZGVu dGl0eSBzdHIKK0BkZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9IGJ5dGV2ZWN0b3ItdTgtdHJh bnNkdWNlIHhmb3JtIGYgYnYKK0BkZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9IGJ5dGV2ZWN0 b3ItdTgtdHJhbnNkdWNlIHhmb3JtIGYgaWRlbnRpdHkgYnYKK0BkZWZmbngge1NjaGVtZSBQ cm9jZWR1cmV9IGdlbmVyYXRvci10cmFuc2R1Y2UgeGZvcm0gZiBnZW4KK0BkZWZmbngge1Nj aGVtZSBQcm9jZWR1cmV9IGdlbmVyYXRvci10cmFuc2R1Y2UgeGZvcm0gZiBpZGVudGl0eSBn ZW4KKworU2FtZSBhcyBAY29kZXtsaXN0LXRyYW5zZHVjZX0sIGJ1dCBmb3IgdmVjdG9ycywg c3RyaW5ncywgdTgtYnl0ZXZlY3RvcnMgYW5kIHNyZmktMTU4LXN0eWxlZCBnZW5lcmF0b3Jz IHJlc3BlY3RpdmVseS4KKworQGVuZCBkZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1 cmV9IHBvcnQtdHJhbnNkdWNlIHhmb3JtIGYgcmVhZGVyCitAZGVmZm54IHtTY2hlbWUgUHJv Y2VkdXJlfSBwb3J0LXRyYW5zZHVjZSB4Zm9ybSBmIHJlYWRlciBwb3J0CitAZGVmZm54IHtT Y2hlbWUgUHJvY2VkdXJlfSBwb3J0LXRyYW5zZHVjZSB4Zm9ybSBmIGlkZW50aXR5IHJlYWRl ciBwb3J0CisKK1NhbWUgYXMgQGNvZGV7bGlzdC1yZWR1Y2V9IGJ1dCBmb3IgcG9ydHMuIENh bGxlZCB3aXRob3V0IGEgcG9ydCwgaXQgcmVkdWNlcyBvdmVyIHRoZSByZXN1bHRzIG9mIGFw cGx5aW5nIEBjb2RleyhyZWFkZXIpfSB1bnRpbCB0aGUgRU9GLW9iamVjdCBpcyByZXR1cm5l ZCwgcHJlc3VtYWJseSB0byByZWFkIGZyb20gQGNvZGV7Y3VycmVudC1pbnB1dC1wb3J0fS4g V2l0aCBhIHBvcnQgQGNvZGV7cmVhZGVyfSBpcyBhcHBsaWVkIHRvIEBjb2Rle3BvcnR9IGlu c3RlYWQgb2Ygd2l0aG91dCBhbnkgYXJndW1lbnRzLiBJZiBhbiBAY29kZXtpZGVudGl0eX0g aXMgcHJvdmlkZWQsIHRoYXQgaXMgdXNlZCBhcyB0aGUgaW5pdGlhbCBpZGVudGl0eSBpbiB0 aGUgcmVkdWN0aW9uLgorQGVuZCBkZWZmbgorCisKK0Bub2RlIFNSRkktMTcxIFJlZHVjZXJz CitAc3Vic3Vic2VjdGlvbiBSZWR1Y2VycworQGNpbmRleCB0cmFuc2R1Y2VycyByZWR1Y2Vy cworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHJjb25zCithIHNpbXBsZSBjb25zaW5n IHJlZHVjZXIuIFdoZW4gY2FsbGVkIHdpdGhvdXQgdmFsdWVzLCBpdCByZXR1cm5zIGl0cyBp ZGVudGl0eSwgQGNvZGV7JygpfS4gV2l0aCBvbmUgdmFsdWUsIHdoaWNoIHdpbGwgYmUgYSBs aXN0LCBpdCByZXZlcnNlcyB0aGUgbGlzdCAodXNpbmcgQGNvZGV7cmV2ZXJzZSF9KS4gV2hl biBjYWxsZWQgd2l0aCB0d28gdmFsdWVzLCBpdCBjb25zZXMgdGhlIHNlY29uZCB2YWx1ZSB0 byB0aGUgZmlyc3QuCisKK0BleGFtcGxlCisobGlzdC10cmFuc2R1Y2UgKHRtYXAgKGxhbWJk YSAoeCkgKCsgeCAxKSkgcmNvbnMgKGxpc3QgMCAxIDIgMykpIEByZXN1bHR7fSAoMSAyIDMg NCkKK0BlbmQgZXhhbXBsZQorQGVuZCBkZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1 cmV9IHJldmVyc2UtcmNvbnMKK3NhbWUgYXMgcmNvbnMsIGJ1dCBsZWF2ZXMgdGhlIHZhbHVl cyBpbiB0aGVpciByZXZlcnNlZCBvcmRlci4KK0BleGFtcGxlCisobGlzdC10cmFuc2R1Y2Ug KHRtYXAgKGxhbWJkYSAoeCkgKCsgeCAxKSkpIHJldmVyc2UtcmNvbnMgKGxpc3QgMCAxIDIg MykpIEByZXN1bHR7fSAoNCAzIDIgMSkKK0BlbmQgZXhhbXBsZQorQGVuZCBkZWZmbgorCisK K0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcmFueSBwcmVkPworVGhlIHJlZHVjZXIgdmVy c2lvbiBvZiBhbnkuIFJldHVybnMgQGNvZGV7KHJlZHVjZWQgKHByZWQ/IHZhbHVlKSl9IGlm IGFueSBAY29kZXsocHJlZD8gdmFsdWUpfSByZXR1cm5zIG5vbi0jZi4gVGhlIGlkZW50aXR5 IGlzICNmLgorCitAZXhhbXBsZQorKGxpc3QtdHJhbnNkdWNlICh0bWFwIChsYW1iZGEgKHgp ICgrIHggMSkpKSAocmFueSBvZGQ/KSAobGlzdCAxIDMgNSkpIEByZXN1bHR7fSAjZgorCiso bGlzdC10cmFuc2R1Y2UgKHRtYXAgKGxhbWJkYSAoeCkgKCsgeCAxKSkpIChyYW55IG9kZD8p IChsaXN0IDEgMyA0IDUpKSBAcmVzdWx0e30gI3QKK0BlbmQgZXhhbXBsZQorQGVuZCBkZWZm bgorCisKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcmV2ZXJ5IHByZWQ/CitUaGUgcmVk dWNlciB2ZXJzaW9uIG9mIGV2ZXJ5LiBTdG9wcyB0aGUgdHJhbnNkdWN0aW9uIGFuZCByZXR1 cm5zIEBjb2RleyhyZWR1Y2VkICNmKX0gaWYgYW55IEBjb2RleyhwcmVkPyB2YWx1ZSl9IHJl dHVybnMgI2YuIElmIGV2ZXJ5IEBjb2RleyhwcmVkPyB2YWx1ZSl9IHJldHVybnMgdHJ1ZSwg aXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGludm9jYXRpb24gb2YgQGNvZGV7 KHByZWQ/IHZhbHVlKX0uIFRoZSBpZGVudGl0eSBpcyAjdC4KKworQGV4YW1wbGUKKyhsaXN0 LXRyYW5zZHVjZQorICAodG1hcCAobGFtYmRhICh4KSAoKyB4IDEpKSkKKyAgKHJldmVyeSAo bGFtYmRhICh2KSAoaWYgKG9kZD8gdikgdiAjZikpKQorICAobGlzdCAyIDQgNikpIEByZXN1 bHR7fSA3CisKKworKGxpc3QtdHJhbnNkdWNlICh0bWFwIChsYW1iZGEgKHgpICgrIHggMSkp IChyZXZlcnkgb2RkPykgKGxpc3QgMiA0IDUgNikpIEByZXN1bHR7fSAjZgorQGVuZCBleGFt cGxlCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSByY291bnQK K0Egc2ltcGxlIGNvdW50aW5nIHJlZHVjZXIuIENvdW50cyB0aGUgdmFsdWVzIHRoYXQgcGFz cyB0aHJvdWdoIHRoZSB0cmFuc2R1Y3Rpb24uCitAZXhhbXBsZQorKGxpc3QtdHJhbnNkdWNl ICh0ZmlsdGVyIG9kZD8pIHJjb3VudCAobGlzdCAxIDIgMyA0KSkgQHJlc3VsdHt9IDIuCitA ZW5kIGV4YW1wbGUKK0BlbmQgZGVmZm4KKworCitAbm9kZSBTUkZJLTE3MSBUcmFuc2R1Y2Vy cworQHN1YnN1YnNlY3Rpb24gVHJhbnNkdWNlcnMKK0BjaW5kZXggdHJhbnNkdWNlcnMgdHJh bnNkdWNlcnMKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB0bWFwIHByb2MKK1JldHVy bnMgYSB0cmFuc2R1Y2VyIHRoYXQgYXBwbGllcyBAY29kZXtwcm9jfSB0byBhbGwgdmFsdWVz LiBTdGF0ZWxlc3MuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHRmaWx0ZXIgcHJlZD8KK1Jl dHVybnMgYSB0cmFuc2R1Y2VyIHRoYXQgcmVtb3ZlcyB2YWx1ZXMgZm9yIHdoaWNoIEBjb2Rl e3ByZWQ/fSByZXR1cm5zICNmLgorCitTdGF0ZWxlc3MuCitAZW5kIGRlZmZuCisKKworQGRl ZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB0cmVtb3ZlIHByZWQ/CitSZXR1cm5zIGEgdHJhbnNk dWNlciB0aGF0IHJlbW92ZXMgdmFsdWVzIGZvciB3aGljaCBAY29kZXtwcmVkP30gcmV0dXJu cyBub24tI2YuCisKK1N0YXRlbGVzcworQGVuZCBkZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQ cm9jZWR1cmV9IHRmaWx0ZXItbWFwIHByb2MKK1RoZSBzYW1lIGFzIEBjb2Rleyhjb21wb3Nl ICh0bWFwIHByb2MpICh0ZmlsdGVyIHZhbHVlcykpfS4gU3RhdGVsZXNzLgorQGVuZCBkZWZm bgorCisKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gdHJlcGxhY2UgbWFwcGluZworVGhl IGFyZ3VtZW50IEBjb2Rle21hcHBpbmd9IGlzIGFuIGFzc29jaWF0aW9uIGxpc3QgKHVzaW5n IEBjb2Rle2VxdWFsP30gdG8gY29tcGFyZSBrZXlzKSwgYSBoYXNoLXRhYmxlLCBhIG9uZS1h cmd1bWVudCBwcm9jZWR1cmUgdGFraW5nIG9uZSBhcmd1bWVudCBhbmQgZWl0aGVyIHByb2R1 Y2luZyB0aGF0IHNhbWUgYXJndW1lbnQgb3IgYSByZXBsYWNlbWVudCB2YWx1ZS4KKworUmV0 dXJucyBhIHRyYW5zZHVjZXIgd2hpY2ggY2hlY2tzIGZvciB0aGUgcHJlc2VuY2Ugb2YgYW55 IHZhbHVlIHBhc3NlZCB0aHJvdWdoIGl0IGluIG1hcHBpbmcuIElmIGEgbWFwcGluZyBpcyBm b3VuZCwgdGhlIHZhbHVlIG9mIHRoYXQgbWFwcGluZyBpcyByZXR1cm5lZCwgb3RoZXJ3aXNl IGl0IGp1c3QgcmV0dXJucyB0aGUgb3JpZ2luYWwgdmFsdWUuCisKK0RvZXMgbm90IGtlZXAg aW50ZXJuYWwgc3RhdGUsIGJ1dCBtb2RpZnlpbmcgdGhlIG1hcHBpbmcgd2hpbGUgaXQncyBp biB1c2UgYnkgdHJlcGxhY2UgaXMgYW4gZXJyb3IuCitAZW5kIGRlZmZuCisKKworQGRlZmZu IHtTY2hlbWUgUHJvY2VkdXJlfSB0ZHJvcCBuCitSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0 IGRpc2NhcmRzIHRoZSBmaXJzdCBuIHZhbHVlcy4KKworU3RhdGVmdWwuCitAZW5kIGRlZmZu CisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB0dGFrZSBuCitSZXR1cm5zIGEgdHJh bnNkdWNlciB0aGF0IGRpc2NhcmRzIGFsbCB2YWx1ZXMgYW5kIHN0b3BzIHRoZSB0cmFuc2R1 Y3Rpb24gYWZ0ZXIgdGhlIGZpcnN0IG4gdmFsdWVzIGhhdmUgYmVlbiBsZXQgdGhyb3VnaC4g QW55IHN1YnNlcXVlbnQgdmFsdWVzIGFyZSBpZ25vcmVkLgorCitTdGF0ZWZ1bC4KK0BlbmQg ZGVmZm4KKworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRkcm9wLXdoaWxlIHByZWQ/ CitSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IGRpc2NhcmRzIHRoZSB0aGUgZmlyc3QgdmFs dWVzIGZvciB3aGljaCBAY29kZXtwcmVkP30gcmV0dXJucyB0cnVlLgorCitTdGF0ZWZ1bC4K K0BlbmQgZGVmZm4KKworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHR0YWtlLXdoaWxl IHByZWQ/CitAZGVmZm54IHtTY2hlbWUgUHJvY2VkdXJlfSB0dGFrZS13aGlsZSBwcmVkPyBy ZXRmCitSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IHN0b3BzIHRoZSB0cmFuc2R1Y3Rpb24g YWZ0ZXIgQGNvZGV7cHJlZD99IGhhcyByZXR1cm5lZCAjZi4gQW55IHN1YnNlcXVlbnQgdmFs dWVzIGFyZSBpZ25vcmVkIGFuZCB0aGUgbGFzdCBzdWNjZXNzZnVsIHZhbHVlIGlzIHJldHVy bmVkLiBAY29kZXtyZXRmfSBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbmV2 ZXIgQGNvZGV7cHJlZD99IHJldHVybnMgZmFsc2UuIFRoZSBhcmd1bWVudHMgcGFzc2VkIGFy ZSB0aGUgcmVzdWx0IHNvIGZhciBhbmQgdGhlIGlucHV0IGZvciB3aGljaCBwcmVkPyByZXR1 cm5zICNmLiBUaGUgZGVmYXVsdCBmdW5jdGlvbiBpcyBAY29kZXsobGFtYmRhIChyZXN1bHQg aW5wdXQpIHJlc3VsdCl9LgorCitTdGF0ZWZ1bC4KK0BlbmQgZGVmZm4KKworCitAZGVmZm4g e1NjaGVtZSBQcm9jZWR1cmV9IHRjb25jYXRlbmF0ZQordGNvbmNhdGVuYXRlIEBlbXBoe2lz fSBhIHRyYW5zZHVjZXIgdGhhdCBjb25jYXRlbmF0ZXMgdGhlIGNvbnRlbnQgb2YgZWFjaCB2 YWx1ZSAodGhhdCBtdXN0IGJlIGEgbGlzdCkgaW50byB0aGUgcmVkdWN0aW9uLgorQGV4YW1w bGUKKyhsaXN0LXRyYW5zZHVjZSB0Y29uY2F0ZW5hdGUgcmNvbnMgJygoMSAyKSAoMyA0IDUp ICg2ICg3IDgpIDkpKSkgPT4gKDEgMiAzIDQgNSA2ICg3IDgpIDkpCitAZW5kIGV4YW1wbGUK K0BlbmQgZGVmZm4KKworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRhcHBlbmQtbWFw IHByb2MKK1RoZSBzYW1lIGFzIEBjb2Rleyhjb21wb3NlICh0bWFwIHByb2MpIHRjb25jYXRl bmF0ZSl9LgorQGVuZCBkZWZmbgorCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRmbGF0 dGVuCit0ZmxhdHRlbiBAZW1waHtpc30gYSB0cmFuc2R1Y2VyIHRoYXQgZmxhdHRlbnMgYW4g aW5wdXQgY29uc2lzdGluZyBvZiBsaXN0cy4KKworQGV4YW1wbGUKKyhsaXN0LXRyYW5zZHVj ZSB0ZmxhdHRlbiByY29ucyAnKCgxIDIpIDMgKDQgKDUgNikgNyA4KSA5KSBAcmVzdWx0e30g KDEgMiAzIDQgNSA2IDcgOCA5KQorQGVuZCBleGFtcGxlCitAZW5kIGRlZmZuCisKK0BkZWZm biB7U2NoZW1lIFByb2NlZHVyZX0gdGRlbGV0ZS1uZWlnaGJvci1kdXBsaWNhdGVzCitAZGVm Zm54IHtTY2hlbWUgUHJvY2VkdXJlfSB0ZGVsZXRlLW5laWdoYm9yLWR1cGxpY2F0ZXMgZXF1 YWxpdHktcHJlZGljYXRlCisKK1JldHVybnMgYSB0cmFuc2R1Y2VyIHRoYXQgcmVtb3ZlcyBh bnkgZGlyZWN0bHkgZm9sbG93aW5nIGR1cGxpY2F0ZSBlbGVtZW50cy4gVGhlIGRlZmF1bHQg QGNvZGV7ZXF1YWxpdHktcHJlZGljYXRlfSBpcyBAY29kZXtlcXVhbD99LgorCitTdGF0ZWZ1 bC4KK0BlbmQgZGVmZm4KKworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRkZWxldGUt ZHVwbGljYXRlcworQGRlZmZueCB7U2NoZW1lIFByb2NlZHVyZX0gdGRlbGV0ZS1kdXBsaWNh dGVzIGVxdWFsaXR5LXByZWRpY2F0ZQorCitSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IHJl bW92ZXMgYW55IHN1YnNlcXVlbnQgZHVwbGljYXRlIGVsZW1lbnRzIGNvbXBhcmVkIHVzaW5n IEBjb2Rle2VxdWFsaXR5LXByZWRpY2F0ZX0uIFRoZSBkZWZhdWx0IEBjb2Rle2VxdWFsaXR5 LXByZWRpY2F0ZX0gaXMgQGNvZGV7ZXF1YWw/fS4KKworU3RhdGVmdWwuCitAZW5kIGRlZmZu CisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB0c2VnbWVudCBuCisKK1JldHVybnMg YSB0cmFuc2R1Y2VyIHRoYXQgZ3JvdXBzIEBjb2Rle259IGlucHV0cyBpbiBsaXN0cyBvZiBA Y29kZXtufSBlbGVtZW50cy4gV2hlbiB0aGUgdHJhbnNkdWN0aW9uIHN0b3BzLCBpdCBmbHVz aGVzIGFueSByZW1haW5pbmcgY29sbGVjdGlvbiwgZXZlbiBpZiBpdCBjb250YWlucyBmZXdl ciB0aGFuIEBjb2Rle259IGVsZW1lbnRzLgorCitTdGF0ZWZ1bC4KK0BlbmQgZGVmZm4KKwor CitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRwYXJ0aXRpb24gcHJlZD8KKworUmV0dXJu cyBhIHRyYW5zZHVjZXIgdGhhdCBncm91cHMgaW5wdXRzIGluIGxpc3RzIGJ5IHdoZW5ldmVy IEBjb2RleyhwcmVkPyBpbnB1dCl9IGNoYW5nZXMgdmFsdWUuCisKK1N0YXRlZnVsLgorQGVu ZCBkZWZmbgorCisKK0BkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gdGFkZC1iZXR3ZWVuIHZh bHVlCitSZXR1cm5zIGEgdHJhbnNkdWNlciB3aGljaCBpbnRlcnBvc2VzIEBjb2Rle3ZhbHVl fSBiZXR3ZWVuIGVhY2ggdmFsdWUgYW5kIHRoZSBuZXh0LiBUaGlzIGRvZXMgbm90IGNvbXBv c2UgZ3JhY2VmdWxseSB3aXRoIHRyYW5zZHVjZXJzIGxpa2UgQGNvZGV7dHRha2V9LCBhcyB5 b3UgbWlnaHQgZW5kIHVwIGVuZGluZyB0aGUgdHJhbnNkdWN0aW9uIG9uIEBjb2Rle3ZhbHVl fS4KKworU3RhdGVmdWwuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2Vk dXJlfSB0ZW51bWVyYXRlCitAZGVmZm54IHtTY2hlbWUgUHJvY2VkdXJlfSB0ZW51bWVyYXRl IHN0YXJ0CitSZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IGluZGV4ZXMgdmFsdWVzIHBhc3Nl ZCB0aHJvdWdoIGl0LCBzdGFydGluZyBhdCBAY29kZXtzdGFydH0sIHdoaWNoIGRlZmF1bHRz IHRvIDAuIFRoZSBpbmRleGluZyBpcyBkb25lIHRocm91Z2ggY29ucyBwYWlycyBsaWtlIEBj b2RleyhpbmRleCAuIGlucHV0KX0uCisKK0BleGFtcGxlCisobGlzdC10cmFuc2R1Y2UgKHRl bnVtZXJhdGUgMSkgcmNvbnMgKGxpc3QgJ2ZpcnN0ICdzZWNvbmQgJ3RoaXJkKSkgQHJlc3Vs dHt9ICgoMSAuIGZpcnN0KSAoMiAuIHNlY29uZCkgKDMgLiB0aGlyZCkpCitAZW5kIGV4YW1w bGUKKworU3RhdGVmdWwuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2Vk dXJlfSB0bG9nCitAZGVmZm54IHtTY2hlbWUgUHJvY2VkdXJlfSB0bG9nIGxvZ2dlcgorCitS ZXR1cm5zIGEgdHJhbnNkdWNlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGxvZyBvciBwcmludCB2 YWx1ZXMgYW5kIHJlc3VsdHMuIFRoZSByZXN1bHQgb2YgdGhlIEBjb2Rle2xvZ2dlcn0gcHJv Y2VkdXJlIGlzIGRpc2NhcmRlZC4gVGhlIGRlZmF1bHQgQGNvZGV7bG9nZ2VyfSBpcyBAY29k ZXsobGFtYmRhIChyZXN1bHQgaW5wdXQpICh3cml0ZSBpbnB1dCkgKG5ld2xpbmUpKX0uCisK K1N0YXRlbGVzcy4KK0BlbmQgZGVmZm4KKworQHN1YmhlYWRpbmcgR3VpbGUtc3BlY2lmaWMg dHJhbnNkdWNlcnMKK1RoZXNlIHRyYW5zZHVjZXJzIGFyZSBhdmFpbGFibGUgaW4gdGhlIEBj b2RleyhzcmZpIHNyZmktMTcxIGdudSl9IGxpYnJhcnksIGFuZCBhcmUgcHJvdmlkZWQgb3V0 c2lkZSB0aGUgc3RhbmRhcmQgZGVzY3JpYmVkIGJ5IHRoZSBTUkZJLTE3MSBkb2N1bWVudC4K KworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB0YmF0Y2ggcmVkdWNlcgorQGRlZmZueCB7 U2NoZW1lIFByb2NlZHVyZX0gdGJhdGNoIHRyYW5zZHVjZXIgcmVkdWNlcgorQSBiYXRjaGlu ZyB0cmFuc2R1Y2VyIHRoYXQgYWNjdW11bGF0ZXMgcmVzdWx0cyB1c2luZyBAY29kZXtyZWR1 Y2VyfSBvciBAY29kZXsoKHRyYW5zZHVjZXIpIHJlZHVjZXIpfSB1bnRpbCBpdCByZXR1cm5z IGEgcmVkdWNlZCB2YWx1ZS4gVGhpcyBjYW4gYmUgdXNlZCB0byBnZW5lcmFsaXplIHNvbWV0 aGluZyBsaWtlIEBjb2Rle3RzZWdtZW50fToKKworQGV4YW1wbGUKKzs7IFRoaXMgYmVoYXZl cyBleGFjdGx5IGxpa2UgKHRzZWdtZW50IDQpLgorKGxpc3QtdHJhbnNkdWNlICh0YmF0Y2gg KHR0YWtlIDQpIHJjb25zKSByY29ucyAoaW90YSAxMCkpIEByZXN1bHQge30gKCgwIDEgMiAz KSAoNCA1IDYgNykgKDggOSkpCitAZW5kIGV4YW1wbGUKK0BlbmQgZGVmZm4KKworCitAZGVm Zm4ge1NjaGVtZSBQcm9jZWR1cmV9IHRmb2xkIHJlZHVjZXIKK0BkZWZmbngge1NjaGVtZSBQ cm9jZWR1cmV9IHRmb2xkIHJlZHVjZXIgc2VlZAorCitBIGZvbGRpbmcgdHJhbnNkdWNlciB0 aGF0IHlpZWxkcyB0aGUgcmVzdWx0IG9mIEBjb2RleyhyZWR1Y2VyIHNlZWQgdmFsdWUpfSwg c2F2aW5nIGl0J3MgcmVzdWx0IGJldHdlZW4gaXRlcmF0aW9ucy4KKworQGV4YW1wbGUKKyhs aXN0LXRyYW5zZHVjZSAodGZvbGQgKykgcmNvbnMgKGlvdGEgMTApKSBAcmVzdWx0e30gKDAg MSAzIDYgMTAgMTUgMjEgMjggMzYgNDUpCitAZW5kIGV4YW1wbGUKK0BlbmQgZGVmZm4KKwor CisKKworQG5vZGUgU1JGSS0xNzEgSGVscGVycworQHN1YnN1YnNlY3Rpb24gSGVscGVyIGZ1 bmN0aW9ucyBmb3Igd3JpdGluZyB0cmFuc2R1Y2VycworQGNpbmRleCB0cmFuc2R1Y2VycyBo ZWxwZXJzCisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIEBjb2RleyhzcmZpIDE3MSBt ZXRhKX0gbW9kdWxlIGFuZCBhcmUgb25seSB1c2FibGUgd2hlbiB5b3Ugd2FudCB0byB3cml0 ZSB5b3VyIG93biB0cmFuc2R1Y2Vycy4KKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBy ZWR1Y2VkIHZhbHVlCisKK1dyYXBzIGEgdmFsdWUgaW4gYSBAY29kZXs8cmVkdWNlZD59IGNv bnRhaW5lciwgc2lnbmFsbGluZyB0aGF0IHRoZSByZWR1Y3Rpb24gc2hvdWxkIHN0b3AuCitA ZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSByZWR1Y2VkPyB2YWx1 ZQorCitSZXR1cm5zICN0IGlmIHZhbHVlIGlzIGEgQGNvZGV7PHJlZHVjZWQ+fSByZWNvcmQu CitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB1bnJlZHVjZSBy ZWR1Y2VkLWNvbnRhaW5lcgorCitSZXR1cm5zIHRoZSB2YWx1ZSBpbiByZWR1Y2VkLWNvbnRh aW5lci4KK0BlbmQgZGVmZm4KKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBlbnN1cmUt cmVkdWNlZCB2YWx1ZQorV3JhcHMgdmFsdWUgaW4gYSBAY29kZXs8cmVkdWNlZD59IGNvbnRh aW5lciBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWR1Y2VkLgorQGVuZCBkZWZmbgorCisKK0Bk ZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcHJlc2VydmluZy1yZWR1Y2VkIHJlZHVjZXIKKwor V3JhcHMgQGNvZGV7cmVkdWNlcn0gaW4gYW5vdGhlciByZWR1Y2VyIHRoYXQgZW5jYXBzdWxh dGVzIGFueSByZXR1cm5lZCByZWR1Y2VkIHZhbHVlIGluIGFub3RoZXIgcmVkdWNlZCBjb250 YWluZXIuIFRoaXMgaXMgdXNlZnVsIGluIHBsYWNlcyB3aGVyZSB5b3UgcmUtdXNlIGEgcmVk dWNlciB3aXRoIFtjb2xsZWN0aW9uXS1yZWR1Y2UuIElmIHRoZSByZWR1Y2VyIHJldHVybnMg YSByZWR1Y2VkIHZhbHVlLCBbY29sbGVjdGlvbl0tcmVkdWNlIHVud3JhcHMgaXQuIFVubGVz cyBoYW5kbGVkLCB0aGlzIGxlYWRzIHRvIHRoZSByZWR1Y3Rpb24gY29udGludWluZy4KK0Bl bmQgZGVmZm4KKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBsaXN0LXJlZHVjZSBmIGlk ZW50aXR5IGxzdAorVGhlIHJlZHVjaW5nIGZ1bmN0aW9uIHVzZWQgaW50ZXJuYWxseSBieSBA Y29kZXtsaXN0LXRyYW5zZHVjZX0uIEBjb2Rle2Z9IGlzIGEgcmVkdWNlciBhcyByZXR1cm5l ZCBieSBhIHRyYW5zZHVjZXIuIEBjb2Rle2lkZW50aXR5fSBpcyB0aGUgaWRlbnRpdHkgKHNv bWV0aW1lcyBjYWxsZWQgInNlZWQiKSBvZiB0aGUgcmVkdWN0aW9uLiBAY29kZXtsc3R9IGlz IGEgbGlzdC4gSWYgQGNvZGV7Zn0gcmV0dXJucyBhIHJlZHVjZWQgdmFsdWUsIHRoZSByZWR1 Y3Rpb24gc3RvcHMgaW1tZWRpYXRlbHkgYW5kIHRoZSB1bnJlZHVjZWQgdmFsdWUgaXMgcmV0 dXJuZWQuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSB2ZWN0 b3ItcmVkdWNlIGYgaWRlbnRpdHkgdmVjCitUaGUgdmVjdG9yIHZlcnNpb24gb2YgbGlzdC1y ZWR1Y2UuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBzdHJp bmctcmVkdWNlIGYgaWRlbnRpdHkgc3RyCitUaGUgc3RyaW5nIHZlcnNpb24gb2YgbGlzdC1y ZWR1Y2UuCitAZW5kIGRlZmZuCisKKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBieXRl dmVjdG9yLXU4LXJlZHVjZSBmIGlkZW50aXR5IGJ2CitUaGUgYnl0ZXZlY3Rvci11OCB2ZXJz aW9uIG9mIGxpc3QtcmVkdWNlLgorQGVuZCBkZWZmbgorCisKK0BkZWZmbiB7U2NoZW1lIFBy b2NlZHVyZX0gcG9ydC1yZWR1Y2UgZiBpZGVudGl0eSByZWFkZXIgcG9ydAorVGhlIHBvcnQg dmVyc2lvbiBvZiBsaXN0LXJlZHVjZXIuIEl0IHJlZHVjZXMgb3ZlciBwb3J0IHVzaW5nIHJl YWRlciB1bnRpbCByZWFkZXIgcmV0dXJucyB0aGUgRU9GIG9iamVjdC4KK0BlbmQgZGVmZm4K KworCitAZGVmZm4ge1NjaGVtZSBQcm9jZWR1cmV9IGdlbmVyYXRvci1yZWR1Y2UgZiBpZGVu dGl0eSBnZW4KKworVGhlIHBvcnQgdmVyc2lvbiBvZiBsaXN0LXJlZHVjZS4gSXQgcmVkdWNl cyBvdmVyIEBjb2Rle2dlbn0gdW50aWwgaXQgcmV0dXJucyB0aGUgRU9GIG9iamVjdAorCitA ZW5kIGRlZmZuCisKKworCiBAYyBzcmZpLW1vZHVsZXMudGV4aSBlbmRzIGhlcmUKIAogQGMg TG9jYWwgVmFyaWFibGVzOgpkaWZmIC0tZ2l0IGEvbW9kdWxlL01ha2VmaWxlLmFtIGIvbW9k dWxlL01ha2VmaWxlLmFtCmluZGV4IGM2ZGZmNzZlMy4uNTdkODhiMGNkIDEwMDY0NAotLS0g YS9tb2R1bGUvTWFrZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFtCkBAIC0zMTEs NiArMzExLDkgQEAgU09VUkNFUyA9CQkJCQlcCiAgIHNyZmkvc3JmaS04OC5zY20JCQkJXAog ICBzcmZpL3NyZmktOTguc2NtCQkJCVwKICAgc3JmaS9zcmZpLTExMS5zY20JCQkJXAorICBz cmZpL3NyZmktMTcxLnNjbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzcmZp L3NyZmktMTcxL2dudS5zY20gICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzcmZpL3Ny ZmktMTcxL21ldGEuc2NtICAgICAgICAgICAgICAgICAgICAgICAgXAogCQkJCQkJXAogICBz dGF0cHJvZi5zY20JCQkJCVwKIAkJCQkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFr ZWZpbGUuYW0gYi90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCmluZGV4IDM4MTAxOTdlMi4uY2Fm YTVjOTJiIDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qt c3VpdGUvTWFrZWZpbGUuYW0KQEAgLTE2MCw2ICsxNjAsNyBAQCBTQ01fVEVTVFMgPSB0ZXN0 cy8wMC1pbml0aWFsLWVudi50ZXN0CQlcCiAJICAgIHRlc3RzL3NyZmktOTgudGVzdAkJCVwK IAkgICAgdGVzdHMvc3JmaS0xMDUudGVzdAkJCVwKIAkgICAgdGVzdHMvc3JmaS0xMTEudGVz dAkJCVwKKyAgICAgICAgICAgIHRlc3RzL3NyZmktMTcxLnRlc3QgICAgICAgICAgICAgICAg IFwKIAkgICAgdGVzdHMvc3JmaS00LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktOS50ZXN0 CQkJXAogCSAgICB0ZXN0cy9zdGF0cHJvZi50ZXN0CQkJXAotLSAKMi4yNC4xCgo= --437cd8e90e8646e9a30270743b78464e--