Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjxDz-00605l-C5 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2024 08:43:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sjxDx-0003hE-I5 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2024 08:43:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjxDw-0003gc-M7 for pgsql-hackers@lists.postgresql.org; Fri, 30 Aug 2024 08:43:17 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjxDq-002Dra-8b for pgsql-hackers@lists.postgresql.org; Fri, 30 Aug 2024 08:43:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1725007390; bh=drWKAJI4DTde7Wpt1XSkoEUHWvYi3hfu2nszXJdfBkk=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=DBjPGh1cWT8jYI3IjSt6m40FbIqI9TH6EZ0vZdW/y273vXymrRJXizaOWC+DRfpk9 YJmFQGO7Z8j3aY9N76Z76SzBQ3SckNb4vHsiLstiOEMGjlRhhv9zZTXjOfLR3iNJC1 DxLbjVNhVH6SPmFNe1LH8utfDsyuwErh0ojgwyGAl6+mtVQOyCtFcilEWc3xVdr5kn 6PrQ2vsVXvHARuyrfjraVzUINRhP/oZK4KaW8evduPt5VHgrsE4dy6huGKhT76VpQ8 j1WaHiJbKvJnHioCOGhaMBvBdVZIIH3Wb21XKodTnfbKXD1kEAda/7NUe5PaE1c3B1 L1EJKZcTzhLhw== Received: from [172.30.33.74] (unknown [172.30.33.74]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id DFDF960757; Fri, 30 Aug 2024 11:43:09 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------rCCg6uBkleS6diSwKGsWNB6Y" Message-ID: Date: Fri, 30 Aug 2024 11:43:10 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Robert Haas Cc: Alexander Korotkov , pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <768cbb42-d3f8-45de-89ad-72861f078dc2@postgrespro.ru> <859476bf-3cb0-455e-b093-b8ab5ef17f0e@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2024/08/30 05:11:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/08/30 06:12:00 #26476662 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------rCCg6uBkleS6diSwKGsWNB6Y Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! I plan to prepare fixes for issues from email [1] as separate commits (for better code readability). Attachment in this email is a variant of fix for the issue: > 1. Function createPartitionTable() should be rewritten using > partitioned table OID (not name) and without using ProcessUtility(). Patch "Refactor createPartitionTable to remove ProcessUtility call" contains code changes + test (see file v33-0003-Refactor-createPartitionTable-to-remove-ProcessU.patch). But I'm not sure that refactoring createPartitionTable is the best solution. PostgreSQL code has issue CVE-2014-0062 (commit 5f17304) - see relation_openrv() call in expandTableLikeClause() function [2] (opening relation by name after we got relation Oid). Example for reproduce relation_openrv() call: CREATE TABLE t (b bigint, i int DEFAULT 100); CREATE TABLE t1 (LIKE t_bigint INCLUDING ALL); Commit 04158e7fa3 [3] (by Alexander Korotkov) might be a good fix for this issue. But if we keep commit 04158e7fa3, do we need to refactor the createPartitionTable function (for removing ProcessUtility)? Perhaps the existing code 1) v33-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch 2) v33-0003-Refactor-createPartitionTable-to-remove-ProcessU.patch + with patch 04158e7fa3 will look better. I would be very grateful for comments and suggestions. Links. [1] https://www.postgresql.org/message-id/859476bf-3cb0-455e-b093-b8ab5ef17f0e%40postgrespro.ru [2] https://github.com/postgres/postgres/blob/c39afc38cfec7c34b883095062a89a63b221521a/src/backend/parser/parse_utilcmd.c#L1171 [3] https://github.com/postgres/postgres/commit/04158e7fa37c2dda9c3421ca922d02807b86df19 -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------rCCg6uBkleS6diSwKGsWNB6Y Content-Type: text/plain; charset=UTF-8; name="v33-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v33-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZDQxNGM4NmIxODQ5MmFlOTdjZjU1MTY0MjQ0YWYzYmNkYzAwMzg0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2MzMgMS8zXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzCgpGaXhlcyAoc3VtbWFyeSBpbmZv cm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVyIFdhbmcsIFJp Y2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczogRnVqaWkgTWFz YW8KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwgUm9iZXJ0IEhhYXMsIEp1c3Rp biBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYQpS ZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGluIFByeXpieSwgS3lvdGFybyBI b3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uLCBUb20gTGFuZSwgTm9h aCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxOSArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgICAgICAg ICAgICAgfCAgOTAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8IDQyMCArKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgICAgICAgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jICAgICAgICAgICAgfCAxMzEgKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5jICAgICAgICAgfCAyMTIgKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5jICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxNCArCiBzcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICA2ICsKIC4uLi9pc29sYXRpb24vZXhw ZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dCAgICB8IDE5OSArKysrCiBzcmMvdGVzdC9pc29s YXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgIDU0ICsKIC4uLi90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCA5NDUgKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAg ICB8IDYwOSArKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAxICsKIDE4IGZpbGVzIGNoYW5nZWQsIDI3MTUgaW5zZXJ0aW9u cygrKSwgMjQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJn ZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fbWVyZ2Uuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9j L3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGI2NzE4NTg2MjcuLjI3NzBlODE2NTYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNn bWwKQEAgLTQzNTMsNiArNDM1MywyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudF95MjAw Nm0wMiBBREQgVU5JUVVFIChjaXR5X2lkLCBsb2dkYXRlKTsKIEFMVEVSIElOREVYIG1lYXN1 cmVtZW50X2NpdHlfaWRfbG9nZGF0ZV9rZXkKICAgICBBVFRBQ0ggUEFSVElUSU9OIG1lYXN1 cmVtZW50X3kyMDA2bTAyX2NpdHlfaWRfbG9nZGF0ZV9rZXk7CiAuLi4KKzwvcHJvZ3JhbWxp c3Rpbmc+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZXJlIGlzIGFsc28g YW4gb3B0aW9uIGZvciBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMgaW50bwor ICAgICBhIHNpbmdsZSBwYXJ0aXRpb24gdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPjxjb21tYW5kPkFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVh dHVyZSBzaW1wbGlmaWVzIHRoZSBtYW5hZ2VtZW50IG9mIHBhcnRpdGlvbmVkIHRhYmxlcyBi eSBhbGxvd2luZworICAgICB1c2VycyB0byBjb21iaW5lIHBhcnRpdGlvbnMgdGhhdCBhcmUg bm8gbG9uZ2VyIG5lZWRlZCBhcworICAgICBzZXBhcmF0ZSBlbnRpdGllcy4gIEl0J3MgaW1w b3J0YW50IHRvIG5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBub3QKKyAgICAgc3VwcG9y dGVkIGZvciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMgYW4KKyAgICAg PGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQg aW1wYWN0IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3Ry aWN0aXZlIG5hdHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4KKyAgICAgbWVyZ2UgdGhyZWUg bW9udGhseSBwYXJ0aXRpb25zIGludG8gb25lIHF1YXJ0ZXIgcGFydGl0aW9uOgorPHByb2dy YW1saXN0aW5nPgorQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKKyAgICBNRVJHRSBQQVJUSVRJ T05TIChtZWFzdXJlbWVudF95MjAwNm0wMSwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFz dXJlbWVudF95MjAwNm0wMiwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudF95 MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGluZz4K ICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s CmluZGV4IDFhNDlmMzIxY2YuLmI5OWQ0OTcyYWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwKQEAgLTM3LDYgKzM3LDkgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAg QVRUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZB VUxUIH0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJUSVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCitBTFRFUiBUQUJMRSBbIElGIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K KyAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKQorICAgICAg ICBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwv cmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAt MTExNywxNCArMTEyMCw4NyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0i c3FsLWFsdGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+ TUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhpcyBmb3JtIG1lcmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byB0aGUgb25lIHBhcnRp dGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlLgorICAgICAgSGFzaC1wYXJ0aXRpb25pbmcgaXMg bm90IHN1cHBvcnRlZC4gIElmIERFRkFVTFQgcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUKKyAg ICAgIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToK KyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIEZvciByYW5nZS1wYXJ0aXRpb25lZCB0YWJsZXMgaXQgaXMgbmVjZXNz YXJ5IHRoYXQgdGhlIHJhbmdlcworICAgICAgICAgb2YgdGhlIHBhcnRpdGlvbnMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+ LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0gY2FuCisgICAgICAgICBiZSBtZXJnZWQgaW50 byBvbmUgcmFuZ2Ugd2l0aG91dCBzcGFjZXMgYW5kIG92ZXJsYXBzIChvdGhlcndpc2UgYW4g ZXJyb3IKKyAgICAgICAgIHdpbGwgYmUgZ2VuZXJhdGVkKS4gIFRoZSBjb21iaW5lZCByYW5n ZSB3aWxsIGJlIHRoZSByYW5nZSBmb3IgdGhlIHBhcnRpdGlvbgorICAgICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4u CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgbGlzdC1wYXJ0aXRpb25lZCB0YWJs ZXMgdGhlIHZhbHVlIGxpc3RzIG9mIGFsbCBwYXJ0aXRpb25zCisgICAgICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBhcmUKKyAgICAgICAgIGNvbWJpbmVkIGFuZCBm b3JtIHRoZSBsaXN0IG9mIHZhbHVlcyBvZiBwYXJ0aXRpb24KKyAgICAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgICAgSWYgREVGQVVMVCBwYXJ0aXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgcGFy dGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXpl ZGxpc3Q+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRo ZSBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgIHdpbGwgYmUgdGhlIERFRkFVTFQgcGFydGl0 aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLSBhbmQgbGlzdC1w YXJ0aXRpb25lZCB0YWJsZXMgdGhlIHJhbmdlcyBhbmQgbGlzdHMgb2YgdmFsdWVzCisgICAg ICAgICBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgY2FuIGJlIGFueS4KKyAgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAg IFRoZSBuZXcgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1l IGFzIG9uZSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuICBPbmx5IHNpbXBsZSwKKyAgICAg IG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQuCisgICAgIDwvcGFy YT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGJlIGNyZWF0 ZWQgdGhlIHNhbWUgYXMgYSB0YWJsZSBjcmVhdGVkIHdpdGggdGhlCisgICAgICBTUUwgY29t bWFuZCA8bGl0ZXJhbD5DUkVBVEUgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gKExJS0UgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBJTkNMVURJTkcgQUxMIEVYQ0xV RElORyBJTkRFWEVTIEVYQ0xVRElORyBJREVOVElUWSBFWENMVURJTkcgU1RBVElTVElDUyk8 L2xpdGVyYWw+LgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVk IGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0 aXRpb24uCisgICAgICBFeHRlbmRlZCBzdGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0 aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+ Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwvY29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBh cnRpdGlvbiB3aWxsIGhhdmUgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCBhcyB0aGUg cGFyZW50LgorICAgICAgSWYgdGhlIHBhcmVudCB0YWJsZSBpcyBwZXJzaXN0ZW50IHRoZW4g dGhlIG5ldyBwYXJ0aXRpb24gaXMgY3JlYXRlZAorICAgICAgcGVyc2lzdGVudC4gIElmIHRo ZSBwYXJlbnQgdGFibGUgaXMgdGVtcG9yYXJ5IHRoZW4gdGhlIG5ldyBwYXJ0aXRpb24KKyAg ICAgIGlzIGFsc28gY3JlYXRlZCB0ZW1wb3JhcnkuICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxs IGFsc28gYmUgY3JlYXRlZCBpbgorICAgICAgdGhlIHNhbWUgdGFibGVzcGFjZSBhcyB0aGUg cGFyZW50LgorICAgICA8L3BhcmE+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAg ICAgVGhpcyBjb21tYW5kIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8 L2xpdGVyYWw+IGxvY2suCisgICAgICAgVGhpcyBpcyBhIHNpZ25pZmljYW50IGxpbWl0YXRp b24sIHdoaWNoIGxpbWl0cyB0aGUgdXNhZ2Ugb2YgdGhpcworICAgICAgIGNvbW1hbmQgd2l0 aCBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBoaWdoIGxvYWQuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KICAgIEFs bCB0aGUgZm9ybXMgb2YgQUxURVIgVEFCTEUgdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUs IGV4Y2VwdAogICAgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFND SEVNQTwvbGl0ZXJhbD4sCi0gICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFs PiwgYW5kCi0gICA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiBjYW4gYmUg Y29tYmluZWQgaW50bworICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4s IDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAorICAgYW5kIDxsaXRlcmFs Pk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBh IGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhlci4g IEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1u cyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNp bmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UK QEAgLTEzNjcsNyArMTQ0Myw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4K LSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0 aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4KKyAgICAgICAgVGhlIG5hbWUg b2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNo IGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJn ZWQgcGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg IDwvdmFybGlzdGVudHJ5PgpAQCAtMTc4Myw2ICsxODYwLDEzIEBAIEFMVEVSIFRBQkxFIG1l YXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsK IDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8gbWVyZ2Ugc2V2 ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJU SVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKQorICAgIElO VE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKICA8L3JlZnNlY3Qx PgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBiM2Nj NmY4ZjY5Li4xYjg0NWE2NjE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAt NjU4LDYgKzY1OCw4IEBAIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlS ZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21w cmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRp YyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpz dG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJ CQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250 ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00Njc3LDYg KzQ2NzksMTAgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNt ZF9sb2NrbW9kZSA9IEFjY2Vzc1NoYXJlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZl TG9jazsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTA3NCw2ICs1MDgwLDExIEBAIEFUUHJlcENtZChM aXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8q IE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNT X01JU0M7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNp bXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyog Tm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1Nf TUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkg Y21kLT5zdWJ0eXBlKTsKQEAgLTU0NzAsNiArNTQ4MSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOgogCQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFs aXplKHJlbCwgKChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFr OworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zv cm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJ CQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlB c3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSk7CisJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRp dGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwog CQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAg LTY0NTgsNiArNjQ3Nyw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFi bGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNl IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElU SU9OIC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0 dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJl dHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElk ZW50aXR5OgpAQCAtMTgyODAsNiArMTgzMDEsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJh aW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0K IAorLyoKKyAqIGF0dGFjaFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9u IHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRB QkxFIHdvcmsgcXVldWU7IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAor ICogICBvZiBhbiBBTFRFUiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQg cmVsYXRpb247CisgKiBhdHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlv bjsKKyAqIGJvdW5kOiBib3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRp YyB2b2lkCithdHRhY2hQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGF0dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sK KwkvKiBPSyB0byBjcmVhdGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVy Zm9ybWVkIHRoZXJlICovCisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRy dWUpOworCisJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRp dGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUg ZXhpc3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwor CUF0dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7 CisKKwkvKiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24o cmVsLCBhdHRhY2hyZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJh aW50cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBw aGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktl eUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxU RVIgVEFCTEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1Ig VkFMVUVTCiAgKgpAQCAtMTg0ODIsMjMgKzE4NTM0LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0 aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJ Y2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRh Y2hyZWwpLCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sg dG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0 aGVyZSAqLwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQot CS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3Vu ZChhdHRhY2hyZWwsIHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhp c3RzIGEgY29ycmVjdCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0 dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0K LQkvKiBhbmQgdHJpZ2dlcnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVs LCBhdHRhY2hyZWwpOwotCi0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4gIENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFz ZSAzIGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNv bnN0cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBw YXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlv blRhYmxlKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkg KiBHZW5lcmF0ZSBwYXJ0aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91 bmQgc3BlY2lmaWNhdGlvbi4KQEAgLTIwMDEzLDMgKzIwMDUwLDM1MiBAQCBHZXRBdHRyaWJ1 dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAly ZXR1cm4gY3N0b3JhZ2U7CiB9CisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3Jl YXRlIHRhYmxlIGZvciBhIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCisgKiAobmV3 UGFydE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsKQorICoKKyAqIEVtdWxhdGVzIGNvbW1h bmQ6IENSRUFURSBbVEVNUF0gVEFCTEUgPG5ld1BhcnROYW1lPiAoTElLRSA8bW9kZWxSZWwn cyBuYW1lPgorICogSU5DTFVESU5HIEFMTCBFWENMVURJTkcgSU5ERVhFUyBFWENMVURJTkcg SURFTlRJVFkgRVhDTFVESU5HIFNUQVRJU1RJQ1MpCisgKgorICogQWxzbywgdGhpcyBmdW5j dGlvbiBzZXRzIHRoZSBuZXcgcGFydGl0aW9uIGFjY2VzcyBtZXRob2Qgc2FtZSBhcyBwYXJl bnQKKyAqIHRhYmxlIGFjY2VzcyBtZXRob2RzIChzaW1pbGFybHkgdG8gQ1JFQVRFIFRBQkxF IC4uLiBQQVJUSVRJT04gT0YpLiAgSXQKKyAqIGNoZWNrcyB0aGF0IHBhcmVudCBhbmQgY2hp bGQgdGFibGVzIGhhdmUgY29tcGF0aWJsZSBwZXJzaXN0ZW5jZS4KKyAqCisgKiBGdW5jdGlv biByZXR1cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9uIChsb2NrZWQgaW4gQWNjZXNzRXhjbHVz aXZlTG9jayBtb2RlKS4KKyAqLworc3RhdGljIFJlbGF0aW9uCitjcmVhdGVQYXJ0aXRpb25U YWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVsLAorCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCUNyZWF0ZVN0bXQgKmNy ZWF0ZVN0bXQ7CisJVGFibGVMaWtlQ2xhdXNlICp0bGM7CisJUGxhbm5lZFN0bXQgKndyYXBw ZXI7CisJUmVsYXRpb24JbmV3UmVsOworCisJLyogSWYgZXhpc3RpbmcgcmVsIGlzIHRlbXAs IGl0IG11c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLworCWlmIChtb2RlbFJlbC0+cmRf cmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJCSFtb2Rl bFJlbC0+cmRfaXNsb2NhbHRlbXApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0 ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lv biIpKSk7CisKKwkvKiBOZXcgcGFydGl0aW9uIHNob3VsZCBoYXZlIHRoZSBzYW1lIHBlcnNp c3RlbmNlIGFzIG1vZGVsUmVsICovCisJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlID0g bW9kZWxSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisKKwljcmVhdGVTdG10ID0gbWFr ZU5vZGUoQ3JlYXRlU3RtdCk7CisJY3JlYXRlU3RtdC0+cmVsYXRpb24gPSBuZXdQYXJ0TmFt ZTsKKwljcmVhdGVTdG10LT50YWJsZUVsdHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+aW5oUmVs YXRpb25zID0gTklMOworCWNyZWF0ZVN0bXQtPmNvbnN0cmFpbnRzID0gTklMOworCWNyZWF0 ZVN0bXQtPm9wdGlvbnMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b25jb21taXQgPSBPTkNPTU1J VF9OT09QOworCWNyZWF0ZVN0bXQtPnRhYmxlc3BhY2VuYW1lID0gZ2V0X3RhYmxlc3BhY2Vf bmFtZShtb2RlbFJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKKwljcmVhdGVTdG10LT5p Zl9ub3RfZXhpc3RzID0gZmFsc2U7CisJY3JlYXRlU3RtdC0+YWNjZXNzTWV0aG9kID0gZ2V0 X2FtX25hbWUobW9kZWxSZWwtPnJkX3JlbC0+cmVsYW0pOworCisJdGxjID0gbWFrZU5vZGUo VGFibGVMaWtlQ2xhdXNlKTsKKwl0bGMtPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFyKGdldF9u YW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShtb2RlbFJlbCkpLAorCQkJCQkJ CQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpLCAtMSk7CisKKwkvKgorCSAq IEluZGV4ZXMgd2lsbCBiZSBpbmhlcml0ZWQgb24gImF0dGFjaCBuZXcgcGFydGl0aW9ucyIg c3RhZ2UsIGFmdGVyIGRhdGEKKwkgKiBtb3ZpbmcuICBXZSBhbHNvIGRvbid0IGNvcHkgdGhl IGV4dGVuZGVkIHN0YXRpc3RpY3MgZm9yIGNvbnNpc3RlbmN5CisJICogd2l0aCBDUkVBVEUg VEFCTEUgUEFSVElUSU9OIE9GLgorCSAqLworCXRsYy0+b3B0aW9ucyA9IENSRUFURV9UQUJM RV9MSUtFX0FMTCAmCisJCX4oQ1JFQVRFX1RBQkxFX0xJS0VfSU5ERVhFUyB8IENSRUFURV9U QUJMRV9MSUtFX0lERU5USVRZIHwgQ1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElDUyk7CisJ dGxjLT5yZWxhdGlvbk9pZCA9IEludmFsaWRPaWQ7CisJY3JlYXRlU3RtdC0+dGFibGVFbHRz ID0gbGFwcGVuZChjcmVhdGVTdG10LT50YWJsZUVsdHMsIHRsYyk7CisKKwkvKiBOZWVkIHRv IG1ha2UgYSB3cmFwcGVyIFBsYW5uZWRTdG10LiAqLworCXdyYXBwZXIgPSBtYWtlTm9kZShQ bGFubmVkU3RtdCk7CisJd3JhcHBlci0+Y29tbWFuZFR5cGUgPSBDTURfVVRJTElUWTsKKwl3 cmFwcGVyLT5jYW5TZXRUYWcgPSBmYWxzZTsKKwl3cmFwcGVyLT51dGlsaXR5U3RtdCA9IChO b2RlICopIGNyZWF0ZVN0bXQ7CisJd3JhcHBlci0+c3RtdF9sb2NhdGlvbiA9IGNvbnRleHQt PnBzdG10LT5zdG10X2xvY2F0aW9uOworCXdyYXBwZXItPnN0bXRfbGVuID0gY29udGV4dC0+ cHN0bXQtPnN0bXRfbGVuOworCisJUHJvY2Vzc1V0aWxpdHkod3JhcHBlciwKKwkJCQkgICBj b250ZXh0LT5xdWVyeVN0cmluZywKKwkJCQkgICBmYWxzZSwKKwkJCQkgICBQUk9DRVNTX1VU SUxJVFlfU1VCQ09NTUFORCwKKwkJCQkgICBOVUxMLAorCQkJCSAgIE5VTEwsCisJCQkJICAg Tm9uZV9SZWNlaXZlciwKKwkJCQkgICBOVUxMKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3 IHBhcnRpdGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICog QWNjZXNzRXhjbHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICov CisJbmV3UmVsID0gdGFibGVfb3BlbnJ2KG5ld1BhcnROYW1lLCBOb0xvY2spOworCisJLyoK KwkgKiBXZSBpbnRlbmRlZCB0byBjcmVhdGUgdGhlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1l IHBlcnNpc3RlbmNlIGFzIHRoZQorCSAqIHBhcmVudCB0YWJsZSwgYnV0IHdlIHN0aWxsIG5l ZWQgdG8gcmVjaGVjayBiZWNhdXNlIHRoYXQgbWlnaHQgYmUKKwkgKiBhZmZlY3RlZCBieSB0 aGUgc2VhcmNoX3BhdGguICBJZiB0aGUgcGFyZW50IGlzIHBlcm1hbmVudCwgc28gbXVzdCBi ZQorCSAqIGFsbCBvZiBpdHMgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAobW9kZWxSZWwtPnJk X3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQluZXdS ZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFz IHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSkpKTsKKworCS8qIFBlcm1hbmVudCByZWxz IGNhbm5vdCBiZSBwYXJ0aXRpb25zIGJlbG9uZ2luZyB0byB0ZW1wb3JhcnkgcGFyZW50ICov CisJaWYgKG5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5D RV9URU1QICYmCisJCW1vZGVsUmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBF UlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHBl cm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIFwi JXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKSk7CisK KwlyZXR1cm4gbmV3UmVsOworfQorCisvKgorICogbW92ZU1lcmdlZFRhYmxlc1Jvd3M6IHNj YW4gcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkKKyAq IG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gdGhl IG5ldyBwYXJ0aXRpb24KKyAqIChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQKK21v dmVNZXJnZWRUYWJsZXNSb3dzKFJlbGF0aW9uIHJlbCwgTGlzdCAqbWVyZ2luZ1BhcnRpdGlv bnNMaXN0LAorCQkJCQkgUmVsYXRpb24gbmV3UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXlj aWQ7CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQu ICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlMaXN0 Q2VsbCAgICpsaXN0cHRyOworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBv ZiBidWxrIGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3Rz bG90OworCisJbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJLyogUHJl cGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiAqLworCWJp c3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSBuZWNlc3Nhcnkg dHVwbGUgc2xvdC4gKi8KKwlkc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJl bGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCksCisJCQkJCQkJCQkgICB0YWJsZV9zbG90X2Nh bGxiYWNrcyhuZXdQYXJ0UmVsKSk7CisJRXhlY1N0b3JlQWxsTnVsbFR1cGxlKGRzdHNsb3Qp OworCisJZm9yZWFjaChsaXN0cHRyLCBtZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlS ZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cik7 CisJCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1 cGxlX21hcDsKKwkJVGFibGVTY2FuRGVzYyBzY2FuOworCQlTbmFwc2hvdAlzbmFwc2hvdDsK KworCQkvKiBDcmVhdGUgdHVwbGUgc2xvdCBmb3IgbmV3IHBhcnRpdGlvbi4gKi8KKwkJc3Jj c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKG1lcmdp bmdQYXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIHRhYmxlX3Nsb3RfY2FsbGJhY2tzKG1lcmdp bmdQYXJ0aXRpb24pKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3Zpbmcg YXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24u CisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9u R2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRE ZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwor CQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJ CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAs IE5VTEwpOworCisJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndh cmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKmlu c2VydHNsb3Q7CisKKwkJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJ CXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7 CisJCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlp bnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwg c3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogQ29weSBh dHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJCWluc2VydHNsb3QgPSBkc3RzbG90OworCisJ CQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCQltZW1jcHkoaW5zZXJ0c2xv dC0+dHRzX3ZhbHVlcywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkJICAgc2l6ZW9mKERh dHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJCW1lbWNweShpbnNlcnRzbG90LT50 dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCQkgICBzaXplb2YoYm9vbCkg KiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKworCQkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShp bnNlcnRzbG90KTsKKwkJCX0KKworCQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUg bmV3IHJlbGF0aW9uLiAqLworCQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGlu c2VydHNsb3QsIG15Y2lkLAorCQkJCQkJCSAgIHRpX29wdGlvbnMsIGJpc3RhdGUpOworCisJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJdGFibGVfZW5kc2NhbihzY2Fu KTsKKwkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCQlpZiAodHVwbGVfbWFw KQorCQkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJCUV4ZWNEcm9wU2lu Z2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisJfQorCisJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOwor CisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOwor fQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgPHBhcnRp dGlvbi1saXN0PiBJTlRPIDxwYXJ0aXRpb24tbmFtZT4KKyAqLworc3RhdGljIHZvaWQKK0FU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCW5ld1BhcnRSZWw7CisJ TGlzdENlbGwgICAqbGlzdHB0cjsKKwlMaXN0CSAgICptZXJnaW5nUGFydGl0aW9uc0xpc3Qg PSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJ T2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCS8qCisJICogTG9jayBhbGwgbWVyZ2VkIHBhcnRp dGlvbnMsIGNoZWNrIHRoZW0gYW5kIGNyZWF0ZSBsaXN0IHdpdGggcGFydGl0aW9ucworCSAq IGNvbnRleHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCkKKwl7 CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIpOwor CQlSZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uOworCisJCS8qCisJCSAqIFdlIGFyZSBnb2lu ZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlvbjogbmVlZCB0byB1c2UKKwkJ ICogZXhjbHVzaXZlIGxvY2sgZm9yIHByZXZlbnRpbmcgRE1MLXF1ZXJpZXMgdG8gdGhlIHBh cnRpdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVucnYobmFt ZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJLyogU3RvcmUgYSBuZXh0IG1lcmdpbmcg cGFydGl0aW9uIGludG8gdGhlIGxpc3QuICovCisJCW1lcmdpbmdQYXJ0aXRpb25zTGlzdCA9 IGxhcHBlbmQobWVyZ2luZ1BhcnRpdGlvbnNMaXN0LAorCQkJCQkJCQkJCW1lcmdpbmdQYXJ0 aXRpb24pOworCX0KKworCS8qCisJICogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNo IHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhlIHBhcnRpdGlvbiwKKwkgKiBjaGVjayB3 ZSBoYXZlIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0IGFnYWluc3QgY29u Y3VycmVudAorCSAqIGRyb3AsIGFuZCBtYXJrIHN0bXQtPnJlbGF0aW9uIGFzIFJFTFBFUlNJ U1RFTkNFX1RFTVAgaWYgYSB0ZW1wb3JhcnkKKwkgKiBuYW1lc3BhY2UgaXMgc2VsZWN0ZWQu CisJICovCisJY21kLT5uYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxw ZXJzaXN0ZW5jZTsKKwluYW1lc3BhY2VJZCA9CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVh dGlvbk5hbWVzcGFjZShjbWQtPm5hbWUsIE5vTG9jaywgTlVMTCk7CisKKwkvKgorCSAqIENo ZWNrIGlmIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBk ZXRlY3QgdGhlCisJICogc2l0dWF0aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRp dGlvbnMgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90 aGVyd2lzZSwgdGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hpbmcK KwkgKiB0aGlzIGhlcmUgYWxsb3dzIHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdl LgorCSAqLworCWV4aXN0aW5nUmVsaWQgPSBnZXRfcmVsbmFtZV9yZWxpZChjbWQtPm5hbWUt PnJlbG5hbWUsIG5hbWVzcGFjZUlkKTsKKworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVs aWQpKQorCXsKKwkJUmVsYXRpb24Jc2FtZU5hbWVQYXJ0aXRpb24gPSBOVUxMOworCisJCWZv cmVhY2hfcHRyKFJlbGF0aW9uRGF0YSwgbWVyZ2luZ1BhcnRpdGlvbiwgbWVyZ2luZ1BhcnRp dGlvbnNMaXN0KQorCQl7CisJCQlpZiAoUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0 aW9uKSA9PSBleGlzdGluZ1JlbGlkKQorCQkJeworCQkJCXNhbWVOYW1lUGFydGl0aW9uID0g bWVyZ2luZ1BhcnRpdGlvbjsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChzYW1l TmFtZVBhcnRpdGlvbikKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBuZXcgcGFydGl0aW9uIGhh cyB0aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiBtZXJnaW5nCisJCQkgKiBwYXJ0aXRpb25zLgor CQkJICovCisJCQljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKworCQkJLyogR2Vu ZXJhdGUgdGVtcG9yYXJ5IG5hbWUuICovCisJCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJtZXJn ZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisKKwkJ CS8qCisJCQkgKiBSZW5hbWUgdGhlIGV4aXN0aW5nIHBhcnRpdGlvbiB3aXRoIGEgdGVtcG9y YXJ5IG5hbWUsIGxlYXZpbmcgaXQKKwkJCSAqIGZyZWUgZm9yIHRoZSBuZXcgcGFydGl0aW9u LiAgV2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMKKwkJCSAqIGluIHRoZSBmdXR1 cmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBldmVudHVhbGx5IGRyb3AgdGhlCisJCQkgKiBl eGlzdGluZyBwYXJ0aXRpb24gYW55d2F5LgorCQkJICovCisJCQlSZW5hbWVSZWxhdGlvbklu dGVybmFsKFJlbGF0aW9uR2V0UmVsaWQoc2FtZU5hbWVQYXJ0aXRpb24pLAorCQkJCQkJCQkg ICB0bXBSZWxOYW1lLCBmYWxzZSwgZmFsc2UpOworCisJCQkvKgorCQkJICogV2UgbXVzdCBi dW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3IHBhcnRpdGlvbgorCQkJ ICogdHVwbGUgdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkJICovCisJCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkgZXJybXNnKCJy ZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKSk7 CisJCX0KKwl9CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRpb25zLiAqLworCWRl ZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRp b25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCWZvcmVhY2gobGlzdHB0ciwgbWVy Z2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbiA9 IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFJlbW92ZSB0aGUgcGdfaW5o ZXJpdHMgcm93IGZpcnN0LiAqLworCQlSZW1vdmVJbmhlcml0YW5jZShtZXJnaW5nUGFydGl0 aW9uLCByZWwsIGZhbHNlKTsKKwkJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5n LiAqLworCQlEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsIG1lcmdpbmdQYXJ0aXRpb24s IGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisJfQorCisJLyogQ3JlYXRlIHRhYmxlIGZvciBu ZXcgcGFydGl0aW9uLCB1c2UgcGFydGl0aW9uZWQgdGFibGUgYXMgbW9kZWwuICovCisJbmV3 UGFydFJlbCA9IGNyZWF0ZVBhcnRpdGlvblRhYmxlKGNtZC0+bmFtZSwgcmVsLCBjb250ZXh0 KTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRpb25zIHRvIG5ldyBwYXJ0 aXRpb24uICovCisJbW92ZU1lcmdlZFRhYmxlc1Jvd3MocmVsLCBtZXJnaW5nUGFydGl0aW9u c0xpc3QsIG5ld1BhcnRSZWwpOworCisJLyogRHJvcCB0aGUgY3VycmVudCBwYXJ0aXRpb25z IGJlZm9yZSBhdHRhY2hpbmcgdGhlIG5ldyBvbmUuICovCisJZm9yZWFjaChsaXN0cHRyLCBt ZXJnaW5nUGFydGl0aW9uc0xpc3QpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJ UmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbiA9IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIp OworCisJCS8qIEdldCByZWxhdGlvbiBpZCBiZWZvcmUgdGFibGVfY2xvc2UoKSBjYWxsLiAq LworCQlvYmplY3Qub2JqZWN0SWQgPSBSZWxhdGlvbkdldFJlbGlkKG1lcmdpbmdQYXJ0aXRp b24pOworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0 Lm9iamVjdFN1YklkID0gMDsKKworCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4g Ki8KKwkJdGFibGVfY2xvc2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2NrKTsKKworCQlwZXJm b3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisJfQorCWxpc3RfZnJl ZShtZXJnaW5nUGFydGl0aW9uc0xpc3QpOworCisJLyoKKwkgKiBBdHRhY2ggYSBuZXcgcGFy dGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDoKKwkgKiB2 ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWRlZC4K KwkgKi8KKwlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIGNt ZC0+Ym91bmQpOworCisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFi bGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDg0 Y2VmNTdhNzAuLmQ4NWM3NGNiN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNzYwLDcgKzc2MCw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhF UlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9X TkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElU SU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIg UEFSVElBTCBQQVJUSVRJT04gUEFSVElUSU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQ TEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lP TiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VT IFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgpA QCAtMjMxOCw2ICsyMzE4LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9 IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+ Ym91bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29u Y3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIz MzIsNiArMjMzMyw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9E ZXRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5k ID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3Vy cmVudCA9ICQ0OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNDUsNiAr MjM0NywyMSBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNo UGFydGl0aW9uRmluYWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJv dW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CisJCQkJCWNtZC0+Y29u Y3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0Ug UEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFS VElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFt ZQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVD bWQpOworCQkJCQlQYXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7 CisKKwkJCQkJbi0+c3VidHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5u YW1lID0gJDc7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0 ID0gJDQ7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAo Tm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTIzNjEsNiArMjM3OCw3 IEBAIGluZGV4X3BhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQ YXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVM TDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9 IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3NjkxLDYgKzE3 NzA5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElB TAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8 IFBBU1NXT1JECiAJCQl8IFBBVEgKQEAgLTE4MzE0LDYgKzE4MzMzLDcgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04K KwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBB VEgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDc5Y2FkNGFiMzAuLjYz ZWEyZWM1ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzIsNiAr MzIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25z dHJhaW50LmgiCkBAIC01OCw2ICs1OSw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5 cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKKyNp bmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInJld3JpdGUv cmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKQEAgLTMyMjksNiArMzIzMiwxMjEgQEAgdHJhbnNmb3JtUnVsZVN0 bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8q CisgKiBjaGVja1BhcnRpdGlvbgorICoJCUNoZWNrIHRoYXQgcGFydFJlbE9pZCBpcyBhbiBv aWQgb2YgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgcmVsCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQorewor CVJlbGF0aW9uCXBhcnRSZWw7CisKKwlwYXJ0UmVsID0gcmVsYXRpb25fb3BlbihwYXJ0UmVs T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJaWYgKHBhcnRSZWwtPnJkX3JlbC0+cmVsa2lu ZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBu b3QgYSB0YWJsZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSkp KTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpKSkpOworCisJaWYgKGdldF9wYXJ0aXRpb25fcGFy ZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAor CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVs YXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwp LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKworCS8qIFBlcm1p c3Npb25zIGNoZWNrcyAqLworCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxh dGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHBhcnRSZWwpLCBHZXRVc2VySWQoKSkpCisJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShw YXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQpLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShwYXJ0UmVsKSk7CisKKwlyZWxhdGlvbl9jbG9zZShwYXJ0UmVsLCBBY2Nlc3NTaGFy ZUxvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAq CQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5k CisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFydGl0aW9ucy4gQ2Fs Y3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4KKyAqLworc3RhdGlj IHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZhdWx0UGFydE9p ZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCVBh cnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwgICAqbGlzdHB0 ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0gZmFsc2U7CisJ TGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlpZiAocGFyZW50LT5yZF9yZWwtPnJlbGtp bmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBl cnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlv bktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkp OworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNIKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkgZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBj YW5ub3QgYmUgbWVyZ2VkIikpKTsKKworCS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEgREVG QVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRf ZnJvbV9wYXJ0ZGVzYygKKwkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UGFydGl0aW9uRGVz YyhwYXJlbnQsIHRydWUpKTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNtZC0+cGFydGxp c3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0 cHRyKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBsaXN0IHNob3VsZCBoYXZlIGRpZmZl cmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChsaXN0cHRyMiwgcGFydGNtZC0+cGFy dGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0LCBsaXN0cHRyKSkKKwkJeworCQkJUmFu Z2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIyKTsKKworCQkJ aWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJIGVycm1zZygicGFydGl0 aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSkp LAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+bG9jYXRp b24pKTsKKwkJfQorCisJCS8qIFNlYXJjaCBERUZBVUxUIHBhcnRpdGlvbiBpbiB0aGUgbGlz dC4gKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQobmFtZSwgTm9Mb2NrLCBmYWxz ZSk7CisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFy dCA9IHRydWU7CisKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkKTsKKworCQlw YXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBB bGxvY2F0ZSBib3VuZCBvZiByZXN1bHRpbmcgcGFydGl0aW9uLiAqLworCUFzc2VydChwYXJ0 Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21kLT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRp dGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBhcnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0 Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKwlwYXJ0Y21kLT5ib3VuZC0+bG9j YXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+aXNfZGVmYXVsdCA9IGlzRGVmYXVsdFBh cnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQljYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5k X2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJCQkJCQkJCQlwYXJ0 T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRlKTsKK30KKwog LyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBhbmFseXNpcyBm b3IgQUxURVIgVEFCTEUKQEAgLTM1MDUsNiArMzYyMywxOSBAQCB0cmFuc2Zvcm1BbHRlclRh YmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMg PSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVy Z2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBh cnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNt ZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCSBlcnJt c2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdv IGl0ZW1zIikpKTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwg cGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJ CWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCBjMjg2MzlkMmUzLi42Y2IzMmQ1N2VmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMyMTQsOCArMzIx NCw5IEBAIGNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoY2hhciAqcmVsbmFtZSwgUmVsYXRp b24gcGFyZW50LAogCQkJCQkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW07CiAKIAkJCQkJ CS8qCi0JCQkJCQkgKiBQb2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRh dHVtcyBsaXN0OwotCQkJCQkJICogaWYgd2UgaGF2ZSBlcXVhbGl0eSwgcG9pbnQgdG8gdGhl IGZpcnN0IG9uZS4KKwkJCQkJCSAqIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUg bGlzdCBvZiBsb3dlcgorCQkJCQkJICogZGF0dW1zOyBpZiB3ZSBoYXZlIGVxdWFsaXR5LCBw b2ludCB0byB0aGUgZmlyc3QKKwkJCQkJCSAqIG9uZS4KIAkJCQkJCSAqLwogCQkJCQkJZGF0 dW0gPSBjbXB2YWwgPT0gMCA/IGxpbml0aWFsKHNwZWMtPmxvd2VyZGF0dW1zKSA6CiAJCQkJ CQkJbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CkBAIC00 OTc3LDMgKzQ5NzgsMjEwIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElP Tl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWlu ZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZQor ICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIFRo aXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0 KCkgYW5kCisgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLgorICog VGhpcyBmdW5jdGlvbiBjb21wYXJlcyB1cHBlciBib3VuZCBvZiBmaXJzdF9ib3VuZCBhbmQg bG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZC4gVGhlc2UgYm91bmRzIHNob3VsZCBi ZSBlcXVhbCBleGNlcHQgd2hlbgorICogImRlZmF1bHRQYXJ0ID09IHRydWUiICh0aGlzIG1l YW5zIHRoYXQgb25lIG9mIHNwbGl0IHBhcnRpdGlvbnMgaXMgREVGQVVMVCkuCisgKiBJbiB0 aGlzIGNhc2UgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgY2FuIGJlIGxlc3MgdGhhbiBs b3dlciBib3VuZCBvZgorICogc2Vjb25kX2JvdW5kIGJlY2F1c2Ugc3BhY2UgYmV0d2VlbiB0 aGVzZSBib3VuZHMgd2lsbCBiZSBpbmNsdWRlZCBpbgorICogREVGQVVMVCBwYXJ0aXRpb24u CisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBmaXJzdF9uYW1lOgkJ bmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KKyAqIGZpcnN0X2JvdW5kOgkJYm91bmQgb2YgZmly c3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlv bgorICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBkZWZh dWx0UGFydDoJCXRydWUgaWYgb25lIG9mIHNwbGl0IHBhcnRpdGlvbnMgaXMgREVGQVVMVAor ICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWlu aW5nIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja190d29fcGFydGl0 aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdlVmFy ICpmaXJzdF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91 bmQsCisJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBhcnRp dGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIGJvb2wgZGVmYXVsdFBh cnQsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBr ZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdl Qm91bmQgKmZpcnN0X3VwcGVyOworCVBhcnRpdGlvblJhbmdlQm91bmQgKnNlY29uZF9sb3dl cjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfUkFOR0UpOworCisJZmlyc3RfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRp b25fcmJvdW5kKGtleSwgLTEsIGZpcnN0X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOwor CXNlY29uZF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc2Vj b25kX2JvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkvKgorCSAqIGxvd2VyMT1mYWxz ZSAodGhlIHNlY29uZCB0byBsYXN0IGFyZ3VtZW50KSBmb3IgY29ycmVjdCBjb21wYXJpc29u IG9mCisJICogbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0 aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRz dXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBzZWNv bmRfbG93ZXItPmRhdHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNl LCBmaXJzdF91cHBlcik7CisJaWYgKCghZGVmYXVsdFBhcnQgJiYgY21wdmFsKSB8fCAoZGVm YXVsdFBhcnQgJiYgY21wdmFsIDwgMCkpCisJeworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpk YXR1bSA9IGxpbml0aWFsKHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkgZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGNv bmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiBcIiVzXCIi LAorCQkJCQkJc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAor CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKSk7CisJ fQorfQorCisvKgorICogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjCisgKgorICogUmV0dXJu cyBkZXNjcmlwdGlvbiBvZiBwYXJ0aXRpb24gd2l0aCBPaWQgInBhcnRPaWQiIGFuZCBuYW1l ICJuYW1lIi4KKyAqLworc3RhdGljIFBhcnRpdGlvbkJvdW5kU3BlYyAqCitnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRPaWQsIFJhbmdlVmFyICpuYW1lKQoreworCUhlYXBU dXBsZQl0dXBsZTsKKwlEYXR1bQkJZGF0dW07CisJYm9vbAkJaXNudWxsOworCVBhcnRpdGlv bkJvdW5kU3BlYyAqYm91bmRzcGVjID0gTlVMTDsKKworCS8qIFRyeSBmZXRjaGluZyB0aGUg dHVwbGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZvciBzcGVlZC4gKi8KKwl0dXBsZSA9IFNlYXJj aFN5c0NhY2hlMShSRUxPSUQsIHBhcnRPaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlv biBcIiVzXCIiLAorCQkJIG5hbWUtPnJlbG5hbWUpOworCisJZGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3Vu ZCwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAicGFy dGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiBcIiVzXCIgaXMgbnVsbCIsCisJCQkgbmFtZS0+ cmVsbmFtZSk7CisKKwlib3VuZHNwZWMgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0 cmluZyhkYXR1bSkpOworCisJaWYgKCFJc0EoYm91bmRzcGVjLCBQYXJ0aXRpb25Cb3VuZFNw ZWMpKQorCQllbG9nKEVSUk9SLCAiZXhwZWN0ZWQgUGFydGl0aW9uQm91bmRTcGVjIGZvciBy ZWxhdGlvbiBcIiVzXCIiLAorCQkJIG5hbWUtPnJlbG5hbWUpOworCisJUmVsZWFzZVN5c0Nh Y2hlKHR1cGxlKTsKKwlyZXR1cm4gYm91bmRzcGVjOworfQorCisvKgorICogY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKKyAqCisgKiBDYWxjdWxhdGVzIHRoZSBib3Vu ZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBieSB1c2luZyB0aGUgYm91bmRzIG9mCisg KiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9u ZWQgdGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVy Z2VkCisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQKKyAq IHNwZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRp dGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRl dGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0aW9u X2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0 TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlvbkJv dW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0 aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0 aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsK KworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFU RUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0 T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91bmRz ID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCQkJLyoKKwkJCQkgKiBDcmVhdGUg YXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0IG9mCisJCQkJICogUGFydGl0aW9uQm91 bmRTcGVjLgorCQkJCSAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJ CQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKGxpc3RfbnRoX29p ZChwYXJ0T2lkcywgaSksCisJCQkJCQkJCQkJCQkJIChSYW5nZVZhciAqKSBsaXN0X250aChw YXJ0TmFtZXMsIGkpKTsKKworCQkJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0 aXRpb25fcmJvdW5kKGtleSwgaSwgYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJCQkJ Ym91bmRzID0gbGFwcGVuZChib3VuZHMsIGJvdW5kKTsKKwkJCQl9CisKKwkJCQkvKiBTb3J0 IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJCQlxc29ydF9hcmcobG93ZXJfYm91bmRz LCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCQkJICBxc29y dF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkJCS8qIFJhbmdl cyBvZiBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJCQlmb3IgKGkgPSAx OyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlpbmRleCA9IGxvd2VyX2Jv dW5kc1tpXS0+aW5kZXg7CisJCQkJCWludAkJCXByZXZfaW5kZXggPSBsb3dlcl9ib3VuZHNb aSAtIDFdLT5pbmRleDsKKworCQkJCQljaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFu Z2UocGFyZW50LAorCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnRO YW1lcywgcHJldl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9uQm91bmRTcGVj ICopIGxpc3RfbnRoKGJvdW5kcywgcHJldl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAoUmFu Z2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICAo UGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgaW5kZXgpLAorCQkJCQkJ CQkJCQkJCSAgZmFsc2UsIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBMb3dl ciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5kIG9mIG1lcmdl ZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9 CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJf Ym91bmRzWzBdLT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICogVXBw ZXIgYm91bmQgb2YgbGFzdCBwYXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5kIG9mIG1lcmdl ZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9 CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJf Ym91bmRzW25wYXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVl KGxvd2VyX2JvdW5kcyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJ CQl9CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQlMaXN0 Q2VsbCAgICpsaXN0cHRyLAorCQkJCQkJICAgKmxpc3RwdHIyOworCisJCQkJLyogQ29uc29s aWRhdGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlm b3Jib3RoKGxpc3RwdHIsIHBhcnRPaWRzLCBsaXN0cHRyMiwgcGFydE5hbWVzKQorCQkJCXsK KwkJCQkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIp OworCQkJCQlPaWQJCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIpOworCisJCQkJCWJv dW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKGN1ck9pZCwgbmFtZSk7CisJCQkJCXNw ZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2NvbmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+ bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJ CQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4 IGE3Y2NkZTZkN2QuLmMzZWE4N2ZjYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTIzNTMs NiArMjM1Myw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05T VFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9O IiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiLAorCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAogCQkJCQkgICJPRiIsICJOT1Qg T0YiKTsKIAkvKiBBTFRFUiBUQUJMRSB4eHggQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFERCIpKQpAQCAtMjYyMCw2ICsyNjIxLDE1 IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRF VEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNV UlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdF IFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwg TWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKKwl7CisJCXNldF9jb21w bGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOworCX0KKwllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIs ICIoKikiKSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyIpOworCiAJLyogQUxURVIgVEFCTEUg PG5hbWU+IE9GICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9s aXN0X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmlu ZGV4IDEyNGQ4NTNlNDkuLmI2ZTc5NTdlYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK QEAgLTkzNyw2ICs5MzcsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1 bQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVu a25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsKIAorLyoKKyAqIFBhcnRpdGlvbkRl c2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9yIEFMVEVSIFRBQkxFIFNQTElU IFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYgc3RydWN0IFNpbmdsZVBhcnRpdGlv blNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBu YW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZP UiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQYXJ0aXRpb25TcGVjOworCiAv KgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNI L0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKICAqLwpAQCAtOTQ1LDYgKzk1Niw4IEBAIHR5 cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIg ICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoICovCiAJ UGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5n ICovCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMsIGZvciBN RVJHRS9TUExJVAorCQkJCQkJCQkgKiBQQVJUSVRJT04gY29tbWFuZCAqLwogCWJvb2wJCWNv bmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApAQCAtMjQwMCw2ICsyNDEzLDcgQEAgdHlw ZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFU VEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBB UlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFS VElUSU9OIEZJTkFMSVpFICovCisJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBB UlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJ QVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwog CUFUX0Ryb3BJZGVudGl0eSwJCQkvKiBEUk9QIElERU5USVRZICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKaW5kZXggZjg2NTkwNzhjZS4uNmIyNTZmY2VjZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApA QCAtMzM1LDYgKzMzNSw3IEBAIFBHX0tFWVdPUkQoInBhcmFtZXRlciIsIFBBUkFNRVRFUiwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFyc2VyIiwg UEFSU0VSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw YXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJwYXJ0aXRpb25zIiwgUEFSVElUSU9OUywgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2luZyIsIFBBU1NJ TkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3N3 b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInBhdGgiLCBQQVRILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3Jj L2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCAzZDljYzEwMzFmLi4w MzI5ZDdiZDg0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAg LTE0Myw0ICsxNDMsMTAgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNl YXJjaChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNo X2JzZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50 IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFy dGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkJCQlM aXN0ICpwYXJ0TmFtZXMsCisJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJ CQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCQkJCVBhcnNlU3RhdGUg KnBzdGF0ZSk7CisKICNlbmRpZgkJCQkJCQkvKiBQQVJUQk9VTkRTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0IGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTg0NDZhYWFiNQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uu b3V0CkBAIC0wLDAgKzEsMTk5IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9u cworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4 dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0t LS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisy NXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMg czJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVH SU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRF UiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBf MjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBE QVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQg ICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAg ICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCiso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJzIHMx bWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOwor c3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0 XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJl IGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwu Li4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBG Uk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUg ICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAor MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMy YnJyIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJy OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBN RVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRf MDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0 ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7 CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSst LS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFt b2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBh cnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRw YXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBT RVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4 dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFy dCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCist LSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0 MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJ WkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6 IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFy dF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1 OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4 dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAg ICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0 MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMx YnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIg VEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIw KSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFU RSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAg IAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hl ZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggMTQz MTA5YWE0ZC4uYzE0OTkzMzhkNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlCkBAIC0xMDYsNiArMTA2LDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUt MQogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11 cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAordGVzdDogcGFydGl0aW9u LW1lcmdlCiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0 ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmRjMmI5ZDM0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKQEAgLTAsMCArMSw1NCBA QAorIyBWZXJpZnkgdGhhdCBNRVJHRSBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMg d2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVY SVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRp dGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElP TiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJM RSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFy dCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRf ZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQy NScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisK K3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0 ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwg U0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxbWVyZwl7IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdF IFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8y MDsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7 IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgfQorc3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxF Q1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMiBpbnNlcnRzIHJvdyBpbnRvIHRhYmxlLiBz MSBzdGFydHMgTUVSR0UgUEFSVElUSU9OUyB0aGVuCisjIHMyIGlzIHRyeWluZyB0byB1cGRh dGUgaW5zZXJ0ZWQgcm93IGFuZCB3YWl0cyB1bnRpbCBzMSBmaW5pc2hlcworIyBNRVJHRSBv cGVyYXRpb24uCisKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYnMgczFtZXJn IHMyYiBzMnUgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJyIHMyaSBzMmMg czFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnJyIHMy aSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBz MmJzIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMmJzIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11 dGF0aW9uIHMyYnMgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxf ZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYwppbmRleCAyNzU4YWU4MmQ3Li5jYzM0MWFmZGY0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNl LmMKQEAgLTMwMCw2ICszMDAsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJ CXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFr OworCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJc3RydHlwZSA9ICJNRVJHRSBQ QVJUSVRJT05TIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQkJ c3RydHlwZSA9ICJBREQgSURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjU5ODM2ZTJkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTAsMCAr MSw5NDUgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0K Ky0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEy LTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy XzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBB UlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIs IHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBw YXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJ TkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIy MDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAy MiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMg bm90IGEgdGFibGUKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0 aXRpb24gInNhbGVzX2phbjIwMjIiCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxl c19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBz YWxlc19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4g c2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2ph bjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MSIKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291 cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEu c2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNo X3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJF IGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAg ICAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIy IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0w MS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxl c19kZWMyMDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8g KCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNCBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIEFkZCByb3dzIGludG8g cGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lk eCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0z MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjIt MDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2Ns YXNzKTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJB TkdFIChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBj b25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtp bmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAg ICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxl c19qYW4yMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZS T00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0y MDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCistLSBjaGVjayBzY2hlbWEt cXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIs IHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitT RUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNo cGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp CisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRz IGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxl c19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQg ICAgICAgICAgICAgICAgICAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJf bWFyX2FwcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIw MjInKQorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NF TEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21h cl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIn OworICAgICAgICBzY2hlbWFuYW1lICAgICAgICB8ICAgICAgIHRhYmxlbmFtZSAgICAgICB8 ICAgICAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9z YWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmViX21h cl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5z YWxlc19mZWJfbWFyX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy CisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAg ICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisg ICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29u ICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDEwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRl c3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJP TSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJl IHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAx NTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwg ICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxMCByb3dzKQor CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNf ZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWly bm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwg ICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0 Jyk7CistLSBNZXJnZSBwYXJ0aXRpb25zIChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBp bnRvIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCisgIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIy MDIyLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNf b3RoZXJzOworc2VsZWN0ICogZnJvbSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAg ICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg3IHJvd3MpCisKKy0tIHNob3cgcGFydGl0aW9ucyB3 aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMu cmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19j YXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBp LmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgIG9p ZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1 LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQor IHNhbGVzX290aGVycyAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQK KygzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBmb3I6 CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNv bHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195 ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRl IFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFy Ojp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAn MCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAor ICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1l bnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUg Rk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVT IEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyk7CitJTlNFUlQg SU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEs IDIpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIs IDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIw MjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMics IDIwMjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2Vy MycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAx MiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIw MjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIw MjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIw MjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVw YXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkg fCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg MSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMu MDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIs IHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApOworSU5TRVJUIElO VE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKK1NFTEVD VCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEy LjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIx IHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAx LjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAx LjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAz LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0 bWVudAorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKKyBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwg c2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAg ICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDgg fCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVh ciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFy dG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIz ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIy LjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDYgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMg fCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc19kYXRlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBh cnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNw ZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUg Rk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxw Z3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxs ZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19P UCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7 CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3Ry aWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBF QUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2Fm dGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVz cGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJf aW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBzaG91 bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkg Y2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05P VElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3 aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZp cmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgx OSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVz cGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsK Ky0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNh bGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5U CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxl dmVsID0gUk9XCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzcGVvcGxlMTBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAg MjAgfCBTbWlybm9mZgorICAgICAgICAgICAgIDMwIHwgRm9yZAorKDQgcm93cykKKworRFJP UCBUQUJMRSBzYWxlc3Blb3BsZTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCk7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0ZWQg Y29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl MDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKKy0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgZDIgSU5ULCAgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJ dmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMjBfMzAgVkFMVUVTICgyMCwgMTAx LCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgz MSwgbm93KCksICdQb3BvdicpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9Q IENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4g ZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIw IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNw ZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworc2VsZWN0ICogZnJvbSBzYWxl c3Blb3BsZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90 CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAg ICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAg ICAgICAgICAgMzAgfCBGb3JkCisoNiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVv cGxlMDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJv dAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgICAgIDMxIHwg UG9wb3YKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUg c2FsZXNwZW9wbGU7CistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAy Mi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9O IE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgn MjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0 ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYs ICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0z MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8 ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIw MjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUg fCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyXzAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQt MDYtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVzX2FwcjIwMjJfMTBfMjAsIHNhbGVz X2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2FsbDsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5 ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3 IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTktMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIw MjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkgTElT VCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2Fs ZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBz YWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNU IChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBU QUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBz YWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5r aScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNf bGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7 CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVz X2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgInNhbGVz X2V4dGVybmFsIiBpcyBub3QgYSBwYXJ0aXRpb24KKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVy bmFsMiIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikg SU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBh cnRpdGlvbgorLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBh cnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vh c3QpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlz IG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0RST1AgVEFCTEUg c2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFC TEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDog QlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVE IEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAor IHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNf ZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJ TkRFWCBzYWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJ TkcgYnRyZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rf c2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Nl bnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0w MScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAn TmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAw LCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn SXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnTGlzYm9uJywg ICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0w My0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAg ICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAx MTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJz b25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnT3Nsbycs ICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAy Mi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgn LCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAg ICAgMTUwLCAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNw ZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScp OworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBj Lm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5k aW5nIHwgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHNhbGVzX2NlbnRyYWwgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQorIHNhbGVzX2Vhc3QgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJn JywgJ0hlbHNpbmtpJykKKyBzYWxlc193ZXN0ICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcp Cisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVM VAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05T IChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2Fs bDsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVn Y2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdf Y2F0YWxvZy50ZXh0OworICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5k aW5nIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHNhbGVzX2FsbCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisgc2Fs ZXNfbm9yZCAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCisgc2FsZXNfb3RoZXJz IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNv bl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IE11bGxlciAg ICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIK KyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8 ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgMSB8IFRydW1wICAg ICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIK KyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBWbGFkaXZvc3RvayAgICB8 ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFNtaXRoICAg ICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIK KyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8 ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE1heSAgICAg ICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIK KyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8 ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX25vcmQ7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNh bGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBT dC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAg ICAgNyB8IE1heSAgICAgICAgICAgICAgfCBIZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIw MCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBI ZWxzaW5raSAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgIDgw MCB8IDAzLTAyLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgfCAgICAgICAg ICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAg IHwgTGlzYm9uICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAg ICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgfCAgICAgICAgICA2NTAg fCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwgTGlz Ym9uICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgICAgIDEg fCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0w MS0yMDIyCisgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0 b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIy CisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAg ICAgICAgIHwgS3lpdiAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAg ICAxNTAgfCAwMy0wOC0yMDIyCisoMTAgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgt MjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz X3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBX YXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAz LTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7Cist LQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitD UkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZP UiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGlu dCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEg UEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFU RSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAx IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIg TUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CitFUlJPUjogIHJlbGF0 aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorLS0gRVJS T1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFS VElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBh cnRpdGlvbgorRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQx OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBvcmFyeSB0YWJsZS4K Ky0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj LCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlk IEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEg fCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8IHQKKyB0cF8xXzIgfCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gUGFydGl0aW9u IHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5y ZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8yIHwgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tCist LSBDaGVjayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1l IGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0K K0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQo aSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJ TlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtl eScgYW5kICd0cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3RyYWludCBuYW1lIHNo b3VsZCBiZSAndHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgorICAgICAgICAgICAg ICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBfMV8yIgor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBT dG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0 aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3Ry YWludDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkgPj0gMCkgQU5EIChpIDwgMikpCitJbmRl eGVzOgorICAgICJ0cF8xXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorICAgICJ0 cF8xXzJfaV9pZHgiIGJ0cmVlIChpKQorCitEUk9QIFRBQkxFIHQ7CistLQorLS0gVHJ5IG1p eGluZyBwZXJtYW5lbnQgYW5kIHRlbXBvcmFyeSBwYXJ0aXRpb25zLgorLS0KK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitD UkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxw ZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0 Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSstLS0tLS0tLS0t LS0tLS0tCisgdCAgIHwgcAorKDEgcm93KQorCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdf Y2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQg aS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAg cGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCBwCisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikgfCBwCisoMiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1w LCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVy c2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRp b24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQg cGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsK K0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRp b24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorRFJPUCBUQUJMRSB0OworU0VUIHNlYXJj aF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0JF R0lOOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5v aWQgPSAndCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0rLS0t LS0tLS0tLS0tLS0tLQorIHQgICB8IHQKKygxIHJvdykKKworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVs aWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBf MSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93cykKKworU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKKy0tIENhbid0IG1l cmdlIHRlbXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50IHBhcnRpdGlvbgor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CitST0xMQkFDSzsKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRz IHBhcmVudCdzIHRhYmxlc3BhY2UKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkg VVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04g QlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJM RSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitD UkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdf dGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFt ZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgcmVncmVzc190YmxzcGFj ZQorIHRwXzBfMiAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygyIHJvd3MpCisKK1NFTEVDVCB0 YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hF UkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUs IHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgIGluZGV4bmFtZSAgfCAgICB0YWJsZXNwYWNl ICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0 ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAg fCB0cF8wXzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygyIHJvd3MpCisKK0RST1AgVEFC TEUgdDsKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRh YmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdl X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlv bnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgYy5y ZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJl bGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8yJzo6 cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5h bWUgICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAg ICAgfCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKyB0cF8wXzIgIHwgcGFydGl0aW9uc19tZXJn ZV9oZWFwCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0Qg cGFydGl0aW9uc19tZXJnZV9oZWFwOworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRo ZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCBhbGwKKy0tIHRoZSBt ZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93 bmVyIG9mIHRhYmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRB QkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBU QUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsK K0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK1JFU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9m IHRhYmxlIHRwXzFfMgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFC TEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBT RVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFRBQkxFIHQ7CitSRVZP S0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitEUk9Q IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJPUCBT Q0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA3 YTVhOTEwNTYyLi43OWM5YTAyM2ZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKQEAgLTExOSw3ICsxMTksNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBj b3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBU aGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0 YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVz dDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0 IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0 IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUKK3Rlc3Q6IHBh cnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9u cyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5m byB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0 ZQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBy dW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5zIERETApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uYmVkZTgxOWFmOQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAgLTAsMCArMSw2MDkg QEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0K Ky0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEy LTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIg UEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0x NScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNI IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24g d2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21h cjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0g RVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfamFuMjAy MiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVz X21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOwor LS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNv bmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5k IHNhbGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRP IHNhbGVzX2RlY19qYW5fZmViMjAyMjsKKworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3Rv bSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJj aF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1 YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19m ZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9m ZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJs ZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor Q1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jhbmdl IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCBwZ19jYXRh bG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKworLS0gc2hvdyBw YXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyJzsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vf c2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp OworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgw LCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKKworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBh cnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUworICAoc2FsZXNfamFuMjAyMiwg c2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJzKSBJ TlRPIHNhbGVzX290aGVyczsKKworc2VsZWN0ICogZnJvbSBzYWxlc19vdGhlcnM7CisKKy0t IHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQg PSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNz CisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9y OgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBj b2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf eWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0 ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVh cjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwg JzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwK KyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRt ZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KTsKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMSwg MSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwg MiwgNCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAy MiwgMSwgMik7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywg MjAyMiwgMiwgMSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIx JywgMjAyMiwgMywgMyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFn ZXIyJywgMjAyMiwgMywgNCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29u X25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01h bmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NF TEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKKwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEw KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAy LCAxMCk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CisKKy0tCist LSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJp Z2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl MDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5T IHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBO T1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwg PSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVS TiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9h ZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBP TiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJP Q0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JF QVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAg QUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAg ICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVv cGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVt ZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKKy0t IDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxl MjBfMzAsIHNhbGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworLS0g MiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdn ZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf NDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAx XzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRBQkxFIHNh bGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsK KworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1B UlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAg UEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsK Ky0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgZDIgSU5ULCAgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUzMF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5v dicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdT bWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBu b3coKSwgJ1BvcG92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBD T0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQy OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIw IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgy MCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNh bGVzcGVvcGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworc2VsZWN0ICogZnJv bSBzYWxlc3Blb3BsZTsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVj dCAqIGZyb20gc2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsK KworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0w MScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4 IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjJfMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBf MzA7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8y MF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jhbmdl OworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19h cHJfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZ IExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hl bHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCisKK0NSRUFURSBUQUJM RSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxl c19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxz aW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QyIERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtF IHNhbGVzX2xpc3QpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNI QVIoNSkpOworCistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dl c3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVS Uk9SOiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3Qs IHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19s aXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193 ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CisKK0RST1Ag VEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RS T1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCist LSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRh dGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBH RU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwK KyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOwor CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBz YWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hl bHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50 LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEw MDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNv bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0 ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIy LTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2Jywg ICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdWbGFk aXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxl c19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcy MDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdIYWxk ZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNf YW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAg ICAgICA2NTAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19z dGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdX YXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAs ICcyMDIyLTAzLTA1Jyk7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0 YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdz YWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRy YWwpIElOVE8gc2FsZXNfYWxsOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRp b25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGlu aGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19p bmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQg PSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBzYWxl c19saXN0OworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworU0VMRUNUICogRlJPTSBzYWxl c19hbGw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBt ZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNU ICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVD VCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92 JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsK KworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUuCist LQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0 MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAo aSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0 MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitD UkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0aW9u ICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFC TEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CistLSBFUlJP UjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJU SVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CisKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRB QkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRp b25zIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1Q IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQor ICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBv cmFyeS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisg IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkK KyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVn Y2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdf Y2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tCistLSBDaGVjayB0aGUgcGFy dGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFz IG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0 IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NS RUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7 CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0 cF8xXzJfaV9pZHgnLgorLS0gTm90LW51bGwgY29uc3RyYWludCBuYW1lIHNob3VsZCBiZSAn dHBfMV8yX2lfbm90X251bGwnLgorXGQrIHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CisKKy0t CistLSBUcnkgbWl4aW5nIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IHBhcnRpdGlvbnMuCist LQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAs IHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hF UkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCks IGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFVCBzZWFyY2hfcGF0aCA9 IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tIENhbid0 IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlv bgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5U TyB0cF8wXzI7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRv IGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0RST1AgVEFCTEUgdDsK KworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEs IHB1YmxpYzsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK1NFTEVDVCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJl bGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOwor CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVu dCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFy dGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3BhY2UKK1NFVCBzZWFyY2hfcGF0aCA9 IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBp bnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl KQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJs ZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBf MF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9S REVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4 bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElO ICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitE Uk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBh cmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRp b25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVy OworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5H IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitT RUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0g YSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAn dHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7 CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwOworCistLSBUZXN0 IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQg dGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVy Z2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFU RSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf YWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0 IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBU TyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK KworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWU5NTFhOWU2Zi4uZGRjNGM3OGZiOSAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI2NTksNiArMjY1OSw3IEBAIFNp bXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBTaW1wbGVTdHJpbmdMaXN0Q2VsbAogU2lu Z2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2Vz CiBTbGFiQmxvY2sKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------rCCg6uBkleS6diSwKGsWNB6Y Content-Type: text/plain; charset=UTF-8; name="v33-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v33-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxNDEzNWYwYTA3M2JmMGUwNGVlOGJmMzVjNzU3NzM1YTEwZmIyZDhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2MzMgMi8zXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcwoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIg S29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFu bnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29y b3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmll d2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4s IEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwg R3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRs LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgNzkgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAzOTggKysrKysKIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgNjQgKy0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICA2ODkg KysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAg ICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu aCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAg ICAgICAgICAgICAgfCAgICAyICsKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dCAgICB8ICAxOTAgKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE1ODkgKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8ICA5NjIgKysr KysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0MTA5IGluc2VydGlvbnMoKyksIDE3IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9k ZGwuc2dtbAppbmRleCAyNzcwZTgxNjU2Li42MjZkMzU1MTRjIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00Mzc0 LDYgKzQzNzQsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAgICAg ICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnEx OwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAg U2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhlcmUg aXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9uIGlu dG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnRh YmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNQTElUIFBB UlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgY291bGQgY29t ZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3MgdG9vIGJpZworICAgICBhbmQg bmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3MgaW1wb3J0YW50IHRvIG5v dGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBoYXNo LXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxpdGVyYWw+QUND RVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhpZ2gt bG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5hdHVy ZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFydGl0 aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxU RVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2 cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFMVUVT IEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElUSU9O IG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEnKSBU TyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDMg Rk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsKKzwv cHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8c2Vj dDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGI5OWQ0OTcyYWMuLjZhMjgyMmFkYWQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDEwIEBAIEFM VEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4geyBGT1Ig VkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRf c3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJMRSBbIElGIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K ICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZIHwgRklOQUxJWkUg XQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IElO VE8KKyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+ IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9y ZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIEFMVEVSIFRBQkxFIFsgSUYgRVhJ U1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCiAgICAg ICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l PC9yZXBsYWNlYWJsZT4KQEAgLTExMjAsNiArMTEyNCw1OCBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg PHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4KKyAg ICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxh Y2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0p PC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRh YmxlLiBIYXNoLXBhcnRpdGlvbmluZworICAgICAgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQKKyAg ICAgIGV4aXN0aW5nIHBhcnRpdGlvbnMgKGV4Y2VwdCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICBJZiB0aGUg c3BsaXQgcGFydGl0aW9uIGlzIGEgREVGQVVMVCBwYXJ0aXRpb24sIG9uZSBvZiB0aGUgbmV3 IHBhcnRpdGlvbnMgbXVzdCBiZSBERUZBVUxULgorICAgICAgSW4gY2FzZSBvbmUgb2YgdGhl IG5ldyBwYXJ0aXRpb25zIG9yIG9uZSBvZiBleGlzdGluZyBwYXJ0aXRpb25zIGlzIERFRkFV TFQsCisgICAgICBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBj YW4gaGF2ZSBzcGFjZXMKKyAgICAgIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0 aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBhIERFRkFVTFQKKyAgICAgIHBh cnRpdGlvbiwgdGhlIERFRkFVTFQgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBv ZiB0aGUgbmV3IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBjb250YWluIGEgREVGQVVMVCBwYXJ0 aXRpb24gYW5kIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICAgICAgZG9lcyBub3QgaGF2ZSBh IERFRkFVTFQgcGFydGl0aW9uLCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJv dW5kcyBvZgorICAgICAgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAu Li4gc2hvdWxkIGJlCisgICAgICBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4uCisgICAgICBPbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxh Y2VhYmxlPiwgLi4uIGNhbiBoYXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBh cnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPgorICAgICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxp dHRpbmcgYSBERUZBVUxUIHBhcnRpdGlvbjogd2Ugc3BsaXQgaXQsIGJ1dCBhZnRlcgorICAg ICAgc3BsaXR0aW5nIHdlIGhhdmUgYSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lKS4K KyAgICAgIE9ubHkgc2ltcGxlLCBub24tcGFydGl0aW9uZWQgcGFydGl0aW9uIGNhbiBiZSBz cGxpdC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuZXcgcGFydGl0 aW9ucyB3aWxsIGJlIGNyZWF0ZWQgdGhlIHNhbWUgYXMgdGFibGVzIGNyZWF0ZWQgd2l0aCB0 aGUKKyAgICAgIFNRTCBjb21tYW5kIDxsaXRlcmFsPkNSRUFURSBUQUJMRSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWVOPC9yZXBsYWNlYWJsZT4gKExJ S0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBJ TkNMVURJTkcgQUxMIEVYQ0xVRElORyBJTkRFWEVTIEVYQ0xVRElORyBJREVOVElUWSBFWENM VURJTkcgU1RBVElTVElDUyk8L2xpdGVyYWw+LgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlk ZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAg IGludG8gdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICAgRXh0ZW5kZWQgc3RhdGlzdGljcyBh cmVuJ3QgY29waWVkIGZyb20gdGhlIHBhcmVudCB0YWJsZSwgZm9yIGNvbnNpc3RlbmN5IHdp dGgKKyAgICAgIDxjb21tYW5kPkNSRUFURSBUQUJMRSBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+ LgorCisgICAgICBOZXcgcGFydGl0aW9ucyB3aWxsIGhhdmUgdGhlIHNhbWUgdGFibGUgYWNj ZXNzIG1ldGhvZCBhcyB0aGUgcGFyZW50LgorICAgICAgSWYgdGhlIHBhcmVudCB0YWJsZSBp cyBwZXJzaXN0ZW50IHRoZW4gbmV3IHBhcnRpdGlvbnMgYXJlIGNyZWF0ZWQKKyAgICAgIHBl cnNpc3RlbnQuICBJZiB0aGUgcGFyZW50IHRhYmxlIGlzIHRlbXBvcmFyeSB0aGVuIG5ldyBw YXJ0aXRpb25zCisgICAgICBhcmUgYWxzbyBjcmVhdGVkIHRlbXBvcmFyeS4gIE5ldyBwYXJ0 aXRpb25zIHdpbGwgYWxzbyBiZSBjcmVhdGVkIGluCisgICAgICB0aGUgc2FtZSB0YWJsZXNw YWNlIGFzIHRoZSBwYXJlbnQuCisgICAgIDwvcGFyYT4KKyAgICAgPG5vdGU+CisgICAgICA8 cGFyYT4KKyAgICAgICBUaGlzIGNvbW1hbmQgYWNxdWlyZXMgYW4gPGxpdGVyYWw+QUNDRVNT IEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jay4KKyAgICAgICBUaGlzIGlzIGEgc2lnbmlmaWNh bnQgbGltaXRhdGlvbiwgd2hpY2ggbGltaXRzIHRoZSB1c2FnZSBvZiB0aGlzCisgICAgICAg Y29tbWFuZCB3aXRoIGxhcmdlIHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9h ZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUt bWVyZ2UtcGFydGl0aW9ucyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElUSU9O UyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVw bGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+ CiAKQEAgLTEyMDAsNyArMTI1Niw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICBBbGwgdGhlIGZvcm1zIG9mIEFMVEVSIFRBQkxFIHRoYXQgYWN0IG9uIGEgc2luZ2xlIHRh YmxlLCBleGNlcHQKICAgIDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNF VCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0 ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAotICAgYW5kIDxs aXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRv CisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+ TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNhbiBiZSBjb21iaW5lZCBpbnRvCiAg ICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhl ci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29s dW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBh IHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFy Z2UKQEAgLTE0NDQsNyArMTUwMSw3IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9mIHRo ZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9t IHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBh cnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Ygc3BsaXQgcGFydGl0aW9uLCBvciB0 aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgog ICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODYwLDYgKzE5 MTcsMjQgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9O IG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAg PHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBh cnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wMi0wMScp IFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIzIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIwMjMtMDQtMDEnKSwKKyAgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIzLTA0LTAxJykgVE8g KCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+ CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIGxpc3QtcGFydGl0aW9u ZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxV RVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7Cis8L3Byb2dyYW1saXN0aW5n PjwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBp bnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKIDxwcm9ncmFtbGlzdGlu Zz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMWI4NDVhNjYxNC4uODRlZGE0 MGViMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTY1OCw2ICs2NTgsOSBA QCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBw YXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0 dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRy aWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwog CitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNt ZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsK IHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRpb25D bWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIApAQCAtNDY3 OSw2ICs0NjgyLDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJ CQljbWRfbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVz aXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJ CQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKQEAg LTUwODAsNiArNTA4NywxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHBy ZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNh c2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3Vi dHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVw IG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQljYXNl IEFUX01lcmdlUGFydGl0aW9uczoKIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0 eXBlLCByZWwsIEFUVF9UQUJMRSk7CiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAg bmVlZGVkICovCkBAIC01NDgxLDYgKzU0OTMsMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25G aW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShy ZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQlicmVhazsKKwkJ Y2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQo d3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1 cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQo cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJ CQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsKIAkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1 ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFz cywgY29udGV4dCk7CkBAIC02NDc3LDYgKzY0OTcsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFS VElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCXJldHVy biAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFUX1NwbGl0UGFy dGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJUSVRJT04iOwogCQljYXNlIEFUX01lcmdl UGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCWNhc2UgQVRf QWRkSWRlbnRpdHk6CkBAIC0yMDA1MSw2ICsyMDA3MywyNTYgQEAgR2V0QXR0cmlidXRlU3Rv cmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQogCXJldHVybiBj c3RvcmFnZTsKIH0KIAorLyoKKyAqIFN0cnVjdCB3aXRoIGNvbnRleHQgb2YgbmV3IHBhcnRp dGlvbiBmb3IgaW5zZXJ0aW5nIHJvd3MgZnJvbSBzcGxpdCBwYXJ0aXRpb24KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgU3BsaXRQYXJ0aXRpb25Db250ZXh0Cit7CisJRXhwclN0YXRlICAqcGFy dHF1YWxzdGF0ZTsJLyogZXhwcmVzc2lvbiBmb3IgY2hlY2tpbmcgc2xvdCBmb3IgcGFydGl0 aW9uCisJCQkJCQkJCSAqIChOVUxMIGZvciBERUZBVUxUIHBhcnRpdGlvbikgKi8KKwlCdWxr SW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0 aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsJLyogc2xvdCBmb3IgaW5zZXJ0 aW5nIHJvdyBpbnRvIHBhcnRpdGlvbiAqLworCVJlbGF0aW9uCXBhcnRSZWw7CQkvKiByZWxh dGlvbiBmb3IgcGFydGl0aW9uICovCit9IFNwbGl0UGFydGl0aW9uQ29udGV4dDsKKworCisv KgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3Ig cGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRl eHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7 CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9u Q29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlw Yy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0 U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkg KiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxr SW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0 aW9uLiAqLworCXBjLT5kc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0 aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpLAorCQkJCQkJCQkJCSAgIHRhYmxlX3Nsb3RfY2Fs bGJhY2tzKHBjLT5wYXJ0UmVsKSk7CisJRXhlY1N0b3JlQWxsTnVsbFR1cGxlKHBjLT5kc3Rz bG90KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0UGFydGl0aW9u Q29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9p ZAorZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAq cGMsIGludCB0aV9vcHRpb25zKQoreworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo cGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUocGMtPmJpc3RhdGUpOworCisJ dGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0UmVsLCB0aV9vcHRpb25zKTsKKwor CXBmcmVlKHBjKTsKK30KKworLyoKKyAqIG1vdmVTcGxpdFRhYmxlUm93czogc2NhbiBzcGxp dCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJsZQorICogKHJlbCkg YW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIE5ldyBwYXJ0aXRp b25zIGRlc2NyaXB0aW9uOgorICogcGFydGxpc3Q6IGxpc3Qgb2YgcG9pbnRlcnMgdG8gU2lu Z2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVzLgorICogbmV3UGFydFJlbHM6IGxpc3Qgb2Yg UmVsYXRpb25zLgorICogZGVmYXVsdFBhcnRPaWQ6IG9pZCBvZiBERUZBVUxUIHBhcnRpdGlv biwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3RhdGljIHZvaWQKK21vdmVTcGxpdFRhYmxlUm93 cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlz dCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFydE9pZCkKK3sKKwkvKiBUaGUgRlNNIGlz IGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9u cyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRl CSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsK KwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJ VGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90CXNuYXBzaG90OworCU1lbW9yeUNvbnRl eHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250ZXh0cyA9IE5JTDsKKwlUdXBsZUNvbnZl cnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKmRlZmF1bHRQ YXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwlib29sCQlpc09sZERlZmF1bHRQYXJ0ID0g ZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwllc3Rh dGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Jib3RoKGxpc3RwdHIsIHBhcnRs aXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVj ICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJ cGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFJlbGF0aW9uKSBsZmlyc3QobGlz dHB0cjIpKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJeworCQkJLyog V2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQgREVGQVVMVCBw YXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVsc2UKKwkJ eworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4cHJlc3Np b24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAqLworCQkJ cGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNwcy0+Ym91 bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxfY29uc3RfZXhw cmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJhaW50KTsK KwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KKwkJ CXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENv bnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxpdFJlbCdz LgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0bm9z KHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVsKTsKKwor CQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBs aW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMtPnBhcnRx dWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4 dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRz LCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9uIGNvbnRleHQgZm9yIERF RkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVlcworCSAqIGludG8gdGhpcyBw YXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiBuZXcgcGFydGl0 aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9pZElzVmFsaWQoZGVmYXVs dFBhcnRPaWQpKQorCXsKKwkJLyogSW5kaWNhdGUgdGhhdCB3ZSBhbGxvY2F0ZSBjb250ZXh0 IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNPbGREZWZhdWx0UGFydCA9IHRy dWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHRh YmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spKTsKKwl9CisK KwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCS8qIENy ZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90ID0gTWFrZVNpbmdsZVR1 cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAg dGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKworCS8qCisJICogTWFwIGNvbXB1 dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBw YXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBvdGhlciBuZXcg cGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8KKwlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29udGV4dHMp KTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVz Y3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJl bCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRj aCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1 cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9s ZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQo ZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3VuZCA9IGZhbHNl OworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkvKiBFeHRyYWN0IGRhdGEg ZnJvbSBvbGQgdHVwbGUuICovCisJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisKKwkJ ZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc3Jjc2xvdDsKKworCQkvKiBTZWFyY2ggcGFy dGl0aW9uIGZvciBjdXJyZW50IHNsb3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRy LCBwYXJ0Q29udGV4dHMpCisJCXsKKwkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAq KSBsZmlyc3QobGlzdHB0cik7CisKKwkJCWlmIChwYy0+cGFydHF1YWxzdGF0ZSAvKiBza2lw IERFRkFVTFQgcGFydGl0aW9uICovICYmCisJCQkJRXhlY0NoZWNrKHBjLT5wYXJ0cXVhbHN0 YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOwor CQkJfQorCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJCX0KKwkJaWYgKCFmb3Vu ZCkKKwkJeworCQkJLyogVXNlIERFRkFVTFQgcGFydGl0aW9uIGlmIGl0IGV4aXN0cy4gKi8K KwkJCWlmIChkZWZhdWx0UGFydEN0eCkKKwkJCQlwYyA9IGRlZmF1bHRQYXJ0Q3R4OworCQkJ ZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0NIRUNL X1ZJT0xBVElPTiksCisJCQkJCQkgZXJybXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZv ciBzcGxpdCBwYXJ0aXRpb24gcm93IiksCisJCQkJCQkgZXJydGFibGUoc3BsaXRSZWwpKSk7 CisJCX0KKworCQlpZiAodHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAg dG8gY29weSBhdHRyaWJ1dGVzLiAqLworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9t YXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJ CWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0 c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50 dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlk KTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNu dWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJ CQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCX0KKworCQkvKiBXcml0 ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCXRhYmxlX3R1cGxl X2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkgICB0aV9v cHRpb25zLCBwYy0+YmlzdGF0ZSk7CisKKwkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7 CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkQ3h0KTsKKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3RlclNu YXBzaG90KHNuYXBzaG90KTsKKworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVyc2lv bl9tYXAodHVwbGVfbWFwKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jj c2xvdCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJZm9yZWFjaChsaXN0 cHRyLCBwYXJ0Q29udGV4dHMpCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgoU3Bs aXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0cHRyKSwgdGlfb3B0aW9ucyk7CisK KwkvKiBOZWVkIHRvIGNsb3NlIHRhYmxlIGFuZCBmcmVlIGJ1ZmZlcnMgZm9yIERFRkFVTFQg cGFydGl0aW9uLiAqLworCWlmIChpc09sZERlZmF1bHRQYXJ0KQorCXsKKwkJUmVsYXRpb24J ZGVmYXVsdFBhcnRSZWwgPSBkZWZhdWx0UGFydEN0eC0+cGFydFJlbDsKKworCQlkZWxldGVT cGxpdFBhcnRpdGlvbkNvbnRleHQoZGVmYXVsdFBhcnRDdHgsIHRpX29wdGlvbnMpOworCQkv KiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UoZGVmYXVs dFBhcnRSZWwsIE5vTG9jayk7CisJfQorfQorCiAvKgogICogY3JlYXRlUGFydGl0aW9uVGFi bGU6IGNyZWF0ZSB0YWJsZSBmb3IgYSBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFtZQog ICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbCkKQEAgLTIwMTU1LDYgKzIw NDI3LDEzMiBAQCBjcmVhdGVQYXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUs IFJlbGF0aW9uIG1vZGVsUmVsLAogCXJldHVybiBuZXdSZWw7CiB9CiAKKy8qCisgKiBBTFRF UiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5UTyA8 cGFydGl0aW9uLWxpc3Q+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRpdGlv bihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK KwkJCQkJIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpCit7CisJUmVsYXRpb24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7CisJ Y2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJTGlz dENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc1NhbWVOYW1l ID0gZmFsc2U7CisJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisJTGlzdAkgICAq bmV3UGFydFJlbHMgPSBOSUw7CisJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJT2lkCQkJZGVm YXVsdFBhcnRPaWQ7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9t X3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8q CisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9u OiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2ZW50aW5nIERNTC1x dWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVu cnYoY21kLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXNwbGl0UmVsT2lkID0g UmVsYXRpb25HZXRSZWxpZChzcGxpdFJlbCk7CisKKwkvKiBDaGVjayBkZXNjcmlwdGlvbnMg b2YgbmV3IHBhcnRpdGlvbnMuICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0 KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdfcmVsaWQ7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMg KnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlz dHJsY3B5KHJlbG5hbWUsIHNwcy0+bmFtZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJ CS8qCisJCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBhcmUgc3VwcG9z ZWQgdG8gY3JlYXRlIHRoZQorCQkgKiBwYXJ0aXRpb24sIGNoZWNrIHdlIGhhdmUgcGVybWlz c2lvbiB0byBjcmVhdGUgdGhlcmUsIGxvY2sgaXQKKwkJICogYWdhaW5zdCBjb25jdXJyZW50 IGRyb3AsIGFuZCBtYXJrIHN0bXQtPnJlbGF0aW9uIGFzCisJCSAqIFJFTFBFUlNJU1RFTkNF X1RFTVAgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGlzIHNlbGVjdGVkLgorCQkgKi8KKwkJ c3BzLT5uYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZTsKKwkJbmFtZXNwYWNlSWQgPQorCQkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFt ZXNwYWNlKHNwcy0+bmFtZSwgTm9Mb2NrLCBOVUxMKTsKKworCQkvKgorCQkgKiBUaGlzIHdv dWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5IGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4aXN0 cy4gQnV0CisJCSAqIGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVtaXQgYSBuaWNlciBl cnJvciBtZXNzYWdlLgorCQkgKi8KKwkJZXhpc3RpbmdfcmVsaWQgPSBnZXRfcmVsbmFtZV9y ZWxpZChyZWxuYW1lLCBuYW1lc3BhY2VJZCk7CisJCWlmIChleGlzdGluZ19yZWxpZCA9PSBz cGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNh biBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1l TmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9IEludmFsaWRPaWQp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9U QUJMRSksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIs IHJlbG5hbWUpKSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlS ZW1vdmVJbmhlcml0YW5jZShzcGxpdFJlbCwgcmVsLCBmYWxzZSk7CisJLyogRG8gdGhlIGZp bmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJl bCwgc3BsaXRSZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIElmIG5l dyBwYXJ0aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIHRoZW4g d2Ugc2hvdWxkCisJICogcmVuYW1lIHNwbGl0IHBhcnRpdGlvbiBmb3IgcmV1c2luZyBuYW1l LgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBidW1w IHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxl CisJCSAqIHZpc2libGUgZm9yIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KKwkJc3ByaW50Zih0bXBS ZWxOYW1lLCAic3BsaXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVBy b2NQaWQpOworCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBSZWxO YW1lLCBmYWxzZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29t bWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2 aXNpYmxlIGFmdGVyIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1l bnQoKTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFy dGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5w YXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0 aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbDsK KworCQluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUoc3BzLT5uYW1lLCByZWws IGNvbnRleHQpOworCQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1Bh cnRSZWwpOworCX0KKworCS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBu ZXcgcGFydGl0aW9ucy4gKi8KKwltb3ZlU3BsaXRUYWJsZVJvd3MocmVsLCBzcGxpdFJlbCwg Y21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVw IHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9M b2NrKTsKKworCS8qIEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJs ZS4gKi8KKwlmb3Jib3RoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQ YXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0 aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9 IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKTsKKworCQkvKgorCQkgKiB3cXVldWUgPSBO VUxMOiB2ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90CisJ CSAqIG5lZWRlZC4KKwkJICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwg bmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29t bWl0LiAqLworCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8q IERyb3Agc3BsaXQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5v YmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlzIG5vdCBuZWVk ZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOwor fQorCiAvKgogICogbW92ZU1lcmdlZFRhYmxlc1Jvd3M6IHNjYW4gcGFydGl0aW9ucyB0byBi ZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkKICAqIG9mIHRoZSBwYXJ0aXRpb25l ZCB0YWJsZSAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gdGhlIG5ldyBwYXJ0aXRpb24KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CmluZGV4IGQ4NWM3NGNiN2MuLmMzZjI1NTgyYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtMjY5LDYgKzI2OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUGFy dGl0aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFydHNwZWM7CiAJUGFy dGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBhcnRpdGlvblNwZWMg KnNpbmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwogCVB1YmxpY2F0aW9u T2JqU3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBTZWxlY3RMaW1pdCAq c2VsZWN0bGltaXQ7CkBAIC02NDUsNiArNjQ2LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8bGlzdD4JCXBhcnRf cGFyYW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCisldHlw ZSA8c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0eXBlIDxsaXN0PgkJ cGFydGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8 ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC03NzUsNyArNzc4LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hF TUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0Ug U0VRVUVOQ0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBT RVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElO VCBTTkFQU0hPVCBTT01FIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0lN SUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNQTElUIFNPVVJDRSBT UUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1Mg U1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AK IAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RF TV9QIFNZU1RFTV9VU0VSCiAKQEAgLTIzMDgsNiArMjMxMSwyMyBAQCBhbHRlcl90YWJsZV9j bWRzOgogCQkJfCBhbHRlcl90YWJsZV9jbWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9 IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmds ZVBhcnRpdGlvblNwZWMJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHBh cnRpdGlvbnNfbGlzdCAnLCcgU2luZ2xlUGFydGl0aW9uU3BlYwl7ICQkID0gbGFwcGVuZCgk MSwgJDMpOyB9CisJCTsKKworU2luZ2xlUGFydGl0aW9uU3BlYzoKKwkJCVBBUlRJVElPTiBx dWFsaWZpZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7CisJCQkJCVNpbmdsZVBh cnRpdGlvblNwZWMgKm4gPSBtYWtlTm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjKTsKKworCQkJ CQluLT5uYW1lID0gJDI7CisJCQkJCW4tPmJvdW5kID0gJDM7CisKKwkJCQkJJCQgPSBuOwor CQkJCX0KKwkJOworCiBwYXJ0aXRpb25fY21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+ IEFUVEFDSCBQQVJUSVRJT04gPHRhYmxlX25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFUVEFD SCBQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzUy LDYgKzIzNzIsMjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikg Y21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJ CXwgU1BMSVQgUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNf bGlzdCAnKScKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRl clRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRp b25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJ Y21kLT5uYW1lID0gJDM7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBh cnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5k ZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkv KiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRp b25fbmFtZT4gKi8KIAkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVkX25hbWVf bGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQogCQkJCXsKQEAgLTE3Nzc3LDYgKzE3ODEx LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTS0lQCiAJCQl8IFNOQVBTSE9UCiAJ CQl8IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwg U1RBTkRBTE9ORV9QCkBAIC0xODQxMyw2ICsxODQ0OCw3IEBAIGJhcmVfbGFiZWxfa2V5d29y ZDoKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09NRQogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQK IAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggNjNlYTJlYzVlYS4uZDVjMmIyZmYwYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMzYsNyArMTM2LDcgQEAgc3Rh dGljIHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQsCiAJCQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJh bnNmb3JtQ29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNv bHVtbik7CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRf c2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zv cm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpj bWQpOworc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRy YW5zZm9ybVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq Ymxpc3QsCiAJCQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZh bGlkYXRlSW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7 CkBAIC0zMjcwLDYgKzMyNzAsNDUgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBP aWQgcGFydFJlbE9pZCkKIAlyZWxhdGlvbl9jbG9zZShwYXJ0UmVsLCBBY2Nlc3NTaGFyZUxv Y2spOwogfQogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlB bmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAq CisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0 cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMg b2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBh cnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQ YXJ0T2lkOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisKKwlpZiAocGFyZW50LT5yZF9yZWwt PnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisKKwkvKiBUcmFuc2Zvcm0gcGFydGl0 aW9uIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxpc3Q6ICovCisJZm9yZWFj aChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNw ZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwor CQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZChjeHQs IHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBh cnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9IGN4dC0+cGFydGJvdW5kOworCX0K KworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQocGFydGNtZC0+bmFtZSwgTm9M b2NrLCBmYWxzZSk7CisKKwljaGVja1BhcnRpdGlvbihwYXJlbnQsIHNwbGl0UGFydE9pZCk7 CisKKwkvKiBUaGVuIHdlIHNob3VsZCBjaGVjayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3Jt ZWQgYm91bmRzLiAqLworCWNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3Bs aXRQYXJ0T2lkLCBwYXJ0Y21kLT5uYW1lLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgY3h0LT5wc3Rh dGUpOworfQorCisKIC8qCiAgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQogICoJ CUFuYWx5emUgdGhlIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNvbW1hbmQK QEAgLTM2MTUsNyArMzY1NCw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxp ZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBh cnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21k KCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsKIAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZh bHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBj eHQucGFydGJvdW5kOwogCQkJCX0KQEAgLTM2MjMsNiArMzY2Miw3IEBAIHRyYW5zZm9ybUFs dGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3 Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBB VF9TcGxpdFBhcnRpdGlvbjoKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXsK IAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRl ZjsKQEAgLTM2MzEsNyArMzY3MSwxMSBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQg cmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJ CQkJCQkJIGVycm1zZygibGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBh dCBsZWFzdCB0d28gaXRlbXMiKSkpOwotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JN ZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKworCQkJCQlpZiAoY21kLT5zdWJ0eXBlID09IEFUX1Nw bGl0UGFydGl0aW9uKQorCQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoJmN4 dCwgcGFydGNtZCk7CisJCQkJCWVsc2UKKwkJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZv ck1lcmdlKCZjeHQsIHBhcnRjbWQpOwogCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRz LCBjbWQpOwogCQkJCQlicmVhazsKIAkJCQl9CkBAIC00MDI2LDEzICs0MDcwLDEzIEBAIHNl dFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3Nj aGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kCi0gKgkJQW5hbHl6 ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZAorICoJCUFuYWx5emUgdGhl IEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKICAqCi0gKiBJbiBjYXNl IG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNl dCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGNtZC0+Ym91bmQuCisgKiBJbiBj YXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJv dW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGJvdW5kLgogICov CiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJUmVs YXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAgLTQwNDEsOSArNDA4NSw5IEBAIHRy YW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25D bWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJh bnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkgIT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5i b3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJY3h0LT5wYXJ0Ym91 bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQtPnBzdGF0ZSwgcGFyZW50UmVsLAot CQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJCQkJCQkJCQkJCSBib3VuZCk7CiAJ CQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYOgogCkBAIC00MDUx LDcgKzQwOTUsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBBIHBhcnRpdGlvbmVkIGluZGV4IGNh bm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4gIEFMVEVSCiAJCQkgKiBJTkRFWCBw cmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1dCBub3QgQUxURVIgVEFCTEUuCiAJ CQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVM TCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBw YXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwppbmRleCA2Y2IzMmQ1N2VmLi40ZWRhNTk3NjdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmMKQEAgLTUwNDEsMTAgKzUwNDEsNjkgQEAgY2hlY2tfdHdvX3Bh cnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKIAl9CiB9CiAKKy8qCisg KiBjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QKKyAqCisgKiAoZnVuY3Rpb24g Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVu Y3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KCkuCisgKiBDaGVja3MgdGhh dCB0aGUgdmFsdWVzIG9mIHRoZSBuZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAq CisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0czoJYXJyYXkgb2YgU2lu Z2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3RzIHdpdGggaW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRp b25zCisgKiBucGFydHM6CXNpemUgb2YgYXJyYXkgInBhcnRzIgorICovCitzdGF0aWMgdm9p ZAorY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwK KwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50 IG5wYXJ0cywKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleSBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldFBhcnRpdGlv bktleShwYXJlbnQpOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlpbnQJCQlp LAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMSwKKwkJCSAgICpzcHMyOwor CUxpc3QJICAgKm92ZXJsYXA7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfTElTVCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJ eworCQlzcHMxID0gcGFydHNbaV07CisKKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7 IGorKykKKwkJeworCQkJc3BzMiA9IHBhcnRzW2pdOworCisJCQkvKgorCQkJICogQ2FsY3Vs YXRlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVlcyBvZiB0d28gcGFydGl0aW9ucy4KKwkJ CSAqLworCQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJzZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0 ZGF0dW1zLAorCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChs aXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChD b25zdCAqKSBsZmlyc3QobGlzdF9oZWFkKG92ZXJsYXApKTsKKworCQkJCW92ZXJsYXBfbG9j YXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1z ZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3 IHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMy LT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBv dmVybGFwX2xvY2F0aW9uKSkpOworCQkJfQorCQl9CisJfQorfQorCiAvKgogICogZ2V0X3Bh cnRpdGlvbl9ib3VuZF9zcGVjCiAgKgogICogUmV0dXJucyBkZXNjcmlwdGlvbiBvZiBwYXJ0 aXRpb24gd2l0aCBPaWQgInBhcnRPaWQiIGFuZCBuYW1lICJuYW1lIi4KKyAqCisgKiBwYXJ0 T2lkOglwYXJ0aXRpb24gT2lkCisgKiBuYW1lOglwYXJ0aXRpb24gbmFtZQogICovCiBzdGF0 aWMgUGFydGl0aW9uQm91bmRTcGVjICoKIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhPaWQg cGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCkBAIC01MDc3LDYgKzUxMzYsNjM2IEBAIGdldF9w YXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCiAJcmV0 dXJuIGJvdW5kc3BlYzsKIH0KIAorLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMi IGFyZSBpbnNpZGUgYm91bmRzIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24gKHdpdGggT2lkIHNw bGl0UGFydE9pZCkuIElmIGZpcnN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMK KyAqIHRoZSBmaXJzdCBvZiBuZXcgcGFydGl0aW9ucykgdGhlbiBsb3dlciBib3VuZCBvZiAi c3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvcgorICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGlu IGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQKKyAqIHBh cnRpdGlvbi4gSWYgbGFzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzIHRoZSBs YXN0IG9mIG5ldworICogcGFydGl0aW9ucykgdGhlbiB1cHBlciBib3VuZCBvZiAic3BlYyIg c2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4gb3IKKyAqIGVxdWFsIGluIGNhc2UgZGVm YXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoK KyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9m IHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9m IHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBP aWQKKyAqIHNwbGl0UGFydE5hbWU6CXNwbGl0IHBhcnRpdGlvbiBuYW1lCisgKiBmaXJzdDoJ CQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMgZmlyc3Qgb2YgbmV3IHBh cnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMi IGlzIGxhc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBj YXNlIHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBERUZBVUxUIHBhcnRpdGlvbgorICogcHN0YXRl OgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBw b3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jf c3BsaXRfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICAgY2hhciAqcmVsbmFt ZSwKKwkJCQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAg IE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBSYW5nZVZhciAqc3BsaXRQYXJ0TmFt ZSwKKwkJCQkJCQkJCSAgIGJvb2wgZmlyc3QsCisJCQkJCQkJCQkgICBib29sIGxhc3QsCisJ CQkJCQkJCQkgICBib29sIGRlZmF1bHRQYXJ0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAq cHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmxvd2VyLAorCQkJICAgKnVwcGVy OworCWludAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRSk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRSk7CisKKwlsb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91 bmQoa2V5LCAtMSwgc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCXVwcGVyID0gbWFrZV9v bmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT51cHBlcmRhdHVtcywgZmFsc2Up OworCisJLyoKKwkgKiBGaXJzdCBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIHJhbmdlIHdvdWxk IGJlIGVtcHR5IHdpdGggc3BlY2lmaWVkIGxvd2VyCisJICogYW5kIHVwcGVyIGJvdW5kcy4g IHBhcnRpdGlvbl9yYm91bmRfY21wIGNhbm5vdCByZXR1cm4gemVybyBoZXJlLCBzaW5jZQor CSAqIHRoZSBsb3dlci1ib3VuZCBmbGFncyBhcmUgZGlmZmVyZW50LgorCSAqLworCWNtcHZh bCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtl eS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJ CQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIHRydWUsIHVwcGVy KTsKKwlBc3NlcnQoY21wdmFsICE9IDApOworCWlmIChjbXB2YWwgPiAwKQorCXsKKwkJLyog UG9pbnQgdG8gcHJvYmxlbWF0aWMga2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdC4gKi8K KwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRh dHVtcywgY21wdmFsIC0gMSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImVtcHR5 IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQly ZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJTcGVjaWZpZWQgbG93ZXIgYm91bmQgJXMgaXMg Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHVwcGVyIGJvdW5kICVzLiIsCisJCQkJCQkgICBn ZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkg ICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT51cHBlcmRhdHVtcykpLAorCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKSk7CisJfQor CisJLyogTmVlZCB0byBjaGVjayBmaXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNl dCBvZiBuZXcgcGFydGl0aW9ucykgKi8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBh cnRpdGlvbkJvdW5kU3BlYyAqc3BsaXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3Bl YyhzcGxpdFBhcnRPaWQsIHNwbGl0UGFydE5hbWUpOworCQlQYXJ0aXRpb25SYW5nZURhdHVt ICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQg KnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9y Ym91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJCQlj bXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJ CQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24s CisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkg IHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJz cGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICog aW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNt cHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRh dHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCSBl cnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRv IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCQlyZWxuYW1lKSwK KwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkp OworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsIDwgMCkKKwkJ CQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGFicyhjbXB2 YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkgZXJybXNnKCJsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCQkJcmVsbmFtZSksCisJCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJCQl9CisJCQl9CisJ CX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxpdF91cHBlcjsK KworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEs IHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkJCWNtcHZhbCA9IHBhcnRp dGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0 c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkg IHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAgZmFsc2UsIHNwbGl0 X3VwcGVyKTsKKworCQkJLyoKKwkJCSAqIFVwcGVyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQg YmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvciBlcXVhbCBpbgorCQkJICogY2FzZSBkZWZhdWx0 UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8K KwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJ CXsKKwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZh bCkgLSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCSBlcnJtc2coInVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCQlyZWxuYW1lKSwKKwkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCQkJCX0KKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJCQl7CisJCQkJCWRhdHVt ID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCQkgZXJybXNnKCJ1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gXCIlc1wiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24iLAorCQkJCQkJCQkJcmVsbmFtZSksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisK Ky8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0CisgKgorICog KGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBDaGVja3MgdGhh dCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdCBw YXJ0aXRpb24KKyAqICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorICoKKyAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBuZXcgcGFy dGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBzdGF0 ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3Ig cG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X2xpc3QoUmVsYXRpb24gcGFyZW50LCBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJ ICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgIE9pZCBzcGxpdFBhcnRP aWQsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNj IHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOwor CVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOwor CWludAkJCXdpdGggPSAtMTsKKwlib29sCQlvdmVybGFwID0gZmFsc2U7CisJaW50CQkJb3Zl cmxhcF9sb2NhdGlvbiA9IC0xOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlBc3NlcnQoa2V5 LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMt PnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91bmRp bmZvICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJLyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVj IiBpbiBleGlzdGluZyBwYXJ0aXRpb25zLiBBbGwKKwkgKiBvZiB0aGVtIHNob3VsZCBiZSBp biBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisJICovCisJZm9y ZWFjaChjZWxsLCBzcGVjLT5saXN0ZGF0dW1zKQorCXsKKwkJQ29uc3QJICAgKnZhbCA9IGxm aXJzdF9ub2RlKENvbnN0LCBjZWxsKTsKKworCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5s b2NhdGlvbjsKKwkJaWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlvZmZz ZXQ7CisJCQlib29sCQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3RfYnNl YXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0 aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1 ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0gMCAmJiBlcXVhbCkK KwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldF07CisJCQkJaWYg KHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQl7CisJCQkJCW92 ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5u b3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhh dmUiLAorCQkJCQkJCQlyZWxuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9i b3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGlu Zm8tPm51bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQ YXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQor CQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRp b24gXCIlc1wiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRp b24gZG9lcyBub3QgaGF2ZSIsCisJCQkJCQkJcmVsbmFtZSksCisJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCX0KKworCWlmIChvdmVy bGFwKQorCXsKKwkJQXNzZXJ0KHdpdGggPj0gMCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJy bXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAo bm90IHNwbGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCXJlbG5hbWUsIGdldF9yZWxf bmFtZShwYXJ0ZGVzYy0+b2lkc1t3aXRoXSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGZpbmRfdmFs dWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmcpCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGluIGNhc2Ug YW55IG9mIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisgKgorICog cGFydHN1cGZ1bmM6CQlpbmZvcm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0aW9uIGFz c29jaWF0ZWQgd2l0aCB0aGUgcGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlvbjoJcGFy dGl0aW9uaW5nIGNvbGxhdGlvbgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJheSB3aXRo IG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJlciBvZiBu ZXcgcGFydGl0aW9ucworICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tp bmcgZm9yCisgKiBpc251bGw6CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9v a2luZyBmb3IgaXMgTlVMTAorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdf cGFydGl0aW9uc19saXN0KEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBPaWQg KnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRz LAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJ CQkJCSAgYm9vbCBpc251bGwpCit7CisJTGlzdENlbGwgICAqdmFscHRyOworCWludAkJCWk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoKHZhbHB0ciwgc3BzLT5ib3Vu ZC0+bGlzdGRhdHVtcykKKwkJeworCQkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9ub2RlKENv bnN0LCB2YWxwdHIpOworCisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJ CQkJcmV0dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxs KQorCQkJeworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0 c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJ CQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJ CXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoK KyAqIGNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVu Y3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFs bCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBjb250YWlu cyBpbiBuZXcKKyAqIHBhcnRpdGlvbnMuCisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0 YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50 ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0 czoJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIgdG8gUGFy c2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0 aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxhdGlv biBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAorCQkJCQkJCQkJICBTaW5nbGVQ YXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJ CQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRp b25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0g UmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJv dW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCWk7CisJ Ym9vbAkJZm91bmQgPSB0cnVlOworCWJvb2wJCXNlYXJjaE51bGwgPSBmYWxzZTsKKwlEYXR1 bQkJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5LT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNwZWNpYWwg cHJvY2Vzc2luZyBmb3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5VTEwgdmFsdWUgaWYgdGhlIHNw bGl0CisJICogcGFydGl0aW9uIChwYXJ0T2lkKSBjb250YWlucyBpdC4KKwkgKi8KKwlpZiAo cGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZvKSAmJgorCQlwYXJ0ZGVz Yy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBhcnRPaWQpCisJeworCQlpZiAo IWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1sw XSwKKwkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBk YXR1bSwgdHJ1ZSkpCisJCXsKKwkJCWZvdW5kID0gZmFsc2U7CisJCQlzZWFyY2hOdWxsID0g dHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Ygc3BsaXQg cGFydGl0aW9uIHdpdGggcGFydE9pZCBpbiBQYXJ0aXRpb25EZXNjIG9mCisJICogcGFydGl0 aW9uZWQgdGFibGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVt czsgaSsrKQorCXsKKwkJaWYgKHBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5kZXhlc1tp XV0gPT0gcGFydE9pZCkKKwkJeworCQkJLyogV2UgZm91bmQgdmFsdWUgdGhhdCBzcGxpdCBw YXJ0aXRpb24gY29udGFpbnMuICovCisJCQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0dW1zW2ld WzBdOworCQkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+ cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBh cnRzLCBucGFydHMsIGRhdHVtLCBmYWxzZSkpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsK KwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJeworCQlDb25z dAkgICAqbm90Rm91bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hOdWxsKQorCisJCQkvKgorCQkJ ICogTWFrZSBDb25zdCBmb3IgZ2V0dGluZyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90 IGZvdW5kCisJCQkgKiB2YWx1ZS4KKwkJCSAqLworCQkJbm90Rm91bmRWYWwgPSBtYWtlQ29u c3Qoa2V5LT5wYXJ0dHlwaWRbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJ CQkJCQkJCQlrZXktPnBhcnR0eXBjb2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVu WzBdLAorCQkJCQkJCQkJZGF0dW0sCisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxsICovCisJ CQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBl cnJtc2coIm5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBw YXJ0aXRpb24gZG9lcyIsCisJCQkJCQlzZWFyY2hOdWxsID8gIk5VTEwiIDogZ2V0X2xpc3Rf cGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKSk7CisJfQorfQorCisvKgorICogY2hl Y2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3MgbmV3IHBhcnRpdGlvbnMg Zm9yIFNQTElUIFBBUlRJVElPTlMgY29tbWFuZDoKKyAqIDEuIERFRkFVTFQgcGFydGl0aW9u IHNob3VsZCBiZSBvbmUuCisgKiAyLiBOZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZm ZXJlbnQgbmFtZXMKKyAqICAgICh3aXRoIGV4aXN0aW5nIHBhcnRpdGlvbnMgdG9vKS4KKyAq IDMuIEJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBu ZXcgYW5kIGV4aXN0aW5nCisgKiAgICBwYXJ0aXRpb25zLgorICogNC4gSW4gY2FzZSBzcGxp dCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24sIG9uZSBvZiBuZXcgcGFydGl0aW9u cworICogICAgc2hvdWxkIGJlIERFRkFVTFQuCisgKiA1LiBJbiBjYXNlIG5ldyBwYXJ0aXRp b25zIG9yIGV4aXN0aW5nIHBhcnRpdGlvbnMgY29udGFpbnMgREVGQVVMVAorICogICAgcGFy dGl0aW9uLCBuZXcgcGFydGl0aW9ucyBjYW4gaGF2ZSBhbnkgYm91bmRzIGluc2lkZSBzcGxp dAorICogICAgcGFydGl0aW9uIGJvdW5kIChjYW4gYmUgc3BhY2VzIGJldHdlZW4gcGFydGl0 aW9ucyBib3VuZHMpLgorICogNi4gSW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5v dCBoYXZlIERFRkFVTFQgcGFydGl0aW9uLCBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24gY2Fu IGJlIGRlZmluZWQgYXMgb25lIG9mIG5ldyBwYXJ0aXRpb24uCisgKiA3LiBJbiBjYXNlIG5l dyBwYXJ0aXRpb25zIG5vdCBjb250YWlucyBERUZBVUxUIHBhcnRpdGlvbiBhbmQKKyAqICAg IHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24gdGhl IGZvbGxvd2luZworICogICAgc2hvdWxkIGJlIHRydWU6IHN1bSBib3VuZHMgb2YgbmV3IHBh cnRpdGlvbnMgc2hvdWxkIGJlIGVxdWFsCisgKiAgICB0byBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBzcGxpdFBh cnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHNwbGl0UGFydE5hbWU6CXNwbGl0IHBh cnRpdGlvbiBuYW1lCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBz dGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJy b3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVs YXRpb24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIFJh bmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJ CQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleTsKKwljaGFy CQlzdHJhdGVneTsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlib29sCQlpc1NwbGl0UGFy dERlZmF1bHQ7CisJYm9vbAkJZXhpc3RzRGVmYXVsdFBhcnQ7CisJTGlzdENlbGwgICAqbGlz dHB0cjsKKwlpbnQJCQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOwor CVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzUHJldiA9IE5VTEw7CisJaW50CQkJbnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9u X3N0cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJU SVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6 CisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBw YXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLwor CQkJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJCQlwYWxsb2Mw KGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICop KTsKKwkJCQlpID0gMDsKKwkJCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRsaXN0KQorCQkJCXsK KwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0KKwkJCQkJCShTaW5nbGVQYXJ0aXRp b25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJCQlpZiAoc3BzLT5ib3VuZC0+aXNf ZGVmYXVsdCkKKwkJCQkJeworCQkJCQkJaWYgKGRlZmF1bHRfaW5kZXggPj0gMCkKKwkJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJCSBlcnJtc2coIkRFRkFVTFQgcGFydGl0aW9u IHNob3VsZCBiZSBvbmUiKSksCisJCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBzcHMtPm5hbWUtPmxvY2F0aW9uKSk7CisJCQkJCQlkZWZhdWx0X2luZGV4ID0gaTsKKwkJ CQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCW5ld19wYXJ0c1tucGFydHMrK10gPSBz cHM7CisJCQkJCX0KKwkJCQkJaSsrOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCisJCWNh c2UgUEFSVElUSU9OX1NUUkFURUdZX0hBU0g6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2co InBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIp KSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kp OworCQkJYnJlYWs7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9SQU5HRSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAqIEZv ciBzaW1wbGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIG5lZWQgdG8g c29ydCBhbGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlbSBi b3VuZHMgKHdlIGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSkuCisJCSAqLworCQls b3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBh cnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBh cnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkr KykKKwkJeworCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3Vu ZChrZXksIGksCisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0 dW1zLCB0cnVlKTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAq LworCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25S YW5nZUJvdW5kICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lk ICopIGtleSk7CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRpb25zLiAqLworCQl0 bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlv blNwZWMgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQluZXdfcGFy dHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5kZXhdOworCisJCXBm cmVlKHRtcF9uZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCX0KKworCWRl ZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRp b25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJLyogaXNTcGxpdFBhcnRE ZWZhdWx0IGZsYWc6IGlzIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAq LworCWlzU3BsaXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBhcnRP aWQpOworCisJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCAmJiBkZWZhdWx0X2luZGV4IDwgMCkK Kwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJvbmUgcGFydGl0aW9uIGluIHRoZSBs aXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFV TFQiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgKChTaW5nbGVQYXJ0aXRp b25TcGVjICopIGxpbml0aWFsKHBhcnRsaXN0KSktPm5hbWUtPmxvY2F0aW9uKSk7CisJfQor CWVsc2UgaWYgKCFpc1NwbGl0UGFydERlZmF1bHQgJiYgKGRlZmF1bHRfaW5kZXggPj0gMCkg JiYgT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkpCisJeworCQlTaW5nbGVQYXJ0aXRpb25T cGVjICpzcHNEZWYgPQorCQkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlzdF9udGgocGFy dGxpc3QsIGRlZmF1bHRfaW5kZXgpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJu ZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRp b24gYWxyZWFkeSBleGlzdHMiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg c3BzRGVmLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCS8qIEluZGljYXRvciB0aGF0IHBh cnRpdGlvbmVkIHRhYmxlIGhhcyAob3Igd2lsbCBoYXZlKSBERUZBVUxUIHBhcnRpdGlvbiAq LworCWV4aXN0c0RlZmF1bHRQYXJ0ID0gT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkgfHwg KGRlZmF1bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKysp CisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisKKwkJ aWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ugc3Bs aXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkg KiBmcmVlIHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJ ICovCisJCQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwg cGFyZW50LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0 aW9uIGlzIGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFu Z2UgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJl dmlvdXMgcGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJ CSAqIHBhcnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxp dCBwYXJ0aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0 aXRpb24uCisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UpCisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29sCQls YXN0ID0gKGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3Vu ZHNfZm9yX3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLCBzcHMtPmJv dW5kLAorCQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgc3BsaXRQYXJ0TmFtZSwKKwkJ CQkJCQkJCQkJCQkgICBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBleGlzdHNEZWZh dWx0UGFydCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJ CQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisK KwkJLyogUmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8K KwkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2 KQorCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJl di0+bmFtZSwgc3BzUHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMt PmJvdW5kLCBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3Bz OworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQg bmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJ CVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNbal07CisKKwkJCWlmIChl cXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCQkgZXJybXNnKCJu YW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSksCisJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5uYW1lLT5sb2NhdGlvbikp OworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3Zlcmxh cC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBhcmVudCwgbmV3 X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8qCisJCSAqIE5l ZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlu cyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQg cGFydGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghZXhpc3RzRGVmYXVsdFBhcnQpCisJ CQljaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQ YXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9 CisKKwlwZnJlZShuZXdfcGFydHMpOworfQorCiAvKgogICogY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggYjMxYmUzMTMyMS4uZjRhYzQ3M2NhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwpAQCAtMTMzNDgsMyArMTMzNDgsMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoK KyAqIGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2Vu dGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9s aXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQg Y29udGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1z ZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1 ZiA9IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJl dHVybiBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYzNlYTg3ZmNiOS4u MGQyNTk4MTI1MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisr KyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkK IAkJCQkJICAiT1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJ CQkgICJSRVBMSUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJE RVRBQ0ggUEFSVElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCi0JCQkJCSAg Ik1FUkdFIFBBUlRJVElPTlMgKCIsCisJCQkJCSAgIlNQTElUIFBBUlRJVElPTiIsICJNRVJH RSBQQVJUSVRJT05TICgiLAogCQkJCQkgICJPRiIsICJOT1QgT0YiKTsKIAkvKiBBTFRFUiBU QUJMRSB4eHggQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBN YXRjaEFueSwgIkFERCIpKQpAQCAtMjYxMCwxMCArMjYxMCwxMCBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQlDT01QTEVURV9X SVRIKCJGUk9NICgiLCAiSU4gKCIsICJXSVRIICgiKTsKIAogCS8qCi0JICogSWYgd2UgaGF2 ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0ggUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBv ZgorCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIfFNQTElUIFBBUlRJ VElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKIAkgKiBwYXJ0aXRpb25zIG9mIDxmb28+LgogCSAq LwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRB Q0giLCAiUEFSVElUSU9OIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUi LCBNYXRjaEFueSwgIkRFVEFDSHxTUExJVCIsICJQQVJUSVRJT04iKSkKIAl7CiAJCXNldF9j b21wbGV0aW9uX3JlZmVyZW5jZShwcmV2M193ZCk7CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOwpAQCAtMjYyMSw2ICsyNjIx LDEwIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg IkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNP TkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQ TElUIFBBUlRJVElPTiA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJU QUJMRSIsIE1hdGNoQW55LCAiU1BMSVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlD T01QTEVURV9XSVRIKCJJTlRPICggUEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8 bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiNmU3OTU3ZWJiLi44NWE2MmI1MzhlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNDEzLDYgKzI0MTMsNyBAQCB0eXBlZGVm IGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNI IFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElU SU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJ T04gRklOQUxJWkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJ T04gKi8KIAlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwog CUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0 eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKaW5kZXggNmIyNTZmY2VjZS4uYmIxOTFiMWY0NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApA QCAtNDE4LDYgKzQxOCw3IEBAIFBHX0tFWVdPUkQoInNtYWxsaW50IiwgU01BTExJTlQsIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzbmFwc2hvdCIsIFNO QVBTSE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJz b21lIiwgU09NRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InNvdXJjZSIsIFNPVVJDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdf S0VZV09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmgKaW5kZXggMDMyOWQ3YmQ4NC4uOWQyYTI2NzA1ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiArMTQzLDExIEBAIGV4 dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRz dXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJv dW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWlu ZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAg IFJhbmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJCQkJCQkJICAgTGlzdCAqcGFydGxpc3Qs CisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpOwogZXh0ZXJuIHZvaWQgY2FsY3Vs YXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJ CQkJCQkJTGlzdCAqcGFydE5hbWVzLAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDE2MWZiNWVmMDIuLjZkODYwODA2MjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3J1bGV1dGlscy5oCkBAIC00OSw0ICs0OSw2IEBAIGV4dGVybiBjaGFyICpnZXRf cmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpOwogCiBleHRlcm4g Y2hhciAqcGdfZ2V0X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwog CitleHRlcm4gY2hhciAqZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKTsK KwogI2VuZGlmCQkJCQkJCS8qIFJVTEVVVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkOWU4YjA5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCww ICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJ VElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1 XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOwor c3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUK KzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lO Oworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFy dF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0 MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMg czJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAg CistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQy NQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJy ciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0 cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElP TiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBB UlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJp OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRl eHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitz dGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK K3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFM VUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1 CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMg czJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04g dHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBG T1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0 MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMg czJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFy dF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAg CistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQy NQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJz IHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4 dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx YnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBh cnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04g dHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJU SVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVw IHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAK Ky0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1 CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlCmluZGV4IGMxNDk5MzM4ZDYuLjZkYTk4Y2ZmYWMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTA3LDYgKzEwNyw3IEBAIHRlc3Q6IHBhcnRp dGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6 IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKIHRlc3Q6IHBhcnRpdGlvbi1tZXJnZQordGVzdDog cGFydGl0aW9uLXNwbGl0CiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNv bmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA4NzIzOWE0YTEKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKQEAgLTAs MCArMSw1NCBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBvcGVyYXRpb24gbG9ja3MgRE1MIG9w ZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRB QkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRl eHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENS RUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElP TiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFC TEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgy NSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1 Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Np b24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxc3BsdAl7IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOyB9Citz dGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47 IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE OyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9 CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9 CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRv IGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJh dGlvbi4KKworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRp b24gczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJy ciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0 IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMg czJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFj IHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBh cnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVw YXJzZS5jCmluZGV4IGNjMzQxYWZkZjQuLjY3ZmYyYjYzNjcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpA QCAtMzAwLDYgKzMwMCw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJ T05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3Ry dHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJ CQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXN0cnR5cGUgPSAiU1BMSVQgUEFSVElU SU9OIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0 cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGM5YTUxMzBjYwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCww ICsxLDE1ODkgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxU RVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUg U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSwgcHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCist LSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxl c19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBu b3QgZXhpc3QKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c194eHggSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVz X3h4eCIgZG9lcyBub3QgZXhpc3QKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIw MjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19q YW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJS T1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMg SU4gKCcyMDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQgYm91bmQgc3Bl Y2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9O IHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJS T1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNf bWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1w dHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIi CitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAo JzAzLTAxLTIwMjInKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQg KCcwMi0wMS0yMDIyJykuCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNo b3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTEwLTAxJykpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBjb250YWluIGF0IGxlYXN0IHR3byBpdGVtcworLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBv ZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNz IHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUg YXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdp dGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMg YWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAg XgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmVi MjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3Qg YSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKK0VSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFy dGl0aW9uZWQgdGFibGUKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19hcHIyMDIyIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFy dGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVw cGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFy MjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBh cnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0 aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Zl YjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIENoZWNrIHRo ZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hf cGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEs IHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFu Z2UiCisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAg ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAg IHwgICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5 aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwg ICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAg ICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAg ICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAg ICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlv bnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcw Mi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIw MjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKy0tCistLSBB ZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jh bmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAg ICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAg ICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAz LTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAg ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAg ICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg ICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19tYXIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0y MDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAg ICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24sIHRo ZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBj aGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNh bGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5cGUgICAgICAgICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBpbnRl Z2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBw bGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0 ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRl bmRlZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAg ICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAg ICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8 ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQ YXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAg ICAgIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgn MDUtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxl c19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIw MjInKSwKKyAgICAgICAgICAgIHNhbGVzX290aGVycyBERUZBVUxUCisKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1 MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAg ICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAg ICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisg ICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0y MDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAg ICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAg ICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIy CisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg ICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2ly b3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygz IHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNf bWFyMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAg ICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAg ICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x OS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIw MjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAg ICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0 aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRo IERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQs IHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFM V0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8 IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNf ZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hB UigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu X2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAo TUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp IFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJ TlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1 LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNh bGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAg IDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAg fCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAg IDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAg IDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor KDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEu MTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEg fCBTYWxlcyBkZXBhcnRtZW50CisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxl c19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxl c19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxl c19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJP TSBzYWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAg MyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50Ciso MTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEu MTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEw IHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAy LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf eWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2Rl cGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93 cykKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3Qg ZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNU ICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitE Uk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZB VUxUIHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGlu ZGV4IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVz X3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdI YWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTEgcm93cykKKwor U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhl cnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwg ICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVy cyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUg SU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQor CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFi bGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAg ICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCiso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0 ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitT RVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitT RUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIw MjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2Fs ZXNfZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAg IHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwg ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNw YWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9p ZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0 ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19tYXIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hl bWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAg ICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIw MjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2Fw cjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19h cHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBG Uk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1l OworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBp bmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNh bGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVY IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0aW9uX3NwbGl0X3NjaGVt YS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzb21lIGNhc2Vz IGZvciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg SU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChsb3dlciBib3VuZCkKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxp Y3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMy MDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIg Ym91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorTElORSAzOiAg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8g KDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIg KHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAy KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAy MDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNv bmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMg d2l0aCBzYWxlc19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJv dW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw MjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3Vz IHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdGx5IHRoZSBzYW1l IGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19l cnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9u ICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3Rz IHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIy IgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBhbGwgcGFydGl0aW9ucyBpbiB0aGUg bGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZB VUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSk7CitFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFV TFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorTElORSAyOiAgIChQQVJU SVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAu Li4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2Fs ZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIy CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0t IG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIg YW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFM VUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JF SUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFM VUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVz cGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwK K3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitTRUxFQ1Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdj bGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxl c19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtF WSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25f aWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworLS0gV2Ugc2hvdWxkIHNlZSB0 aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0 aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAo KHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJ R04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3Bl cnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiBy b3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIy Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVD SyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZP UkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9Ciso MiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwg Y29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIy MDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBD SEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQor IEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShz YWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9 CisoMiByb3dzKQorCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19h bW91bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcy MDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIy MDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91 bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMtMTEt MjAyMikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21h cjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3Nh bGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0x LCAxMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2Fs ZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJz b25faWQpPSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0t IG9rCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0x MScpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxl c3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0 aXRpb25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5j ZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJM RSBzYWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2Fs ZXNwZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo NDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZSBWQUxVRVMgKDMwLCAnRm9yZCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgx LCAgMTAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxLCAg MTEwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxMCwgMTUw LCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxMCwgOTAsICAn MjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxOSwgMjAwLCAnMjAy Mi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgyMCwgNTAsICAnMjAyMi0w My0xMicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgyMCwgMTcwLCAnMjAyMi0wMy0w MicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgMzAsICAnMjAyMi0wMy0wNCcp OworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBz YWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAg fCBNYXkKKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIwIHwgU21p cm5vZmYKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBG Uk9NICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMTBfMjA7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDE5IHwgSXZhbm92CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMjBfMzA7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNwZW9wbGUzMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDMwIHwgRm9yZAorKDEgcm93KQorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxl c19zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwg NTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNw ZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSg0MCkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9QIFRBQkxFIHNh bGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dl cnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBU R19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9E WSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50 X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZP UiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9y b3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxl X2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworLS0gMiB0cmlnZ2VycyBz aG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3Bs ZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJU LCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxk IGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVT ICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00g KDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUg KHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIw LCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFG VEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUg KHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3Jk Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElO U0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2ly b3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8 IEl2YW5vdgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOwor IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxl c3Blb3BsZSBDQVNDQURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoKTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29s dW1uCistLSBJZiBzcGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwg Y29sdW1ucyBvZiBuZXcgcGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFU RUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlk ZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNv bl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBG T1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChz YWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5 IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxl c3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5 IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxl c3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBh cnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBB TkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0 ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUg fCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg U1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBz YWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElP TiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnRm9y ZCcpOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTFfMjsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUyXzM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8 IEl2YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlM180OworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBNYXkKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBzYWxlc3Blb3BsZTRfNTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICA0IHwgRm9yZAorKDEgcm93KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRp dHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFO RCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAg ICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAg ICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50 aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBh dHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQg ICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwg CisoMiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5l dyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoJ2R1bW15IHZhbHVl IDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWly bm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEs ICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMzAsICdGb3JkJyk7CitBTFRF UiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBW QUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAx XzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygx IHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzIwOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1h eQorKDIgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTIwXzMwOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93KQorCitz ZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMzBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVy c29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8 IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJp Y3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAg ICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy MjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0 LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcy MDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAg IDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAg ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgIDE0IHwgU21p dGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAg ICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMl8xMF8yMDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAg MjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK Ky0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZp YyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5U LAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5n JywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7Cist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3Zl cmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgor TElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRp b24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJz YXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0 aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3Bs aXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNw bGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogdHdvIHNwZWNp ZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRp dGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhh cy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3Bs aXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVz cGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVz X3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBE QVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxz aW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0Rl bGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBh cnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGRv ZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywg J05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVM TCBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMg ZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsIE5VTEwpKTsK K0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBz cGxpdCBwYXJ0aXRpb24gZG9lcworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRl c3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIw KSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3Bl cnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9u YW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2kn LCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScs ICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIy LTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWlybm9m ZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycs IDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2JywgICAgICdMaXNi b24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxl c19kYXRlKSBWQUxVRVMgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcy MDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXkn LCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNf YW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdWbGFkaXZvc3Rvaycs ICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19z dGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdIYWxkZXInLCAgICdI ZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxl c19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAs ICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9u YW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdT bWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdXYXJzYXcnLCAg ICAgICAgICAxNTAsICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRl KSBWQUxVRVMgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAz LTA1Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgICAgfCBW bGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBC ZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAg ICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBX YXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAw MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgICAgfCBP c2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAg ICAgOSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIw MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBI ZWxzaW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUw MCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBM aXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAg ICAxMSB8IE11bGxlciAgICAgICAgICAgfCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1 MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBM aXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCBOZXcgWW9yayAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAg fCBNYWRyaWQgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAg ICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBMaXNib24gICAgICB8ICAgICAgICAgIDk1MCB8 IDAzLTA1LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZWFzdDsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAxIHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAgIHwgICAgICAgICAx MDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICAgICB8 IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIy CisgICAgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAg fCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgICAgIDkgfCBNYXkgICAg ICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAg fCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2NlbnRyYWw7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJz YXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAx LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2ICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIK Kyg0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRl ciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VU IGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisg ICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAg ICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0w NC0yMDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdp dGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0 aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAg ICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAs ICAnMjAyMi0wMi0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0x OScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuMjAyMl8xZGVjYWRlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRl OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMDctMjAyMgorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIy CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc3BlcnNv bl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAg IDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAg ICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg4IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9u LURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19q YW4yMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTA5LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgt MjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDgg fCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDggcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8g REVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAt MjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAg ICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA3IHwgTGkgICAg ICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUx MCB8IDA1LTA0LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7Cist LQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgorLS0KK0NS RUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7CitD UkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsK K0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0 KTsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBy ZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRP CisgICAoUEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisg ICAgUEFSVElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworRVJS T1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0 MiIKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworLS0KKy0tIFRyeSB0byBTUExJ VCBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUg dHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBj Lm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRl eHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0 ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLQorIHRwXzBfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpIHwgdAorKDEg cm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAo UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJ VElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0gUGFydGl0aW9u cyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMu cmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dl dF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpIHwgdAorIHRwXzFfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpIHwgdAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5l dyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxF IHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190 YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK K1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUg dGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0YWJs ZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBf MF8xICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHJlZ3Jlc3NfdGJsc3Bh Y2UKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFj ZSBGUk9NIHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEn LCAndHBfMV8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScK KyAgT1JERVIgQlkgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVu YW1lIHwgIGluZGV4bmFtZSAgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCB0X3BrZXkgICAg ICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jl c3NfdGJsc3BhY2UKKyB0cF8xXzIgICAgfCB0cF8xXzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3Bh Y2UKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25z IGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFURSBBQ0NFU1Mg TUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3Rh YmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8w XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBf MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUK K0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVS RSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8y Jzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBh bW5hbWUgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAg ICAgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0 X2hlYXAKKyB0cF8xXzIgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKygzIHJvd3MpCisKK0RS T1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsK Ky0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhl IHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRv IHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxM IE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBU QUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBf MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRh YmxlIHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dO RVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBf MgorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8yIE9X TkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBT UExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1Ag VEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg RlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NI RU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9Q IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworLS0gU3BsaXQgcGFydGl0aW9u IG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVy CistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNw bGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChh KTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElO VE8KKyAgKFBBUlRJVElPTiB0cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJM RSB0OworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNzljOWEwMjNmZC4uYjA4MDQ2OTFm NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTksNyArMTE5LDcg QEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFu Z2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRz IHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGlu CiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9tZXJnZSBw YXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhw bGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZQordGVzdDogcGFydGl0 aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1 bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBw YXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0 YXRzIHByZWRpY2F0ZQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0g YW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5z IERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWY1ZWEwN2Y3NAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKQEAg LTAsMCArMSw5NjIgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAi QUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCisKK0NS RUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0t CisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIo MzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNf eHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lm aWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0w Ni0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRp dGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK KworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBh dCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScp KTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19m ZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFy dGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4n dCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBp cyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2FwcjIwMjIiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKKworLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gVGVzdHMgZm9yIHNwYWNl cyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQg REVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBD aGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBwYXRoCitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGljOworQUxURVIg VEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQorU1BMSVQgUEFSVElU SU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCistLQorLS0gQWRkIHJvd3MgaW50 byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsK K1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmVi MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0 aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxz byBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwg ICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIz Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBh cnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4g d2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGgg SU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRF RCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNh bGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZB UkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVT IEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAx KSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyk7CitJTlNFUlQgSU5U TyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpOworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIs IDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIs IDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIw MjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycs IDIwMjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwg MSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2Fs ZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFM VUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp IFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9m ZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAy MjsKKworRFJPUCBUQUJMRSBzYWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz cGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7 IGNoZWNrIGluZGV4IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4 IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCist LSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNU ICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIy LTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUg PiAnMjAyMi0wMS0wMSc7CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBPTjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25f c3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVD VCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicg YW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5k ZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEn IE9SREVSIEJZIGluZGV4bmFtZTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFy dGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBz YWxlc19kZWMyMDIyIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzAp IFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290 aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVz X2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHBy ZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8g KDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVj MjAyMiAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91 cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19k ZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIw MjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAy MiAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKKy0tIEVSUk9SOiAgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxp c3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVM VAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkp OworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4g c2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkg VE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBubyBlcnJvcjogYm91bmRz IG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMg b2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEw MSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNU UkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9p cm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJ TlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91 bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpv aWQgT1JERVIgQlkgY29ubmFtZTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworCistLSBXZSBzaG91bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRl ZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJl bGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7 OworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFp bnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25yZWxpZCA9ICdzYWxlc19hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25u YW1lOzsKKworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAy MiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50 X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0w My0xMScpOworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19t YXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9z YWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgt MSwgMTAsICcyMDIyLTAzLTExJyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2Yg ZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJ TlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAx XzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgx MCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNw ZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT ICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwg J1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDMwLCAnRm9y ZCcpOworCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEsICAxMDAsICcyMDIyLTAzLTAx Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEsICAxMTAsICcyMDIyLTAzLTAyJyk7 CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyk7CitJ TlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyk7CitJTlNF UlQgSU5UTyBzYWxlcyBWQUxVRVMgKDE5LCAyMDAsICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQg SU5UTyBzYWxlcyBWQUxVRVMgKDIwLCA1MCwgICcyMDIyLTAzLTEyJyk7CitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CisKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBf NDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxV RVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBG T1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEwXzIwOworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTIwXzMwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTMwXzQw OworCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5 IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0MCwgNTAsICAnMjAyMi0wMy0wNCcpOwor LS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQn KTsKKworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlv bmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDAp OworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisK K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigp IFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgor CVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAl LCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7Cisg ICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVz cGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhF Q1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScp OworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNI IFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcign c2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01h eScpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAo MjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJl IChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgy MCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc3Bl b3BsZTEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTIwXzMwOworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTMwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NB REU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQor LS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYg c3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2Yg bmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBB UyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNv bHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQg Tk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVT IEZST00gKDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVy c29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg KHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ0l2YW5vdicpOworCitTRUxFQ1QgYXR0bmFt ZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBh dHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQg T1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0t IFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUs IGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0 bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGF0dG51bTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFS VElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJf MyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdGb3JkJyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxXzI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVv cGxlMl8zOworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTNfNDsKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGU0XzU7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlk ID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxF Q1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBp ZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgYXR0bnVtOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz cGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0 ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoJ2R1bW15 IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCks ICdTbWlybm9mZicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09M VU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMzAsICdG b3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxl c3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8z MCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVv cGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK3NlbGVjdCAqIGZy b20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUxMF8yMDsK K3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUyMF8zMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNw ZW9wbGUzMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCistLQor LS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFU RSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScs ICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworCitBTFRFUiBUQUJMRSBz YWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEw XzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf cmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FwcjIwMjJfMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0t IFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1Qg KHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAn SGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZv c3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBERUZBVUxUOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3Qi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2Fs ZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3Qg Rk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxz aW5raScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9u ICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3Bs aXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworRFJPUCBUQUJMRSBz YWxlc19saXN0OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUg TlVMTCB2YWx1ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjAp LAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRl cnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdW bGFkaXZvc3RvaycsIE5VTEwpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBz cGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0JlcmxpbicsIE5VTEwpKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCist LQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRo IGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNF UklBTCwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFS VElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xp c3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9p ZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fy c2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxp bicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAg ICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUyAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0ZvcmQnLCAgICAgJ1N0 LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNh bGVzX2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwg JzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0Rl ZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAg ICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVz X3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAg J1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIw MCwgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29u X25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAo J0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMtMDInKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ01hZHJpZCcs ICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUyAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjIt MDMtMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0dhbmRpJywg ICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91 bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAg IDk1MCwgJzIwMjItMDMtMDUnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRp dm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vh c3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Nl bnRyYWw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBz cGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVu YWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0 IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNh bGVzX2xpc3Q7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBERUZBVUxUIHBh cnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0g ICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21t YW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w MS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMl8xZGVj YWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy Ml8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVG QVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5k czsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJ T04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRl OworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3Igc3BsaXQgbm9u LURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsgcGFydGl0aW9ucwor LS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworCistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVy IHRhYmxlLgorLS0KK0NSRUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04g QlkgTElTVCAodCk7CitDUkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZB TFVFUyBJTiAoJ0EnKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElU SU9OIEJZIFJBTkdFICh0KTsKKworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBB UlRJVElPTiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAo J0EnKSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0In KSBUTyAoJ0MnKSk7CisKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworCistLQor LS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JF QVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3Rl bmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0 Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz czo6cGdfY2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikp OworCistLSBQYXJ0aXRpb25zIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxU JywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworRFJP UCBUQUJMRSB0OworCistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJl bnQncyB0YWJsZXNwYWNlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJ TkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkg UkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0 cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRw XzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVz cGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBf MScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1h JworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CitTRUxFQ1QgdGFibGVuYW1l LCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxl bmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1l LCB0YWJsZXNwYWNlOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayBuZXcgcGFydGl0aW9u cyBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNT IE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90 YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uX3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBf MF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w XzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1l CitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hF UkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFf Mic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworRFJPUCBUQUJMRSB0OworRFJP UCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworCistLSBUZXN0IHBlcm1p c3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUg YW5kIHRoZQorLS0gdGhlIHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xF IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9ib2I7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVS IFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRw XzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworCitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworRFJPUCBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2JvYjsKKworLS0gU3BsaXQgcGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxl IHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNh bWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJM RSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxF IHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiB0cF8w IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzEgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworCitSRVNFVCBzZWFyY2hf cGF0aDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9Q IFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggZGRjNGM3OGZiOS4uMTZkY2Q2MjMzNSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKQEAgLTI3MjMsNiArMjcyMyw3IEBAIFNwZWNpYWxKb2luSW5mbwogU3Bp bkRlbGF5U3RhdHVzCiBTcGxpdEludGVydmFsCiBTcGxpdExSCitTcGxpdFBhcnRpdGlvbkNv bnRleHQKIFNwbGl0UGFnZUxheW91dAogU3BsaXRQb2ludAogU3BsaXRUZXh0T3V0cHV0RGF0 YQotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------rCCg6uBkleS6diSwKGsWNB6Y Content-Type: text/plain; charset=UTF-8; name="v33-0003-Refactor-createPartitionTable-to-remove-ProcessU.patch" Content-Disposition: attachment; filename*0="v33-0003-Refactor-createPartitionTable-to-remove-ProcessU.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MDgyMGEwZWU1OTljNDg2NDMyMDhhYjVmNDk4MzFmNGEyNDE1MDUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IFRodSwgMjkgQXVnIDIwMjQgMjA6Mjc6MDMgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzMyAzLzNdIFJlZmFjdG9yIGNyZWF0ZVBhcnRpdGlvblRhYmxlIHRvIHJlbW92 ZQogUHJvY2Vzc1V0aWxpdHkgY2FsbAoKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YyAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jICAgICAgICAgICAgICB8IDI3OCArKysrKysrKysrKysrKy0tLS0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvaGVhcC5oICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAgNTkgKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAgICAgIHwgIDIxICsr CiA1IGZpbGVzIGNoYW5nZWQsIDMxNCBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jCmluZGV4IDAxYjQzY2M2YTguLjcwNzEzNDMwNDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jCkBAIC0xMDEsMTYgKzEwMSwxMiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBB ZGROZXdSZWxhdGlvblR5cGUoY29uc3QgY2hhciAqdHlwZU5hbWUsCiAJCQkJCQkJCQkJT2lk IG5ld19yb3dfdHlwZSwKIAkJCQkJCQkJCQlPaWQgbmV3X2FycmF5X3R5cGUpOwogc3RhdGlj IHZvaWQgUmVsYXRpb25SZW1vdmVJbmhlcml0YW5jZShPaWQgcmVsaWQpOwotc3RhdGljIE9p ZAlTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2Rl ICpleHByLAotCQkJCQkJICBib29sIGlzX3ZhbGlkYXRlZCwgYm9vbCBpc19sb2NhbCwgaW50 IGluaGNvdW50LAotCQkJCQkJICBib29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfaW50ZXJu YWwpOwogc3RhdGljIHZvaWQgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3Qg KmNvb2tlZF9jb25zdHJhaW50cywKIAkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0 aWMgYm9vbCBNZXJnZVdpdGhFeGlzdGluZ0NvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJCQkJYm9vbCBhbGxvd19tZXJn ZSwgYm9vbCBpc19sb2NhbCwKIAkJCQkJCQkJCQlib29sIGlzX2luaXRpYWxseV92YWxpZCwK IAkJCQkJCQkJCQlib29sIGlzX25vX2luaGVyaXQpOwotc3RhdGljIHZvaWQgU2V0UmVsYXRp b25OdW1DaGVja3MoUmVsYXRpb24gcmVsLCBpbnQgbnVtY2hlY2tzKTsKIHN0YXRpYyBOb2Rl ICpjb29rQ29uc3RyYWludChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJTm9kZSAqcmF3 X2NvbnN0cmFpbnQsCiAJCQkJCQkJY2hhciAqcmVsbmFtZSk7CkBAIC0yMDcwLDcgKzIwNjYs NyBAQCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZh bHVlKQogICoKICAqIFRoZSBPSUQgb2YgdGhlIG5ldyBjb25zdHJhaW50IGlzIHJldHVybmVk LgogICovCi1zdGF0aWMgT2lkCitPaWQKIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkgIGJvb2wgaXNfdmFsaWRhdGVk LCBib29sIGlzX2xvY2FsLCBpbnQgaW5oY291bnQsCiAJCQkgIGJvb2wgaXNfbm9faW5oZXJp dCwgYm9vbCBpc19pbnRlcm5hbCkKQEAgLTI2NTcsNyArMjY1Myw3IEBAIE1lcmdlV2l0aEV4 aXN0aW5nQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9k ZSAqZXhwciwKICAqIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoZSByZWwuICBBbHNvLCB0aGlz IGJhY2tlbmQgd2lsbCByZWJ1aWxkIGl0cwogICogb3duIHJlbGNhY2hlIGVudHJ5IGF0IHRo ZSBuZXh0IENvbW1hbmRDb3VudGVySW5jcmVtZW50LgogICovCi1zdGF0aWMgdm9pZAordm9p ZAogU2V0UmVsYXRpb25OdW1DaGVja3MoUmVsYXRpb24gcmVsLCBpbnQgbnVtY2hlY2tzKQog ewogCVJlbGF0aW9uCXJlbHJlbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXgg ODRlZGE0MGViMy4uZTJhNDJhMjI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTIwMzIzLDYgKzIwMzIzLDE3OSBAQCBtb3ZlU3BsaXRUYWJsZVJvd3MoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwgTGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1Bhcgog CX0KIH0KIAorCisvKgorICogZ2V0QXR0cmlidXRlc0xpc3Q6IHJldHVybiBsaXN0IG9mIGNv bHVtbnMgKENvbHVtbkRlZikgbGlrZSBtb2RlbCB0YWJsZQorICogKG1vZGVsUmVsKQorICov CitzdGF0aWMgTGlzdCAqCitnZXRBdHRyaWJ1dGVzTGlzdChSZWxhdGlvbiBtb2RlbFJlbCkK K3sKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlUdXBsZURlc2MJbW9kZWxEZXNjOwor CUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisKKwltb2RlbERlc2MgPSBSZWxhdGlvbkdldERl c2NyKG1vZGVsUmVsKTsKKworCWZvciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5v IDw9IG1vZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIobW9kZWxEZXNjLAorCQkJ CQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJ LyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0 cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlkZWYgPSBtYWtlQ29s dW1uRGVmKE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0eXBp ZCwKKwkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRp b24pOworCisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisK KwkJLyogQWRkIHRvIGNvbHVtbiBsaXN0ICovCisJCWNvbExpc3QgPSBsYXBwZW5kKGNvbExp c3QsIGRlZik7CisKKwkJLyoKKwkJICogQWx0aG91Z2ggd2UgZG9uJ3QgdHJhbnNmZXIgdGhl IGNvbHVtbidzIGRlZmF1bHQvZ2VuZXJhdGlvbgorCQkgKiBleHByZXNzaW9uIG5vdywgd2Ug bmVlZCB0byBtYXJrIGl0IEdFTkVSQVRFRCBpZiBhcHByb3ByaWF0ZS4KKwkJICovCisJCWlm IChhdHRyaWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCkKKwkJ CWRlZi0+Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5z dG9yYWdlID0gYXR0cmlidXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5 IGNvbXByZXNzaW9uIGlmIHJlcXVlc3RlZCAqLworCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJ c1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJZGVmLT5jb21wcmVzc2lv biA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUoYXR0cmlidXRlLT5h dHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNzaW9uID0gTlVMTDsK Kwl9CisKKwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICogY3JlYXRlVGFibGVDb25z dHJhaW50czogY3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2VuZXJh dGVkCisgKiB2YWx1ZXMgKHByb3RvdHlwZSBpcyBmdW5jdGlvbiBleHBhbmRUYWJsZUxpa2VD bGF1c2UpLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlVGFibGVDb25zdHJhaW50cyhSZWxh dGlvbiBtb2RlbFJlbCwgUmVsYXRpb24gbmV3UmVsKQoreworCVR1cGxlRGVzYwl0dXBsZURl c2M7CisJVHVwbGVDb25zdHIgKmNvbnN0cjsKKwlBdHRyTWFwICAgICphdHRtYXA7CisJQXR0 ck51bWJlcglwYXJlbnRfYXR0bm87CisJaW50CQkJY2NudW07CisKKwl0dXBsZURlc2MgPSBS ZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKKwljb25zdHIgPSB0dXBsZURlc2MtPmNvbnN0 cjsKKworCWlmICghY29uc3RyKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbnN0cnVjdCBh IG1hcCBmcm9tIHRoZSBMSUtFIHJlbGF0aW9uJ3MgYXR0bm9zIHRvIHRoZSBjaGlsZCByZWwn cy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNoIGV0YywgYWx0aG91Z2ggaXQgc2hv dWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBhIGZhaWx1cmUgc2luY2UgYm90aCB0 YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAgPSBidWlsZF9hdHRybWFwX2J5X25h bWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJCQkJCQkgICB0dXBsZURlc2MsCisJ CQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZvciBkZWZhdWx0IHZhbHVlcy4gKi8K Kwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0dXBsZURlc2MtPm5h dHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0 ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRu byAtIDEpOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4g Ki8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJ LyogQ29weSBkZWZhdWx0LCBpZiBwcmVzZW50IGFuZCBpdCBzaG91bGQgYmUgY29waWVkLiAq LworCQlpZiAoYXR0cmlidXRlLT5hdHRoYXNkZWYpCisJCXsKKwkJCU5vZGUJICAgKnRoaXNf ZGVmYXVsdCA9IE5VTEw7CisJCQlBdHRyRGVmYXVsdCAqYXR0cmRlZiA9IGNvbnN0ci0+ZGVm dmFsOworCQkJYm9vbAkJZm91bmRfd2hvbGVfcm93OworCQkJaW50MTYJCW51bTsKKwkJCU5v ZGUJICAgKmRlZjsKKworCQkJLyogRmluZCBkZWZhdWx0IGluIGNvbnN0cmFpbnQgc3RydWN0 dXJlICovCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0ci0+bnVtX2RlZnZhbDsgaSsr KQorCQkJeworCQkJCWlmIChhdHRyZGVmW2ldLmFkbnVtID09IHBhcmVudF9hdHRubykKKwkJ CQl7CisJCQkJCXRoaXNfZGVmYXVsdCA9IHN0cmluZ1RvTm9kZShhdHRyZGVmW2ldLmFkYmlu KTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaWYgKHRoaXNfZGVmYXVsdCA9PSBO VUxMKQorCQkJCWVsb2coRVJST1IsICJkZWZhdWx0IGV4cHJlc3Npb24gbm90IGZvdW5kIGZv ciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJIHBhcmVudF9hdHRu bywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKTsKKworCQkJbnVtID0gYXR0 bWFwLT5hdHRudW1zW3BhcmVudF9hdHRubyAtIDFdOworCQkJZGVmID0gbWFwX3ZhcmlhYmxl X2F0dG5vcyh0aGlzX2RlZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52YWxpZE9pZCwgJmZvdW5k X3dob2xlX3Jvdyk7CisKKwkJCS8qCisJCQkgKiBQcmV2ZW50IHRoaXMgZm9yIHRoZSBzYW1l IHJlYXNvbiBhcyBmb3IgY29uc3RyYWludHMgYmVsb3cuIE5vdGUKKwkJCSAqIHRoYXQgZGVm YXVsdHMgY2Fubm90IGNvbnRhaW4gYW55IHZhcnMsIHNvIGl0J3MgT0sgdGhhdCB0aGUKKwkJ CSAqIGVycm9yIG1lc3NhZ2UgcmVmZXJzIHRvIGdlbmVyYXRlZCBjb2x1bW5zLgorCQkJICov CisJCQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNn KCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJCQkg ZXJyZGV0YWlsKCJHZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGNvbHVtbiBcIiVzXCIgY29u dGFpbnMgYSB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRhYmxlIFwiJXNcIi4iLAorCQkJCQkJ CQkgICBOYW1lU3RyKGF0dHJpYnV0ZS0+YXR0bmFtZSksCisJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSkpKTsKKworCQkJLyogQWRkIGEgcHJlLWNvb2tl ZCBkZWZhdWx0IGV4cHJlc3Npb24uICovCisJCQkodm9pZCkgU3RvcmVBdHRyRGVmYXVsdChu ZXdSZWwsIG51bSwgZGVmLCB0cnVlLCBmYWxzZSk7CisJCX0KKwl9CisKKwkvKiBDeWNsZSBm b3IgQ0hFQ0sgY29uc3RyYWludHMuICovCisJZm9yIChjY251bSA9IDA7IGNjbnVtIDwgY29u c3RyLT5udW1fY2hlY2s7IGNjbnVtKyspCisJeworCQljaGFyCSAgICpjY25hbWUgPSBjb25z dHItPmNoZWNrW2NjbnVtXS5jY25hbWU7CisJCWNoYXIJICAgKmNjYmluID0gY29uc3RyLT5j aGVja1tjY251bV0uY2NiaW47CisJCWJvb2wJCWNjbm9pbmhlcml0ID0gY29uc3RyLT5jaGVj a1tjY251bV0uY2Nub2luaGVyaXQ7CisJCU5vZGUJICAgKmNjYmluX25vZGU7CisJCWJvb2wJ CWZvdW5kX3dob2xlX3JvdzsKKworCQljY2Jpbl9ub2RlID0gbWFwX3ZhcmlhYmxlX2F0dG5v cyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAwLAorCQkJCQkJCQkJCSBh dHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJ CS8qCisJCSAqIFdlIHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzIGJlY2F1c2UgdGhlIHdo b2xlIHBvaW50IG9mIExJS0UgaXMKKwkJICogdGhhdCB0aGUgbmV3IHRhYmxlJ3Mgcm93dHlw ZSBtaWdodCBsYXRlciBkaXZlcmdlIGZyb20gdGhlIHBhcmVudCdzLgorCQkgKiBTbywgd2hp bGUgdHJhbnNsYXRpb24gbWlnaHQgYmUgcG9zc2libGUgcmlnaHQgbm93LCBpdCB3b3VsZG4n dCBiZQorCQkgKiBwb3NzaWJsZSB0byBndWFyYW50ZWUgaXQgd291bGQgd29yayBpbiBmdXR1 cmUuCisJCSAqLworCQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkg ZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJ CQkJCSBlcnJkZXRhaWwoIkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93 IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJCQkJCQkgICBjY25hbWUsCisJCQkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobW9kZWxSZWwpKSkpOworCisJCS8qIFdl IGNhbiBza2lwIHZhbGlkYXRpb24sIHNpbmNlIHRoZSBuZXcgdGFibGUgc2hvdWxkIGJlIGVt cHR5LiAqLworCQkodm9pZCkgU3RvcmVSZWxDaGVjayhuZXdSZWwsIGNjbmFtZSwgY2NiaW5f bm9kZSwgdHJ1ZSwgdHJ1ZSwKKwkJCQkJCQkgMCwgY2Nub2luaGVyaXQsIGZhbHNlKTsKKwl9 CisKKwkvKiBVcGRhdGUgdGhlIGNvdW50IG9mIGNvbnN0cmFpbnRzIGluIHRoZSByZWxhdGlv bidzIHBnX2NsYXNzIHR1cGxlLiAqLworCVNldFJlbGF0aW9uTnVtQ2hlY2tzKG5ld1JlbCwg Y29uc3RyLT5udW1fY2hlY2spOworfQorCisKIC8qCiAgKiBjcmVhdGVQYXJ0aXRpb25UYWJs ZTogY3JlYXRlIHRhYmxlIGZvciBhIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCiAg KiAobmV3UGFydE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsKQpAQCAtMjAzMzcsMTMgKzIw NTEwLDE0IEBAIG1vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNw bGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFyCiAgKiBGdW5jdGlvbiByZXR1 cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9uIChsb2NrZWQgaW4gQWNjZXNzRXhjbHVzaXZlTG9j ayBtb2RlKS4KICAqLwogc3RhdGljIFJlbGF0aW9uCi1jcmVhdGVQYXJ0aXRpb25UYWJsZShS YW5nZVZhciAqbmV3UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVsLAotCQkJCQkgQWx0ZXJU YWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQorY3JlYXRlUGFydGl0aW9uVGFibGUoUmFu Z2VWYXIgKm5ld1BhcnROYW1lLCBSZWxhdGlvbiBtb2RlbFJlbCkKIHsKLQlDcmVhdGVTdG10 ICpjcmVhdGVTdG10OwotCVRhYmxlTGlrZUNsYXVzZSAqdGxjOwotCVBsYW5uZWRTdG10ICp3 cmFwcGVyOwogCVJlbGF0aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlUdXBsZURl c2MJZGVzY3JpcHRvcjsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCU9pZAkJCXJlbGFt SWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CiAKIAkvKiBJZiBleGlzdGluZyByZWwgaXMgdGVt cCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCiAJaWYgKG1vZGVsUmVsLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKQEAgLTIw MzUyLDU2ICsyMDUyNiw1MyBAQCBjcmVhdGVQYXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3 UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVsLAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjcmVhdGUgYXMgcGFydGl0 aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24iKSkpOwogCi0J LyogTmV3IHBhcnRpdGlvbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyBt b2RlbFJlbCAqLwotCW5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSA9IG1vZGVsUmVsLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwotCi0JY3JlYXRlU3RtdCA9IG1ha2VOb2RlKENyZWF0 ZVN0bXQpOwotCWNyZWF0ZVN0bXQtPnJlbGF0aW9uID0gbmV3UGFydE5hbWU7Ci0JY3JlYXRl U3RtdC0+dGFibGVFbHRzID0gTklMOwotCWNyZWF0ZVN0bXQtPmluaFJlbGF0aW9ucyA9IE5J TDsKLQljcmVhdGVTdG10LT5jb25zdHJhaW50cyA9IE5JTDsKLQljcmVhdGVTdG10LT5vcHRp b25zID0gTklMOwotCWNyZWF0ZVN0bXQtPm9uY29tbWl0ID0gT05DT01NSVRfTk9PUDsKLQlj cmVhdGVTdG10LT50YWJsZXNwYWNlbmFtZSA9IGdldF90YWJsZXNwYWNlX25hbWUobW9kZWxS ZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSk7Ci0JY3JlYXRlU3RtdC0+aWZfbm90X2V4aXN0 cyA9IGZhbHNlOwotCWNyZWF0ZVN0bXQtPmFjY2Vzc01ldGhvZCA9IGdldF9hbV9uYW1lKG1v ZGVsUmVsLT5yZF9yZWwtPnJlbGFtKTsKLQotCXRsYyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNs YXVzZSk7Ci0JdGxjLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UobW9kZWxSZWwpKSwKLQkJCQkJCQkJIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKG1vZGVsUmVsKSwgLTEpOwotCi0JLyoKLQkgKiBJbmRleGVzIHdp bGwgYmUgaW5oZXJpdGVkIG9uICJhdHRhY2ggbmV3IHBhcnRpdGlvbnMiIHN0YWdlLCBhZnRl ciBkYXRhCi0JICogbW92aW5nLiAgV2UgYWxzbyBkb24ndCBjb3B5IHRoZSBleHRlbmRlZCBz dGF0aXN0aWNzIGZvciBjb25zaXN0ZW5jeQotCSAqIHdpdGggQ1JFQVRFIFRBQkxFIFBBUlRJ VElPTiBPRi4KLQkgKi8KLQl0bGMtPm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwg JgotCQl+KENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVMgfCBDUkVBVEVfVEFCTEVfTElLRV9J REVOVElUWSB8IENSRUFURV9UQUJMRV9MSUtFX1NUQVRJU1RJQ1MpOwotCXRsYy0+cmVsYXRp b25PaWQgPSBJbnZhbGlkT2lkOwotCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IGxhcHBlbmQo Y3JlYXRlU3RtdC0+dGFibGVFbHRzLCB0bGMpOwotCi0JLyogTmVlZCB0byBtYWtlIGEgd3Jh cHBlciBQbGFubmVkU3RtdC4gKi8KLQl3cmFwcGVyID0gbWFrZU5vZGUoUGxhbm5lZFN0bXQp OwotCXdyYXBwZXItPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7Ci0Jd3JhcHBlci0+Y2Fu U2V0VGFnID0gZmFsc2U7Ci0Jd3JhcHBlci0+dXRpbGl0eVN0bXQgPSAoTm9kZSAqKSBjcmVh dGVTdG10OwotCXdyYXBwZXItPnN0bXRfbG9jYXRpb24gPSBjb250ZXh0LT5wc3RtdC0+c3Rt dF9sb2NhdGlvbjsKLQl3cmFwcGVyLT5zdG10X2xlbiA9IGNvbnRleHQtPnBzdG10LT5zdG10 X2xlbjsKLQotCVByb2Nlc3NVdGlsaXR5KHdyYXBwZXIsCi0JCQkJICAgY29udGV4dC0+cXVl cnlTdHJpbmcsCi0JCQkJICAgZmFsc2UsCi0JCQkJICAgUFJPQ0VTU19VVElMSVRZX1NVQkNP TU1BTkQsCi0JCQkJICAgTlVMTCwKLQkJCQkgICBOVUxMLAotCQkJCSAgIE5vbmVfUmVjZWl2 ZXIsCi0JCQkJICAgTlVMTCk7CisJLyogTG9vayB1cCBpbmhlcml0YW5jZSBhbmNlc3RvcnMg YW5kIGdlbmVyYXRlIHJlbGF0aW9uIHNjaGVtYS4gKi8KKwljb2xMaXN0ID0gZ2V0QXR0cmli dXRlc0xpc3QobW9kZWxSZWwpOworCisJLyogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBm cm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuICovCisJZGVzY3JpcHRvciA9IEJ1aWxkRGVzY0Zv clJlbGF0aW9uKGNvbExpc3QpOworCisJLyogTG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCBm b3IgbmV3IHJlbGF0aW9uLiAqLworCXJlbGFtSWQgPSAobW9kZWxSZWwtPnJkX3JlbC0+cmVs YW0gIT0gSW52YWxpZE9pZCkgPyBtb2RlbFJlbC0+cmRfcmVsLT5yZWxhbSA6IEhFQVBfVEFC TEVfQU1fT0lEOworCisJLyogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFy ZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0K KwkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBO b0xvY2ssIE5VTEwpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluZXdSZWxJ ZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVsbmFtZSwKKwkJ CQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQltb2RlbFJlbC0+cmRfcmVsLT5yZWx0 YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJSW52YWxpZE9p ZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUdldFVzZXJJZCgpLAorCQkJ CQkJCQkJCXJlbGFtSWQsCisJCQkJCQkJCQkJZGVzY3JpcHRvciwKKwkJCQkJCQkJCQlOSUws CisJCQkJCQkJCQkJUkVMS0lORF9SRUxBVElPTiwKKwkJCQkJCQkJCQluZXdQYXJ0TmFtZS0+ cmVscGVyc2lzdGVuY2UsCisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJZmFsc2UsCisJ CQkJCQkJCQkJT05DT01NSVRfTk9PUCwKKwkJCQkJCQkJCQkoRGF0dW0pIDAsCisJCQkJCQkJ CQkJdHJ1ZSwKKwkJCQkJCQkJCQlhbGxvd1N5c3RlbVRhYmxlTW9kcywKKwkJCQkJCQkJCQlm YWxzZSwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCU5VTEwpOworCisJLyoK KwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXds eS1jcmVhdGVkIHJlbGF0aW9uCisJICogdHVwbGUgdmlzaWJsZSBmb3Igb3BlbmluZy4KKwkg Ki8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCiAJLyoKIAkgKiBPcGVuIHRoZSBu ZXcgcGFydGl0aW9uIHdpdGggbm8gbG9jaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUKIAkg KiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHBsYWNlZCB0aGVyZSBhZnRlciBjcmVhdGlvbi4KIAkg Ki8KLQluZXdSZWwgPSB0YWJsZV9vcGVucnYobmV3UGFydE5hbWUsIE5vTG9jayk7CisJbmV3 UmVsID0gdGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKIAogCS8qCiAJICogV2UgaW50 ZW5kZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5j ZSBhcyB0aGUKQEAgLTIwNDI0LDYgKzIwNTk1LDkgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUo UmFuZ2VWYXIgKm5ld1BhcnROYW1lLCBSZWxhdGlvbiBtb2RlbFJlbCwKIAkJCQkgZXJybXNn KCJjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0 ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKG1vZGVsUmVsKSkpKTsKIAorCS8qIENyZWF0ZSBjb25zdHJhaW50cywgZGVmYXVsdCB2 YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgKi8KKwljcmVhdGVUYWJsZUNvbnN0cmFpbnRz KG1vZGVsUmVsLCBuZXdSZWwpOworCiAJcmV0dXJuIG5ld1JlbDsKIH0KIApAQCAtMjA1MjEs NyArMjA2OTUsNyBAQCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOwogCQlS ZWxhdGlvbgluZXdQYXJ0UmVsOwogCi0JCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25U YWJsZShzcHMtPm5hbWUsIHJlbCwgY29udGV4dCk7CisJCW5ld1BhcnRSZWwgPSBjcmVhdGVQ YXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHJlbCk7CiAJCW5ld1BhcnRSZWxzID0gbGFwcGVu ZChuZXdQYXJ0UmVscywgbmV3UGFydFJlbCk7CiAJfQogCkBAIC0yMDc2NSw3ICsyMDkzOSw3 IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl9CiAKIAkvKiBDcmVhdGUgdGFibGUgZm9yIG5l dyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KLQluZXdQ YXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUoY21kLT5uYW1lLCByZWwsIGNvbnRleHQp OworCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZShjbWQtPm5hbWUsIHJlbCk7 CiAKIAkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcgcGFydGl0 aW9uLiAqLwogCW1vdmVNZXJnZWRUYWJsZXNSb3dzKHJlbCwgbWVyZ2luZ1BhcnRpdGlvbnNM aXN0LCBuZXdQYXJ0UmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggYzUxMjgyNGNkMS4uOWZk NTJhNGYzOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKQEAgLTExNCw2ICsxMTQsMTIgQEAgZXh0ZXJu IExpc3QgKkFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJCQkJ CQkJICAgYm9vbCBpc19pbnRlcm5hbCwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nKTsKIAorZXh0ZXJuIE9pZCBTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAorCQkJCQkJIGJvb2wgaXNfdmFsaWRhdGVk LCBib29sIGlzX2xvY2FsLCBpbnQgaW5oY291bnQsCisJCQkJCQkgYm9vbCBpc19ub19pbmhl cml0LCBib29sIGlzX2ludGVybmFsKTsKKworZXh0ZXJuIHZvaWQgU2V0UmVsYXRpb25OdW1D aGVja3MoUmVsYXRpb24gcmVsLCBpbnQgbnVtY2hlY2tzKTsKKwogZXh0ZXJuIHZvaWQgUmVs YXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFNldEF0dHJN aXNzaW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpOwogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKaW5kZXgg ZGM5YTUxMzBjYy4uMjA1ZGRiMGY3NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMTU4Myw2ICsxNTgzLDY1IEBAIEFMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTwogICAoUEFSVElUSU9OIHRwXzAg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCiAgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CiBEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBkZWZhdWx0 cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2Jp Z2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQg REVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JF RAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9k ZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0 cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAg ICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAg ICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsg MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEw MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAg ICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9uczogdF9i aWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3Nj aGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBT dG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBi ICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwg CisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRpb24gY29u c3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdp bnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVG QVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJ VElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1 bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsg MTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6 IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgoYiBJUyBO T1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50 KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF8wMV8x MCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAg ICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAx MCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjog dF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0aW9uIGNv bnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50KSBBTkQg KGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxFIHRfYmlnaW50OwogUkVTRVQgc2Vh cmNoX3BhdGg7CiAtLQogRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCmluZGV4IGVmNWVhMDdm NzQuLmUxODU0NThlNGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9zcGxpdC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3Nw bGl0LnNxbApAQCAtOTU1LDYgKzk1NSwyNyBAQCBBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cF8wIElOVE8KICAgIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKIERST1AgVEFCTEUgdDsKIAorLS0gQ2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0 cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQgKAorICBi IGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFVTFQgMTAx LAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykKK1BBUlRJ VElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJU SVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWlu dHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CitcZCsgdF9iaWdpbnRf ZGVmYXVsdAorQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRfYmlnaW50 X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IERFRkFV TFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQQVJUSVRJ T04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitcZCsgdF9iaWdpbnRfMDFfMTAKK0RST1AgVEFC TEUgdF9iaWdpbnQ7CisKKwogUkVTRVQgc2VhcmNoX3BhdGg7CiAKIC0tCi0tIAoyLjQwLjEu d2luZG93cy4xCgo= --------------rCCg6uBkleS6diSwKGsWNB6Y--