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 1uS1xf-002LMB-7E for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Jun 2025 23:12:56 +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 1uS1xb-005j4D-OO for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Jun 2025 23:12:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uS1xa-005j44-BB for pgsql-hackers@lists.postgresql.org; Wed, 18 Jun 2025 23:12:51 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uS1xS-002liR-1R for pgsql-hackers@lists.postgresql.org; Wed, 18 Jun 2025 23:12:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1750288358; bh=4kcCZYElpJKwHg4zrlDndVVStf1pfg4nSwqy8BsKjo8=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=DcAmLM0LXWuoQX4FSDX90456qFokYg0jhtG+I/dqHoDU6Syn/MvBN4RrYXbGae9CN GMCJIuK+iiLaJmoTWLwKl3rEIjDjc4rR/VAD8dn2nZE1qCN2g2/cnW+XzmbDxDm9xB VN3jyge3mpgeNvCw/e6Qe1QGBL6w5AtwfzLeZUWKgEoAizhxmYpmHBbdhMqfFVUSv4 y4/WW4an1Qci9H7nFrJJIQldTZuPI4UylBzG64EuRlTKITCGa0nVrs8SFd0vle0282 biqiVkIR7koiTCxGf9F8bhB715Cf2kYvrh0uDk8gzgrXXk8qjdtOWEqiFDr50ecqkJ G5Mc0O/gA0WQQ== Received: from [172.30.48.174] (unknown [93.174.131.138]) (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 57BC660BFE; Thu, 19 Jun 2025 02:12:38 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------7CtLIvH5g69EeqXXJgGqRku2" Message-ID: Date: Thu, 19 Jun 2025 02:12:38 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <884bcf9e-d6e3-4b0c-8dcb-7f2110070ac9@postgrespro.ru> <1e74c9fd-830e-4544-b0de-e49ea4b04029@postgrespro.ru> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> <4f19550b-eb41-4649-8bf5-566dc020a720@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/06/18 22:03: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: 2025/06/18 18:22:00 #27574188 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. --------------7CtLIvH5g69EeqXXJgGqRku2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! 1. >v47-0001-rename-function-argument-and-minor-refactor.no-cfbot Thanks, applied. 2. >+ * Construct a map from the LIKE relation's attnos to the child rel's >this comment in createTableConstraints is confusing, especially the > word "LIKE". I didn' change it though. It is copy from expandTableLikeClause function. Changed. 3. >the argument (Relation rel) never used in moveMergedTablesRows >we can remove it, or rename it as "parent_rel". >I didn' change it though. Removed. 4. >moveMergedTablesRows was never used in SPLIT PARTITION, >so maybe we can rename it to >ATMergePartitionMoveTablesRows >or >ATMergePartitionMoveRows >or >ATMergePartitionRows >what do you think? I like the name "MergePartitionsMoveRows" (without prefix "AT" - "ALTER TABLE", because this function is not called from ATExecCmd function). Is it ok? 5. >so I added a test for it. as you can see below, the error HINT message >is not great in this context. ... >HINT: Use DROP ... CASCADE to drop the dependent objects too. Maybe a special flag (DEPFLAG_NOHINT?) should be added to skip hints for the performDeletionCheck function? -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------7CtLIvH5g69EeqXXJgGqRku2 Content-Type: text/plain; charset=UTF-8; name="v48-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v48-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhNTIwMzljZGJhNWZkNzg4NzQ3Y2ZhY2Y2MDM3YTEwM2Q1NDI0ODgxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDggMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEwNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTA4ICsrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAg IDIyICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAg fCAgMTQ4ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAg ICAgIHwgIDE5OSArKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAg ICAgICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAg ICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmggICAgICAgICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0 aXRpb24tbWVyZ2Uub3V0ICAgIHwgIDE5OSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCB8IDExMDUgKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA3 OTYgKysrKysrKysrKysrCiAyMSBmaWxlcyBjaGFuZ2VkLCAzNjEyIGluc2VydGlvbnMoKyks IDI4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21l cmdlLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMv c2dtbC9kZGwuc2dtbAppbmRleCA5NjkzNmJjZDNhLi42MmMyYmI1NGVhIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBA IC00NDQwLDYgKzQ0NDAsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIg QUREIFVOSVFVRSAoY2l0eV9pZCwgbG9nZGF0ZSk7CiBBTFRFUiBJTkRFWCBtZWFzdXJlbWVu dF9jaXR5X2lkX2xvZ2RhdGVfa2V5CiAgICAgQVRUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVu dF95MjAwNm0wMl9jaXR5X2lkX2xvZ2RhdGVfa2V5OwogLi4uCis8L3Byb2dyYW1saXN0aW5n PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGVyZSBpcyBhbHNvIGFuIG9w dGlvbiBmb3IgbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBwYXJ0aXRpb25zIGludG8KKyAgICAg YSBzaW5nbGUgcGFydGl0aW9uIHVzaW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwt YWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj48Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUzwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUg c2ltcGxpZmllcyB0aGUgbWFuYWdlbWVudCBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgYnkgYWxs b3dpbmcKKyAgICAgdXNlcnMgdG8gY29tYmluZSBwYXJ0aXRpb25zIHRoYXQgYXJlIG5vIGxv bmdlciBuZWVkZWQgYXMKKyAgICAgc2VwYXJhdGUgZW50aXRpZXMuICBJdCdzIGltcG9ydGFu dCB0byBub3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgbm90CisgICAgIHN1cHBvcnRlZCBm b3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVpcmVzIGFuCisgICAgIDxsaXRl cmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ssIHdoaWNoIGNvdWxkIGltcGFj dCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxvY2sncyByZXN0cmljdGl2 ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuCisgICAgIG1lcmdlIHRocmVlIG1vbnRo bHkgcGFydGl0aW9ucyBpbnRvIG9uZSBxdWFydGVyIHBhcnRpdGlvbjoKKzxwcm9ncmFtbGlz dGluZz4KK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50CisgICAgTUVSR0UgUEFSVElUSU9OUyAo bWVhc3VyZW1lbnRfeTIwMDZtMDEsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1l bnRfeTIwMDZtMDIsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZt MDMpIElOVE8gbWVhc3VyZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAg PC9wYXJhPgogICAgPC9zZWN0Mz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRl eCBkNjNmM2E2MjFhLi5lNTAzYTA2MDI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCkBAIC0zNyw2ICszNyw5IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFD SCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9 CiBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsg Q09OQ1VSUkVOVExZIHwgRklOQUxJWkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAg TUVSR0UgUEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkKKyAgICAgICAgSU5U TyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5hY3Rpb248L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTExNDcs MTQgKzExNTAsMTAxIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt YWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj4KKyAgICA8dGVybT48bGl0ZXJhbD5NRVJH RSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRl cmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlz IGZvcm0gbWVyZ2VzIHNldmVyYWwgcGFydGl0aW9ucyBvZiB0aGUgdGFyZ2V0IHRhYmxlIGlu dG8gYSBuZXcgcGFydGl0aW9uLgorICAgICAgSGFzaC1wYXJ0aXRpb25lZCB0YXJnZXQgdGFi bGUgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgIElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+IHBhcnRpdGlvbiBpcyBub3QgaW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRpdGlvbnMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFj ZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06CisgICAgICA8aXRlbWl6ZWRsaXN0Pgor ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2Ut cGFydGl0aW9uZWQgdGFibGVzLCB0aGUgcmFuZ2VzIG9mIHRoZSBwYXJ0aXRpb25zCisgICAg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBtdXN0IGJl IGFkamFjZW50IGluIG9yZGVyIHRvIGJlIG1lcmdlZC4gT3RoZXJ3aXNlLCBhbiBlcnJvciB3 aWxsIGJlCisgICAgICAgICByYWlzZWQuIFRoZSByZXN1bHRpbmcgY29tYmluZWQgcmFuZ2Ug d2lsbCBiZSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZAorICAgICAgICAgZm9yIHRoZSBwYXJ0 aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9y ZXBsYWNlYWJsZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgbGlzdC1wYXJ0 aXRpb25lZCB0YWJsZXMsIHRoZSBwYXJ0aXRpb24gYm91bmRzIG9mCisgICAgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBhcmUgY29tYmluZWQgdG8g Zm9ybSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAgIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAg ICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0 PgorICAgICAgSWYgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIGlzIGlu IHRoZSBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06 CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICB3aWxsIGJlIHRo ZSBuZXcgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9uIG9mIHRoZSB0YXJn ZXQgdGFibGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcGFydGl0aW9uIGJv dW5kIHNwZWNpZmljYXRpb25zIGZvciBhbGwgcGFydGl0aW9ucy0KKyAgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxl PiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiwgWy4uLl0KKyAgICAgICAgIGNhbiBiZSBhcmJpdHJhcnku CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXpl ZGxpc3Q+CisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgY2FuIGhhdmUg dGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLiBPbmx5IHNp bXBsZSwKKyAgICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9u cyBoYXZlIGRpZmZlcmVudCBvd25lcnMsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgor ICAgICAgVGhlIG93bmVyIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlIHRoZSBv d25lciBvZiB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEl0IGlzIHRoZSB1c2VyJ3MgcmVz cG9uc2liaWxpdHkgdG8gc2V0dXAgPGFjcm9ueW0+QUNMPC9hY3JvbnltPiBvbiB0aGUKKyAg ICAgIG5ldyBwYXJ0aXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgaW5kZXhlcyBhbmQgaWRlbnRpdHkgYXJlIGNyZWF0ZWQgbGF0ZXIsIGFmdGVyIG1vdmlu ZyB0aGUgZGF0YQorICAgICAgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KKyAgICAgIEV4dGVu ZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgdGFibGUsIGZv ciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUgUEFSVElU SU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwgaW5oZXJp dCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgdHlw ZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9ucyBhcmUgbWVyZ2VkLCBhbnkgaW5k aXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aG9zZQorICAgICAgcGFydGl0aW9ucywg c3VjaCBhcyBjb25zdHJhaW50cyBvciBzdGF0aXN0aWNzIHdpbGwgYmUgZHJvcHBlZC4gVGhp cyBvY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUgTUVSR0UgUEFS VElUSU9OUzwvY29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmIGFz IHRoZQorICAgICAgdGVtcGxhdGUgdG8gZGVmaW5lIHRoZXNlIG9iamVjdHMuCisgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiBtZXJnZWQgcGFydGl0aW9ucyBoYXZlIHNv bWUgb2JqZWN0cyBkZXBlbmRlbnQgb24gdGhlbSwgdGhlIGNvbW1hbmQgY2FuCisgICAgICBu b3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90IHVzZWQsIGFu IGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAgIDxub3RlPgor ICAgICAgPHBhcmE+CisgICAgICAgTWVyZ2luZyBwYXJ0aXRpb25zIGFjcXVpcmVzIGEgPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAgIHRoZSBw YXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVT SVZFPC9saXRlcmFsPgorICAgICAgIGxvY2tzIG9uIHRoZSB0YWJsZXMgYmVpbmcgbWVyZ2Vk IGFuZCBvbiB0aGUgZGVmYXVsdCBwYXJ0aXRpb24gKGlmIGFueSkuCisgICAgICA8L3BhcmE+ CisgICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK ICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KICAgIEFsbCB0aGUg Zm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRoYXQgYWN0IG9uIGEg c2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwvbGl0ZXJhbD4sIDxs aXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAotICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJ VElPTjwvbGl0ZXJhbD4sIGFuZAotICAgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0 ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJ T048L2xpdGVyYWw+LCA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwKKyAg IGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFsPiBjYW4gYmUgY29tYmlu ZWQgaW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxp ZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBz ZXZlcmFsIGNvbHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNv bHVtbnMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1 bCB3aXRoIGxhcmdlCkBAIC0xMzk3LDcgKzE0ODcsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJs ZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2gg YXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUuCisgICAg ICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9u IG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCisgICAgICAgIG9yIHRoZSBuYW1lIG9m IHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xp c3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE4MzAsNiArMTkyMSwxMyBAQCBB TFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgIERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1l bnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAg IFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhl IHRhcmdldCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2Vu dHJhbCkKKyAgICBJTlRPIHNhbGVzX2FsbDsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgor CiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKaW5kZXggMTgzMTZhMzk2OC4uNWFmYzQ5MzgyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBl bmRlbmN5LmMKQEAgLTMxOSw2ICszMTksNTYgQEAgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwKIAl0YWJsZV9jbG9zZShkZXBSZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogfQogCisvKgorICogcGVyZm9ybURlbGV0aW9uQ2hlY2s6IENoZWNrIHdoZXRo ZXIgYSBzcGVjaWZpYyBvYmplY3QgY2FuIGJlIHNhZmVseSBkZWxldGVkLgorICogVGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWxldGlvbjsgaW5zdGVhZCwgaXQgcmFp c2VzIGFuIGVycm9yCisgKiBpZiB0aGUgb2JqZWN0IGNhbm5vdCBiZSBkZWxldGVkIGR1ZSB0 byBleGlzdGluZyBkZXBlbmRlbmNpZXMuCisgKgorICogSXQgY2FuIGJlIHVzZWZ1bCB3aGVu IHlvdSBuZWVkIGRlbGV0ZSBzb21lIG9iamVjdHMgbGF0ZXIuICBTZWUgY29tbWVudHMgaW4K KyAqIHBlcmZvcm1EZWxldGlvbiB0b28uCisgKiBUaGUgYmVoYXZpb3IgbXVzdCBzcGVjaWZp ZWQgYXMgRFJPUF9SRVNUUklDVC4KKyAqLwordm9pZAorcGVyZm9ybURlbGV0aW9uQ2hlY2so Y29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2 aW9yLCBpbnQgZmxhZ3MpCit7CisJUmVsYXRpb24JZGVwUmVsOworCU9iamVjdEFkZHJlc3Nl cyAqdGFyZ2V0T2JqZWN0czsKKworCUFzc2VydChiZWhhdmlvciA9PSBEUk9QX1JFU1RSSUNU KTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25JZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisKKwkvKgor CSAqIENvbnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB3ZSB3YW50IGRlbGV0ZSBsYXRlciAo aWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cworCSAqIGV2ZXJ5dGhpbmcgZGlyZWN0bHkgb3Ig aW5kaXJlY3RseSBkZXBlbmRlbnQgb24gaXQpLgorCSAqLworCXRhcmdldE9iamVjdHMgPSBu ZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCisJZmluZERlcGVuZGVudE9iamVjdHMob2JqZWN0 LAorCQkJCQkJIERFUEZMQUdfT1JJR0lOQUwsCisJCQkJCQkgZmxhZ3MsCisJCQkJCQkgTlVM TCwJLyogZW1wdHkgc3RhY2sgKi8KKwkJCQkJCSB0YXJnZXRPYmplY3RzLAorCQkJCQkJIE5V TEwsCS8qIG5vIHBlbmRpbmdPYmplY3RzICovCisJCQkJCQkgJmRlcFJlbCk7CisKKwkvKgor CSAqIENoZWNrIGlmIGRlbGV0aW9uIGlzIGFsbG93ZWQuCisJICovCisJcmVwb3J0RGVwZW5k ZW50T2JqZWN0cyh0YXJnZXRPYmplY3RzLAorCQkJCQkJICAgYmVoYXZpb3IsCisJCQkJCQkg ICBmbGFncywKKwkJCQkJCSAgIG9iamVjdCk7CisKKwkvKiBBbmQgY2xlYW4gdXAgKi8KKwlm cmVlX29iamVjdF9hZGRyZXNzZXModGFyZ2V0T2JqZWN0cyk7CisKKwl0YWJsZV9jbG9zZShk ZXBSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogcGVyZm9ybU11bHRpcGxl RGVsZXRpb25zOiBTaW1pbGFyIHRvIHBlcmZvcm1EZWxldGlvbiwgYnV0IGFjdCBvbiBtdWx0 aXBsZQogICogb2JqZWN0cyBhdCBvbmNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCAxMGY0M2M1 MWM1Li42OTZmODBiZTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMTAyLDExICsxMDIsMTEg QEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQWRkTmV3UmVsYXRpb25UeXBlKGNvbnN0IGNoYXIg KnR5cGVOYW1lLAogCQkJCQkJCQkJCU9pZCBuZXdfcm93X3R5cGUsCiAJCQkJCQkJCQkJT2lk IG5ld19hcnJheV90eXBlKTsKIHN0YXRpYyB2b2lkIFJlbGF0aW9uUmVtb3ZlSW5oZXJpdGFu Y2UoT2lkIHJlbGlkKTsKK3N0YXRpYyB2b2lkIFN0b3JlQ29uc3RyYWludHMoUmVsYXRpb24g cmVsLCBMaXN0ICpjb29rZWRfY29uc3RyYWludHMsCisJCQkJCQkJIGJvb2wgaXNfaW50ZXJu YWwpOwogc3RhdGljIE9pZAlTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hh ciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJICBib29sIGlzX2VuZm9yY2VkLCBib29s IGlzX3ZhbGlkYXRlZCwgYm9vbCBpc19sb2NhbCwKIAkJCQkJCSAgaW50MTYgaW5oY291bnQs IGJvb2wgaXNfbm9faW5oZXJpdCwgYm9vbCBpc19pbnRlcm5hbCk7Ci1zdGF0aWMgdm9pZCBT dG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRz LAotCQkJCQkJCSBib29sIGlzX2ludGVybmFsKTsKIHN0YXRpYyBib29sIE1lcmdlV2l0aEV4 aXN0aW5nQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9k ZSAqZXhwciwKIAkJCQkJCQkJCQlib29sIGFsbG93X21lcmdlLCBib29sIGlzX2xvY2FsLAog CQkJCQkJCQkJCWJvb2wgaXNfZW5mb3JjZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3Ry YWludC5jCmluZGV4IDJkNWFjMWVhODEuLjFmOTQ4ODc2ZDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfY29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVsYXRpb25HZXROb3RO dWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9vbCBpbmNsdWRlX25v aW5oKQogCQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3RyLT5pc19lbmZvcmNl ZCA9IHRydWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFjb25Gb3JtLT5jb252 YWxpZGF0ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQljb25z dHItPmluaXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKIAkJCWNvbnN0 ci0+aXNfbm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsKIAkJCW5vdG51bGxz ID0gbGFwcGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCBlYTk2OTQ3ZDgxLi43ZjYzZGYwNjEyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtNzQwLDYgKzc0MCw4IEBAIHN0YXRpYyB2b2lkIEFURGV0YWNo Q2hlY2tOb0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hh ciBHZXRBdHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNv bXByZXNzaW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5 cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2b2lkIEFURXhlY01l cmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmluZVJl bGF0aW9uCkBAIC00ODM0LDYgKzQ4MzYsMTAgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChM aXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j azsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJY21k X2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJZGVm YXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRl ciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTI2 OSw2ICs1Mjc1LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWws IEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBu ZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlw ZSwgcmVsLCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVj aWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsK QEAgLTU2NjUsNiArNTY3NiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgog CQkJYWRkcmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwgKChQYXJ0 aXRpb25DbWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFrOworCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0 YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBj b250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNN ZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZiwKKwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkv KiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5 cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3MDUsNiArNjcyNCw4 IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUp CiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTEla RSI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJU SVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09M VU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjAx NjksNiArMjAxOTAsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihM aXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFj aFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRp b25lZCB0YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxFIHdvcmsgcXVldWU7 IGNhbiBiZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICogICBvZiBhbiBBTFRF UiBUQUJMRSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVsYXRpb247CisgKiBh dHRhY2hyZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsKKyAqIGJvdW5kOiBi b3VuZHMgb2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCithdHRhY2hQ YXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGF0 dGFjaHJlbCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkvKiBPSyB0byBjcmVh dGUgaW5oZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICov CisJQ3JlYXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOworCisJLyogVXBk YXRlIHRoZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFj aHJlbCwgcmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVj dCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0dGFjaFBhcnRpdGlv bkVuc3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisKKwkvKiBhbmQgdHJp Z2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwp OworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBp cyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFp bnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdx dWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxURVIgVEFCTEUgPG5hbWU+ IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFMVUVTCiAgKgpAQCAt MjAzNzIsMjMgKzIwNDI0LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hlY2tfbmV3X3BhcnRp dGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwpLCByZWwsCiAJ CQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8gY3JlYXRlIGluaGVy aXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVyZSAqLwotCUNyZWF0 ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQotCS8qIFVwZGF0ZSB0aGUg cGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRhY2hyZWwsIHJl bCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBz ZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFjaFBhcnRpdGlvbkVu c3VyZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKiBhbmQgdHJpZ2dl cnMgKi8KLQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOwot Ci0JLyoKLQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyBy ZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQg dmVyaWZpY2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1 ZSwgcmVsLCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhl IHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKHdxdWV1ZSwg cmVsLCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBHZW5lcmF0ZSBwYXJ0 aXRpb24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgc3BlY2lmaWNhdGlv bi4KQEAgLTIyMDM1LDMgKzIyMDcyLDg0MCBAQCBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBh dHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1cm4gY3N0b3JhZ2U7 CiB9CisKKworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlczogYnVpbGQg dGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMKKyAqIGZvciBuZXcgcGFy dGl0aW9uIChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxpemUgZXhwcmVzc2lvbnMg Zm9yCisgKiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Npb25zIHNob3VsZCBiZSBj cmVhdGVkIGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1Y3R1cmUpLgorICov CitzdGF0aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRlICplc3RhdGUpCit7 CisJLyogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMuICov CisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNvbnN0cmFpbnRzKQor CXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSX0NIRUNL OgorCQkJCWNvbi0+cXVhbHN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChFeHByICopIGV4cGFu ZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNvbi0+cXVhbCwgbmV3UGFydFJlbCwgMSks IGVzdGF0ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8q IE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX05P VE5VTEw6CisJCQkJLyogTm90aGluZyB0byBkbyBoZXJlLiAqLworCQkJCWJyZWFrOworCQkJ ZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbnN0cmFpbnQgdHlw ZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQorCX0KKworCWZvcmVh Y2hfcHRyKE5ld0NvbHVtblZhbHVlLCBleCwgdGFiLT5uZXd2YWxzKQorCXsKKwkJLyogRXhw cmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQuICovCisJCWV4LT5leHByc3RhdGUgPSBFeGVjSW5p dEV4cHIoKEV4cHIgKikgZXgtPmV4cHIsIE5VTEwpOworCX0KK30KKworLyoKKyAqIGV2YWx1 YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBh bnkgZ2VuZXJhdGVkCisgKiBleHByZXNzaW9ucyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUlu Zm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMgY29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxl IChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3Rh dGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFp bnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIG5ld1Bh cnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdCwKKwkJCQkJ CQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4 LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0ZWQpCisJCQljb250 aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRudW0gLSAxXQorCQkJ PSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCQllY29udGV4dCwKKwkJCQkJ CQkmaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbFtleC0+YXR0bnVtIC0gMV0pOworCX0KKworCWZv cmVhY2hfcHRyKE5ld0NvbnN0cmFpbnQsIGNvbiwgdGFiLT5jb25zdHJhaW50cykKKwl7CisJ CXN3aXRjaCAoY29uLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNUUl9DSEVDSzoKKwkJ CQlpZiAoIUV4ZWNDaGVjayhjb24tPnF1YWxzdGF0ZSwgZWNvbnRleHQpKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLAor CQkJCQkJCWVycm1zZygiY2hlY2sgY29uc3RyYWludCBcIiVzXCIgb2YgcmVsYXRpb24gXCIl c1wiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93IiwKKwkJCQkJCQkJICAgY29uLT5uYW1lLCBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShuZXdQYXJ0UmVsKSksCisJCQkJCQkJZXJydGFibGVj b25zdHJhaW50KG5ld1BhcnRSZWwsIGNvbi0+bmFtZSkpOworCQkJCWJyZWFrOworCQkJY2Fz ZSBDT05TVFJfTk9UTlVMTDoKKwkJCWNhc2UgQ09OU1RSX0ZPUkVJR046CisJCQkJLyogTm90 aGluZyB0byBkbyBoZXJlICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50 KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorfQorCisvKgorICogZ2V0QXR0cmlidXRlc0xp c3Q6IGJ1aWxkIGEgbGlzdCBvZiBjb2x1bW5zIChDb2x1bW5EZWYpIGJhc2VkIG9uIHBhcmVu dF9yZWwKKyAqLworc3RhdGljIExpc3QgKgorZ2V0QXR0cmlidXRlc0xpc3QoUmVsYXRpb24g cGFyZW50X3JlbCkKK3sKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlUdXBsZURlc2MJ bW9kZWxEZXNjOworCUxpc3QJICAgKmNvbExpc3QgPSBOSUw7CisKKwltb2RlbERlc2MgPSBS ZWxhdGlvbkdldERlc2NyKHBhcmVudF9yZWwpOworCisJZm9yIChwYXJlbnRfYXR0bm8gPSAx OyBwYXJlbnRfYXR0bm8gPD0gbW9kZWxEZXNjLT5uYXR0czsKKwkJIHBhcmVudF9hdHRubysr KQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0ciht b2RlbERlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisJCUNvbHVtbkRl ZiAgKmRlZjsKKworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQu ICovCisJCWlmIChhdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJ CWRlZiA9IG1ha2VDb2x1bW5EZWYoTmFtZVN0cihhdHRyaWJ1dGUtPmF0dG5hbWUpLCBhdHRy aWJ1dGUtPmF0dHR5cGlkLAorCQkJCQkJCWF0dHJpYnV0ZS0+YXR0dHlwbW9kLCBhdHRyaWJ1 dGUtPmF0dGNvbGxhdGlvbik7CisKKwkJZGVmLT5pc19ub3RfbnVsbCA9IGF0dHJpYnV0ZS0+ YXR0bm90bnVsbDsKKworCQkvKiBDb3B5IGlkZW50aXR5IGZvciBuZXcgcGFydGl0aW9uLiAq LworCQlkZWYtPmlkZW50aXR5ID0gYXR0cmlidXRlLT5hdHRpZGVudGl0eTsKKworCQkvKiBB ZGQgdG8gY29sdW1uIGxpc3QgKi8KKwkJY29sTGlzdCA9IGxhcHBlbmQoY29sTGlzdCwgZGVm KTsKKworCQkvKgorCQkgKiBBbHRob3VnaCB3ZSBkb24ndCB0cmFuc2ZlciB0aGUgY29sdW1u J3MgZGVmYXVsdC9nZW5lcmF0aW9uCisJCSAqIGV4cHJlc3Npb24gbm93LCB3ZSBuZWVkIHRv IG1hcmsgaXQgR0VORVJBVEVEIGlmIGFwcHJvcHJpYXRlLgorCQkgKi8KKwkJaWYgKGF0dHJp YnV0ZS0+YXR0aGFzZGVmICYmIGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkKQorCQkJZGVmLT5n ZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZDsKKworCQlkZWYtPnN0b3JhZ2Ug PSBhdHRyaWJ1dGUtPmF0dHN0b3JhZ2U7CisKKwkJLyogTGlrZXdpc2UsIGNvcHkgY29tcHJl c3Npb24gaWYgcmVxdWVzdGVkICovCisJCWlmIChDb21wcmVzc2lvbk1ldGhvZElzVmFsaWQo YXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpCisJCQlkZWYtPmNvbXByZXNzaW9uID0KKwkJ CQlwc3RyZHVwKEdldENvbXByZXNzaW9uTWV0aG9kTmFtZShhdHRyaWJ1dGUtPmF0dGNvbXBy ZXNzaW9uKSk7CisJCWVsc2UKKwkJCWRlZi0+Y29tcHJlc3Npb24gPSBOVUxMOworCX0KKwor CXJldHVybiBjb2xMaXN0OworfQorCisKKy8qCisgKiBjcmVhdGVUYWJsZUNvbnN0cmFpbnRz OgorICogY3JlYXRlIGNoZWNrIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2Vu ZXJhdGVkIHZhbHVlcyBmb3IgbmV3UmVsCisgKiBiYXNlZCBvbiBwYXJlbnRfcmVsLiAgdGFi IGlzIHBlbmRpbmctd29yayBxdWV1ZSBmb3IgbmV3UmVsLCB3ZSBtYXkgbmVlZCBpdCBpbgor ICogTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVU YWJsZUNvbnN0cmFpbnRzKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwK KwkJCQkJICAgUmVsYXRpb24gcGFyZW50X3JlbCwgUmVsYXRpb24gbmV3UmVsKQoreworCVR1 cGxlRGVzYwl0dXBsZURlc2M7CisJVHVwbGVDb25zdHIgKmNvbnN0cjsKKwlBdHRyTWFwICAg ICphdHRtYXA7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87CisJaW50CQkJY2NudW07CisJ TGlzdAkgICAqQ29uc3RyYWludHMgPSBOSUw7CisJTGlzdAkgICAqY29va2VkQ29uc3RyYWlu dHMgPSBOSUw7CisKKwl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKHBhcmVudF9yZWwp OworCWNvbnN0ciA9IHR1cGxlRGVzYy0+Y29uc3RyOworCisJaWYgKCFjb25zdHIpCisJCXJl dHVybjsKKworCS8qCisJICogQ29uc3RydWN0IGEgbWFwIGZyb20gdGhlIHBhcmVudCByZWxh dGlvbidzIGF0dG5vcyB0byB0aGUgY2hpbGQgcmVsJ3MuCisJICogVGhpcyByZS1jaGVja3Mg dHlwZSBtYXRjaCBldGMsIGFsdGhvdWdoIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0bwor CSAqIGhhdmUgYSBmYWlsdXJlIHNpbmNlIGJvdGggdGFibGVzIGFyZSBsb2NrZWQuCisJICov CisJYXR0bWFwID0gYnVpbGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobmV3 UmVsKSwKKwkJCQkJCQkJICAgdHVwbGVEZXNjLAorCQkJCQkJCQkgICBmYWxzZSk7CisKKwkv KiBDeWNsZSBmb3IgZGVmYXVsdCB2YWx1ZXMuICovCisJZm9yIChwYXJlbnRfYXR0bm8gPSAx OyBwYXJlbnRfYXR0bm8gPD0gdHVwbGVEZXNjLT5uYXR0czsgcGFyZW50X2F0dG5vKyspCisJ eworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxl RGVzYywKKwkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKworCQkvKiBJZ25vcmUg ZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQuICovCisJCWlmIChhdHRyaWJ1dGUtPmF0 dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCS8qIENvcHkgZGVmYXVsdCwgaWYgcHJl c2VudCBhbmQgaXQgc2hvdWxkIGJlIGNvcGllZC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0 aGFzZGVmKQorCQl7CisJCQlOb2RlCSAgICp0aGlzX2RlZmF1bHQgPSBOVUxMOworCQkJYm9v bAkJZm91bmRfd2hvbGVfcm93OworCQkJQXR0ck51bWJlcgludW07CisJCQlOb2RlCSAgICpk ZWY7CisJCQlOZXdDb2x1bW5WYWx1ZSAqbmV3dmFsOworCisJCQlpZiAoYXR0cmlidXRlLT5h dHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJCXRoaXNf ZGVmYXVsdCA9IGJ1aWxkX2dlbmVyYXRpb25fZXhwcmVzc2lvbihwYXJlbnRfcmVsLCBhdHRy aWJ1dGUtPmF0dG51bSk7CisJCQllbHNlCisJCQl7CisJCQkJdGhpc19kZWZhdWx0ID0gVHVw bGVEZXNjR2V0RGVmYXVsdCh0dXBsZURlc2MsIGF0dHJpYnV0ZS0+YXR0bnVtKTsKKwkJCQlp ZiAodGhpc19kZWZhdWx0ID09IE5VTEwpCisJCQkJCWVsb2coRVJST1IsICJkZWZhdWx0IGV4 cHJlc3Npb24gbm90IGZvdW5kIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gXCIlc1wi IiwKKwkJCQkJCSBhdHRyaWJ1dGUtPmF0dG51bSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cGFyZW50X3JlbCkpOworCQkJfQorCisJCQludW0gPSBhdHRtYXAtPmF0dG51bXNbcGFyZW50 X2F0dG5vIC0gMV07CisJCQlkZWYgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHRoaXNfZGVmYXVs dCwgMSwgMCwgYXR0bWFwLCBJbnZhbGlkT2lkLCAmZm91bmRfd2hvbGVfcm93KTsKKworCQkJ LyoKKwkJCSAqIFByZXZlbnQgdGhpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGZvciBjb25z dHJhaW50cyBiZWxvdy4gTm90ZQorCQkJICogdGhhdCBkZWZhdWx0cyBjYW5ub3QgY29udGFp biBhbnkgdmFycywgc28gaXQncyBPSyB0aGF0IHRoZQorCQkJICogZXJyb3IgbWVzc2FnZSBy ZWZlcnMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMuCisJCQkgKi8KKwkJCWlmIChmb3VuZF93aG9s ZV9yb3cgJiYgYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQgIT0gJ1wwJykKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVu Y2UiKSwKKwkJCQkJCWVycmRldGFpbCgiR2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBjb2x1 bW4gXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVz XCIuIiwKKwkJCQkJCQkJIE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwKKwkJCQkJCQkJ IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkJCS8qIEFkZCBh IHByZS1jb29rZWQgZGVmYXVsdCBleHByZXNzaW9uLiAqLworCQkJU3RvcmVBdHRyRGVmYXVs dChuZXdSZWwsIG51bSwgZGVmLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIFN0b3JlZCBnZW5l cmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIGluIHBhcmVudF9yZWwgbWlnaHQgcmVmZXJlbmNl CisJCQkgKiB0YWJsZW9pZC4gIG5ld1JlbCwgcGFyZW50X3JlbCB0YWJsZW9pZCBjbGVhciBp cyBub3QgdGhlIHNhbWUuIElmCisJCQkgKiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVyYXRlZCBj b2x1bW5zIHJlcXVpcmUgcmVjb21wdXRhdGlvbiBmb3IKKwkJCSAqIG5ld1JlbCB3aXRoaW4g TWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MuCisJCQkgKi8KKwkJCWlmIChhdHRyaWJ1dGUtPmF0 dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCXsKKwkJCQlu ZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFs dWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9IG51bTsKKwkJCQluZXd2YWwtPmV4cHIgPSBl eHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVmKTsKKwkJCQluZXd2YWwtPmlzX2dlbmVy YXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAhPSAnXDAnKTsKKwkJCQl0YWItPm5l d3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywgbmV3dmFsKTsKKwkJCX0KKwkJfQorCX0K KworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwlmb3IgKGNjbnVtID0g MDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsgY2NudW0rKykKKwl7CisJCWNoYXIJICAg KmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbmFtZTsKKwkJY2hhcgkgICAqY2Ni aW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2JpbjsKKwkJYm9vbAkJY2NlbmZvcmNlZCA9 IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3JjZWQ7CisJCWJvb2wJCWNjbm9pbmhlcml0 ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2luaGVyaXQ7CisJCWJvb2wJCWNjdmFsaWQg PSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlkOworCQlOb2RlCSAgICpjY2Jpbl9ub2Rl OworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCUNvbnN0cmFpbnQgKmNvbnN0cjsKKwor CQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm90IGhhdmUgTk8gSU5IRVJJVCBj aGVjayBjb25zdHJhaW50IChzZWUKKwkJICogU3RvcmVSZWxDaGVjayBmdW5jdGlvbikuCisJ CSAqLworCQlBc3NlcnQoIWNjbm9pbmhlcml0KTsKKworCQljY2Jpbl9ub2RlID0gbWFwX3Zh cmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAwLAor CQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9s ZV9yb3cpOworCisJCS8qCisJCSAqIFdlIHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzIGJl Y2F1c2UgdGhlIHdob2xlIHBvaW50IG9mIExJS0UgaXMKKwkJICogdGhhdCB0aGUgbmV3IHRh YmxlJ3Mgcm93dHlwZSBtaWdodCBsYXRlciBkaXZlcmdlIGZyb20gdGhlIHBhcmVudCdzLgor CQkgKiBTbywgd2hpbGUgdHJhbnNsYXRpb24gbWlnaHQgYmUgcG9zc2libGUgcmlnaHQgbm93 LCBpdCB3b3VsZG4ndCBiZQorCQkgKiBwb3NzaWJsZSB0byBndWFyYW50ZWUgaXQgd291bGQg d29yayBpbiBmdXR1cmUuCisJCSAqLworCQlpZiAoZm91bmRfd2hvbGVfcm93KQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCWVycm1zZygiY2Fubm90IGNvbnZlcnQgd2hvbGUtcm93IHRhYmxlIHJlZmVy ZW5jZSIpLAorCQkJCQllcnJkZXRhaWwoIkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEg d2hvbGUtcm93IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJCQkJCQkgICBjY25h bWUsCisJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsK KworCQljb25zdHIgPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwkJY29uc3RyLT5jb250eXBl ID0gQ09OU1RSX0NIRUNLOworCQljb25zdHItPmNvbm5hbWUgPSBwc3RyZHVwKGNjbmFtZSk7 CisJCWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQljb25zdHItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQljb25zdHItPmlzX2VuZm9yY2VkID0gY2NlbmZvcmNlZDsKKwkJY29u c3RyLT5za2lwX3ZhbGlkYXRpb24gPSAhY2N2YWxpZDsKKwkJY29uc3RyLT5pbml0aWFsbHlf dmFsaWQgPSBjY3ZhbGlkOworCQljb25zdHItPmlzX25vX2luaGVyaXQgPSBjY25vaW5oZXJp dDsKKwkJY29uc3RyLT5yYXdfZXhwciA9IE5VTEw7CisJCWNvbnN0ci0+Y29va2VkX2V4cHIg PSBub2RlVG9TdHJpbmcoY2NiaW5fbm9kZSk7CisJCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsK KwkJQ29uc3RyYWludHMgPSBsYXBwZW5kKENvbnN0cmFpbnRzLCBjb25zdHIpOworCX0KKwor CS8qIGluc3RhbGwgYWxsIENIRUNLIGNvbnN0cmFpbnRzLiAqLworCWNvb2tlZENvbnN0cmFp bnRzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgQ29uc3RyYWlu dHMsCisJCQkJCQkJCQkJCQkgIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKworCS8qIE1h a2UgdGhlIGFkZGl0aW9uYWwgY2F0YWxvZyBjaGFuZ2VzIHZpc2libGUgKi8KKwlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkgKiBwYXJlbnRfcmVsIGNoZWNrIGNvbnN0 cmFpbnQgZXhwcmVzc3Npb24gbWF5IHJlZmVyZW5jZSB0YWJsZW9pZCwgc28gbGF0ZXIKKwkg KiBpbiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywgd2UgbmVlZCBldnVsYXRlIHRoZSBjaGVj ayBjb25zdHJhaW50IGFnYWluCisJICogZm9yIHRoZSBuZXdSZWwuIFdlIGNhbiBjaGVjayB3 ZWF0aGVyIGNoZWNrIGNvbnN0cmFpbnQgY29udGFpbiB0YWJsZW9pZAorCSAqIHJlZmVyZW5j ZSBvciBub3QgdmlhIHB1bGxfdmFyYXR0bm9zLgorCSAqLworCWZvcmVhY2hfcHRyKENvb2tl ZENvbnN0cmFpbnQsIGNjb24sIGNvb2tlZENvbnN0cmFpbnRzKQorCXsKKwkJaWYgKCFjY29u LT5za2lwX3ZhbGlkYXRpb24gJiYgY2Nvbi0+Y29udHlwZSA9PSBDT05TVFJfQ0hFQ0spCisJ CXsKKwkJCU5vZGUJCSpxdWFsOworCQkJQml0bWFwc2V0CSAgKmF0dG51bXMgPSBOVUxMOwor CisJCQlxdWFsID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY2Nvbi0+ZXhw ciwgbmV3UmVsLCAxKTsKKwkJCXB1bGxfdmFyYXR0bm9zKHF1YWwsIDEsICZhdHRudW1zKTsK KworCQkJLyoKKwkJCSAqIEFkZCBjaGVjayBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhYmxlb2lk IChUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikuCisJCQkgKi8KKwkJCWlmIChibXNfaXNfbWVt YmVyKFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciwKKwkJCQkJCQkgIGF0dG51bXMpKQorCQkJeworCQkJCU5ld0NvbnN0cmFp bnQgKm5ld2NvbjsKKworCQkJCW5ld2NvbiA9IChOZXdDb25zdHJhaW50ICopIHBhbGxvYzAo c2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJCQluZXdjb24tPm5hbWUgPSBjY29uLT5uYW1l OworCQkJCW5ld2Nvbi0+Y29udHlwZSA9IGNjb24tPmNvbnR5cGU7CisJCQkJbmV3Y29uLT5x dWFsID0gcXVhbDsKKworCQkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29u c3RyYWludHMsIG5ld2Nvbik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEb24ndCBuZWVkIHRo ZSBjb29rZWRDb25zdHJhaW50cyBhbnkgbW9yZS4gKi8KKwlsaXN0X2ZyZWVfZGVlcChjb29r ZWRDb25zdHJhaW50cyk7CisKKwkvKiBSZXByb2R1Y2Ugbm90LW51bGwgY29uc3RyYWludHMu ICovCisJaWYgKGNvbnN0ci0+aGFzX25vdF9udWxsKQorCXsKKwkJTGlzdAkgICAqbm5jb25z dHJhaW50czsKKworCQkvKgorCQkgKiBUaGUgImluY2x1ZGVfbm9pbmgiIGFyZ3VtZW50IGlz IGZhbHNlIGJlY2F1c2UgYSBwYXJ0aXRpb25lZCB0YWJsZQorCQkgKiBjYW5ub3QgaGF2ZSBO TyBJTkhFUklUIGNvbnN0cmFpbnQuCisJCSAqLworCQlubmNvbnN0cmFpbnRzID0gUmVsYXRp b25HZXROb3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb25HZXRSZWxpZChwYXJlbnRfcmVsKSwK KwkJCQkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3Ro KG5uY29uc3RyYWludHMpID4gMCk7CisKKwkJLyoKKwkJICogV2UgYWxyZWFkeSBzZXQgcGdf YXR0cmlidXRlLmF0dG5vdG51bGwgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUuIE5vCisJCSAq IG5lZWQgY2FsbCBzZXRfYXR0bm90bnVsbCBhZ2Fpbi4KKwkJKi8KKwkJQWRkUmVsYXRpb25O ZXdDb25zdHJhaW50cyhuZXdSZWwsIE5JTCwgbm5jb25zdHJhaW50cywgZmFsc2UsIHRydWUs IHRydWUsIE5VTEwpOworCX0KK30KKworCisvKgorICogY3JlYXRlUGFydGl0aW9uVGFibGU6 CisgKgorICogQ3JlYXRlIGEgbmV3IHBhcnRpdGlvbiAobmV3UGFydE5hbWUpIGZvciBwYXJ0 aXRpb25lZCB0YWJsZSAocGFyZW50X3JlbCkuCisgKiBvd25lcklkIGlzIGRldGVybWluZWQg YnkgdGhlIHBhcnRpdGlvbiBvbiB3aGljaCB0aGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCwK KyAqIHNvIGl0IGlzIHBhc3NlZCBzZXBhcmF0ZWx5LiAgVGhlIG5ldyBwYXJ0aXRpb24gd2ls bCBpbmhlcml0IHRoZSBhY2Nlc3MgbWV0aG9kCisgKiBhbmQgcGVyc2lzdGVuY2UgdHlwZSBm cm9tIHRoZSBwYXJlbnQgdGFibGUuCisgKgorICogcmV0dXJucyB0aGUgY3JlYXRlZCByZWxh dGlvbiAobG9ja2VkIGluIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgbW9kZSkuCisgKi8KK3N0YXRp YyBSZWxhdGlvbgorY3JlYXRlUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmFuZ2VW YXIgKm5ld1BhcnROYW1lLAorCQkJCQkgUmVsYXRpb24gcGFyZW50X3JlbCwgT2lkIG93bmVy SWQpCit7CisJUmVsYXRpb24JbmV3UmVsOworCU9pZAkJCW5ld1JlbElkOworCU9pZAkJCWV4 aXN0aW5nUmVsaWQ7CisJVHVwbGVEZXNjCWRlc2NyaXB0b3I7CisJTGlzdAkgICAqY29sTGlz dCA9IE5JTDsKKwlPaWQJCQlyZWxhbUlkOworCU9pZAkJCW5hbWVzcGFjZUlkOworCUFsdGVy ZWRUYWJsZUluZm8gKm5ld19wYXJ0cmVsX3RhYjsKKworCS8qIElmIGV4aXN0aW5nIHJlbCBp cyB0ZW1wLCBpdCBtdXN0IGJlbG9uZyB0byB0aGlzIHNlc3Npb24gKi8KKwlpZiAoUkVMQVRJ T05fSVNfT1RIRVJfVEVNUChwYXJlbnRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQll cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90 IGNyZWF0ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIg c2Vzc2lvbiIpKTsKKworCS8qIExvb2sgdXAgaW5oZXJpdGFuY2UgYW5jZXN0b3JzIGFuZCBn ZW5lcmF0ZSByZWxhdGlvbiBzY2hlbWEuICovCisJY29sTGlzdCA9IGdldEF0dHJpYnV0ZXNM aXN0KHBhcmVudF9yZWwpOworCisJLyogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9t IHRoZSByZWxhdGlvbiBzY2hlbWEuICovCisJZGVzY3JpcHRvciA9IEJ1aWxkRGVzY0ZvclJl bGF0aW9uKGNvbExpc3QpOworCisJLyogTG9vayB1cCB0aGUgYWNjZXNzIG1ldGhvZCBmb3Ig bmV3IHJlbGF0aW9uLiAqLworCXJlbGFtSWQgPSAocGFyZW50X3JlbC0+cmRfcmVsLT5yZWxh bSAhPSBJbnZhbGlkT2lkKSA/IHBhcmVudF9yZWwtPnJkX3JlbC0+cmVsYW0gOiBIRUFQX1RB QkxFX0FNX09JRDsKKworCS8qIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3ZSBh cmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlvbi4gKi8KKwluYW1lc3BhY2VJZCA9 CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShuZXdQYXJ0TmFtZSwg Tm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisJaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxp ZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9U QUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBu ZXdQYXJ0TmFtZS0+cmVsbmFtZSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4gKi8K KwluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+cmVs bmFtZSwKKwkJCQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQlwYXJlbnRfcmVsLT5y ZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJb3duZXJJ ZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJCQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJCQkJ CQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkJbmV3UGFy dE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZh bHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkJKERhdHVtKSAwLAor CQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJYWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJCQkJ CQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCU5VTEwpOwor CisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRo ZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uCisJICogdHVwbGUgdmlzaWJsZSBmb3Igb3Blbmlu Zy4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkgKiBPcGVu IHRoZSBuZXcgcGFydGl0aW9uIHdpdGggbm8gbG9jaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGhh dmUKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHBsYWNlZCB0aGVyZSBhZnRlciBjcmVhdGlv bi4KKwkgKi8KKwluZXdSZWwgPSB0YWJsZV9vcGVuKG5ld1JlbElkLCBOb0xvY2spOworCisJ LyogRmluZCBvciBjcmVhdGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3bHkgY3JlYXRlZCB0 YWJsZS4gKi8KKwluZXdfcGFydHJlbF90YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBu ZXdSZWwpOworCisJLyoKKwkgKiBXZSBpbnRlbmRlZCB0byBjcmVhdGUgdGhlIHBhcnRpdGlv biB3aXRoIHRoZSBzYW1lIHBlcnNpc3RlbmNlIGFzIHRoZQorCSAqIHBhcmVudCB0YWJsZSwg YnV0IHdlIHN0aWxsIG5lZWQgdG8gcmVjaGVjayBiZWNhdXNlIHRoYXQgbWlnaHQgYmUKKwkg KiBhZmZlY3RlZCBieSB0aGUgc2VhcmNoX3BhdGguICBJZiB0aGUgcGFyZW50IGlzIHBlcm1h bmVudCwgc28gbXVzdCBiZQorCSAqIGFsbCBvZiBpdHMgcGFydGl0aW9ucy4KKwkgKi8KKwlp ZiAocGFyZW50X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5D RV9URU1QICYmCisJCW5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9y YXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wi IiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKwor CS8qIFBlcm1hbmVudCByZWxzIGNhbm5vdCBiZSBwYXJ0aXRpb25zIGJlbG9uZ2luZyB0byB0 ZW1wb3JhcnkgcGFyZW50ICovCisJaWYgKG5ld1JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJCXBhcmVudF9yZWwtPnJkX3JlbC0+cmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygi Y2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVt cG9yYXJ5IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBhcmVudF9yZWwpKSk7CisKKwkvKiBDcmVhdGUgY29uc3RyYWludHMsIGRlZmF1bHQg dmFsdWVzIGFuZCBnZW5lcmF0ZWQgdmFsdWVzICovCisJY3JlYXRlVGFibGVDb25zdHJhaW50 cyh3cXVldWUsIG5ld19wYXJ0cmVsX3RhYiwgcGFyZW50X3JlbCwgbmV3UmVsKTsKKworCS8q CisJICogTmVlZCB0byBjYWxsIENvbW1hbmRDb3VudGVySW5jcmVtZW50LCBzbyBmcmVzaCBy ZWxjYWNoZSBlbnRyeSBoYXZlIG5ld2x5CisJICogaW5zdGFsbGVkIGNvbnN0cmFpbnQgaW5m by4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJcmV0dXJuIG5ld1Jl bDsKK30KKworLyoKKyAqIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzOiBzY2FuIHBhcnRpdGlv bnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFydGl0aW9ucykKKyAqIG9mIHRoZSBwYXJ0aXRp b25lZCB0YWJsZSBhbmQgbW92ZSByb3dzIGludG8gdGhlIG5ldyBwYXJ0aXRpb24KKyAqIChu ZXdQYXJ0UmVsKS4gV2UgYWxzbyByZWV2YXVsYXRlIGNoZWNrIGNvbnN0cmFpbnRzIGFnYWlu c3QgdGhlc2Ugcm93cy4KKyAqLworc3RhdGljIHZvaWQKK01lcmdlUGFydGl0aW9uc01vdmVS b3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0UmVsKQoreworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsK KwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOworCUxp c3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3Ro ZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQ X0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVsayBpbnNl cnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKworCS8q IEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6IG5l d1BhcnRSZWwuICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UGFydFJl bCk7CisKKwkvKiBHZW5lcmF0ZSB0aGUgY29uc3RyYWludCBhbmQgZGVmYXVsdCBleGVjdXRp b24gc3RhdGVzLiAqLworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWJ1 aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyh0YWIsIG5ld1BhcnRSZWwsIGVzdGF0ZSk7 CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCW15 Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxr SW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0 QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3Qu ICovCisJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKG5ld1BhcnRSZWwsIE5VTEwpOwor CisJZm9yZWFjaF9vaWQobWVyZ2luZ19vaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJ VHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVf bWFwOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCVNuYXBzaG90CXNuYXBzaG90OworCQlS ZWxhdGlvbiAJbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb24gaXMg YWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCisJ CSAqIGZ1bmN0aW9uLgorCQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbiA9IHRhYmxlX29wZW4o bWVyZ2luZ19vaWQsIE5vTG9jayk7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5l dyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShtZXJnaW5n UGFydGl0aW9uLCBOVUxMKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3Zp bmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRp b24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0 aW9uR2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJCQkJICAgUmVsYXRpb25H ZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAq LworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3Qs IDAsIE5VTEwpOworCisJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3Qg Kmluc2VydHNsb3Q7CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlmICh0 dXBsZV9tYXApCisJCQl7CisJCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmli dXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxl X21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7 CisJCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0cmli dXRlcyBkaXJlY3RseS4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4 ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0 c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkg KiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lz bnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jj c2xvdC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0 c2xvdCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVE IGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNvbHVt biwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZAorCQkJICogdmFsdWUu ICAoV2UgbXVzdCBkbyB0aGlzIGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzCisJCQkgKiBv dmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdzIE9JRCBkdXJpbmcgc3RvcmluZy4pCisJCQkgKi8K KwkJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFy dFJlbCk7CisKKwkJCS8qCisJCQkgKiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhw cmVzc2lvbnMgd2hvc2UgaW5wdXRzIGNvbWUgZnJvbQorCQkJICogdGhlIG5ldyB0dXBsZS4g IFdlIGFzc3VtZSB0aGVzZSBjb2x1bW5zIHdvbid0IHJlZmVyZW5jZSBlYWNoCisJCQkgKiBv dGhlciwgc28gdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVuY3kuCisJCQkgKi8K KwkJCWV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKHRh YiwgbmV3UGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0KTsK KworCQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLwor CQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLAor CQkJCQkJCSAgIHRpX29wdGlvbnMsIGJpc3RhdGUpOworCisJCQlSZXNldEV4cHJDb250ZXh0 KGVjb250ZXh0KTsKKwkJfQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0 ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29u dmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVT bG90KHNyY3Nsb3QpOworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2sp OworCX0KKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUp OworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMp OworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHByb2Nlc3MgdGhpcyBuZXdQYXJ0UmVsIHNp bmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGluIGhlcmUsCisJICogc28gZGVsZXRlIHRoZSBB TFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8KKwlmb3JlYWNoKGx0YWIsICp3cXVldWUp CisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmlyc3QobHRhYik7CisJCWlm ICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFydFJlbCkpCisJCQkqd3F1 ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsKKwl9Cit9CisKKy8qCisg KiBkZXRhY2hQYXJ0aXRpb25UYWJsZTogZGV0YWNoIHBhcnRpdGlvbiAiY2hpbGRfcmVsIiBm cm9tIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAicGFyZW50X3JlbCIgd2l0aCBkZWZhdWx0IHBh cnRpdGlvbiBpZGVudGlmaWVyICJkZWZhdWx0UGFydE9pZCIKKyAqLworc3RhdGljIHZvaWQK K2RldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIGNo aWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFJlbW92ZSB0aGUgcGdfaW5o ZXJpdHMgcm93IGZpcnN0LiAqLworCVJlbW92ZUluaGVyaXRhbmNlKGNoaWxkX3JlbCwgcGFy ZW50X3JlbCwgZmFsc2UpOworCisJLyoKKwkgKiBEZXRhY2hpbmcgdGhlIHBhcnRpdGlvbiBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2 ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOworCisJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNo aW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHBhcmVudF9yZWwsIGNoaWxkX3Jl bCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9 CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0 aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgorICovCitzdGF0aWMgdm9pZAorQVRF eGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxl VXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JbmV3UGFydFJlbDsKKwlM aXN0CSAgICptZXJnaW5nUGFydGl0aW9ucyA9IE5JTDsKKwlPaWQJCQlkZWZhdWx0UGFydE9p ZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCU9pZAkJCW93bmVySWQgPSBJbnZhbGlkT2lk OworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CisJaW50 CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwkvKgorCSAqIENoZWNrIG93bmVyc2hpcCBvZiBtZXJn ZWQgcGFydGl0aW9ucyDigJQgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKKwkg KiBjYW5ub3QgYmUgbWVyZ2VkLiBBbHNvLCBjb2xsZWN0IHRoZSBPSURzIG9mIHRoZXNlIHBh cnRpdGlvbnMgZHVyaW5nIHRoZQorCSAqIGNoZWNrLgorCSovCisJZm9yZWFjaF9ub2RlKFJh bmdlVmFyLCBuYW1lLCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1Bh cnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1v dmUgdGhpcyBwYXJ0aXRpb24uICBXZSBhbHJlYWR5IHRvb2sKKwkJICogQWNjZXNzRXhjbHVz aXZlTG9jayBsb2NrIG9uIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlLCBzbyBoZXJl LAorCQkgKiBOb0xvY2sgaXMgZmluZS4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0 YWJsZV9vcGVucnZfZXh0ZW5kZWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisJCUFzc2VydChD aGVja1JlbGF0aW9uTG9ja2VkQnlNZShtZXJnaW5nUGFydGl0aW9uLCBBY2Nlc3NFeGNsdXNp dmVMb2NrLCBmYWxzZSkpOworCisJCWlmIChPaWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJ CQkvKiBEbyB0aGUgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3du ZXJzPyAqLworCQkJaWYgKG93bmVySWQgIT0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5y ZWxvd25lcikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcg bWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25l cklkID0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9y ZSBhIG5leHQgbWVyZ2luZyBwYXJ0aXRpb24gaW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2lu Z1BhcnRpdGlvbnMgPSBsYXBwZW5kX29pZChtZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJCQkJ CQlSZWxhdGlvbkdldFJlbGlkKG1lcmdpbmdQYXJ0aXRpb24pKTsKKworCQl0YWJsZV9jbG9z ZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICogTG9vayB1cCBl eGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUsIGNoZWNrIHdlIGhhdmUK KwkgKiBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdCBhZ2FpbnN0IGNvbmN1 cnJlbnQgZHJvcCwgYW5kIG1hcmsKKwkgKiBzdG10LT5yZWxhdGlvbiBhcyBSRUxQRVJTSVNU RU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcworCSAqIHNlbGVjdGVkLgor CSAqLworCWNtZC0+bmFtZS0+cmVscGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVy c2lzdGVuY2U7CisJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKGNtZC0+ bmFtZSwgTm9Mb2NrLCAmZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRo aXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBkZXRlY3QgdGhl CisJICogc2l0dWF0aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgaGFz IHRoZSBzYW1lIG5hbWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90aGVyd2lzZSwg dGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hpbmcKKwkgKiB0aGlz IGhlcmUgYWxsb3dzIHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCSAqLwor CWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJT2lkCQluZXdQYXJ0aXRp b25PaWQgPSBJbnZhbGlkT2lkOworCisJCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25P aWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCQl7CisJCQlpZiAobWVyZ2luZ1BhcnRpdGlvbk9p ZCA9PSBleGlzdGluZ1JlbGlkKQorCQkJeworCQkJCW5ld1BhcnRpdGlvbk9pZCA9IG1lcmdp bmdQYXJ0aXRpb25PaWQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoT2lkSXNW YWxpZChuZXdQYXJ0aXRpb25PaWQpKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBwYXJ0 aXRpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJCSAqIHBhcnRp dGlvbnMuCisJCQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCisJ CQkvKiBHZW5lcmF0ZSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVsTmFt ZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlk KTsKKworCQkJLyoKKwkJCSAqIFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdpdGgg YSB0ZW1wb3JhcnkgbmFtZSwgbGVhdmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5ldyBw YXJ0aXRpb24uICBXZSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICogaW4g dGhlIGZ1dHVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0aGUK KwkJCSAqIGV4aXN0aW5nIHBhcnRpdGlvbiBhbnl3YXkuCisJCQkgKi8KKwkJCVJlbmFtZVJl bGF0aW9uSW50ZXJuYWwobmV3UGFydGl0aW9uT2lkLCB0bXBSZWxOYW1lLCB0cnVlLCBmYWxz ZSk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0 byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uCisJCQkgKiB0dXBsZSB2aXNpYmxlIGZvciByZW5h bWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlz dHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKTsKKwkJfQorCX0KKworCWRlZmF1bHRQYXJ0T2lk ID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRp b25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyogRGV0YWNoIGFsbCBtZXJnZWQgcGFydGl0aW9u cyAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRp b25zKQorCXsKKwkJUmVsYXRpb24JY2hpbGRfcmVsOworCisJCWNoaWxkX3JlbCA9IHRhYmxl X29wZW4obWVyZ2luZ1BhcnRpdGlvbk9pZCwgTm9Mb2NrKTsKKworCQlkZXRhY2hQYXJ0aXRp b25UYWJsZShyZWwsIGNoaWxkX3JlbCwgZGVmYXVsdFBhcnRPaWQpOworCisJCXRhYmxlX2Ns b3NlKGNoaWxkX3JlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVs aW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcCBh bGwKKwkgKiBtZXJnaW5nIHBhcnRpdGlvbnMgYmVmb3JlIHdlIGFjdHVhbGx5IGRvIHNvIGxh dGVyLiBBZnRlciBtZXJnaW5nIHJvd3MKKwkgKiBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucyB2 aWEgTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MsIGFsbCBvbGQgcGFydGl0aW9ucworCSAqIG5l ZWQgYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2UgdGhlIGRyb3AgYmVoYXZpb3IgaXMgRFJP UF9SRVNUUklDVCBhbmQKKwkgKiB0aGUgbWVyZ2UgcHJvY2VzcyAoTWVyZ2VQYXJ0aXRpb25z TW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVh cmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlz CisJICogcHJlZmVyYWJsZS4KKwkgKi8KKwlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9u T2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0Owor CisJCS8qIEdldCBvaWQgb2YgdGhlIGxhdGVyIHRvIGJlIGRyb3BwZWQgcmVsYXRpb24gKi8K KwkJb2JqZWN0Lm9iamVjdElkID0gbWVyZ2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0LmNs YXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7 CisKKwkJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgUEVS Rk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CisJfQorCisJLyogQ3JlYXRlIHRhYmxlIGZvciBu ZXcgcGFydGl0aW9uLCB1c2UgcGFydGl0aW9uZWQgdGFibGUgYXMgbW9kZWwuICovCisJQXNz ZXJ0KE9pZElzVmFsaWQob3duZXJJZCkpOworCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRp b25UYWJsZSh3cXVldWUsIGNtZC0+bmFtZSwgcmVsLCBvd25lcklkKTsKKworCS8qCisJICog U3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXgg ZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sgZG93biBz ZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBtYWtl IEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgorCSAq IE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQYXJ0 aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVf dXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChv d25lcklkLAorCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNU RURfT1BFUkFUSU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwor CVJlc3RyaWN0U2VhcmNoUGF0aCgpOworCisJLyogQ29weSBkYXRhIGZyb20gbWVyZ2VkIHBh cnRpdGlvbnMgdG8gbmV3IHBhcnRpdGlvbi4gKi8KKwlNZXJnZVBhcnRpdGlvbnNNb3ZlUm93 cyh3cXVldWUsIG1lcmdpbmdQYXJ0aXRpb25zLCBuZXdQYXJ0UmVsKTsKKworCS8qIERyb3Ag dGhlIGN1cnJlbnQgcGFydGl0aW9ucyBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcgb25lLiAq LworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25z KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJb2JqZWN0Lm9iamVjdElkID0g bWVyZ2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0 aW9uSWQ7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9u KCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKworCWxpc3RfZnJlZShtZXJnaW5n UGFydGl0aW9ucyk7CisKKwkvKgorCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhl IHBhcnRpdGlvbmVkIHRhYmxlLiB3cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBm b3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFj aFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisK KwkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQ YXJ0UmVsLCBOb0xvY2spOworCisJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVj dXRlZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZl X25lc3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4 dC4gKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19j b250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDUwZjUzMTU5ZDUuLjQ2YmJkY2JjNzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtNzU1LDcgKzc1NSw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9W RVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExF TCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQg UEFUSAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFS VElUSU9OUyBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQRVJJT0QgUExBQ0lORyBQTEFOIFBM QU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJF UEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBS T0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KQEAgLTIzMzEsNiArMjMz MSw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0 aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJ CQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNl OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNDUsNiArMjM0Niw3IEBA IHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb247 CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJ Y21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gJDQ7CiAJCQkJ CW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM1OCw2ICsyMzYwLDIxIEBAIHBhcnRp dGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6 ZTsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJ CQljbWQtPnBhcnRsaXN0ID0gTklMOworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsK KwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5U TyA8cGFydGl0aW9uX25hbWU+ICovCisJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxp ZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUKKwkJCQl7CisJCQkJCUFs dGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0 aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5 cGUgPSBBVF9NZXJnZVBhcnRpdGlvbnM7CisJCQkJCWNtZC0+bmFtZSA9ICQ3OworCQkJCQlj bWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ0OwogCQkJCQljbWQt PmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCQkJ CQkkJCA9IChOb2RlICopIG47CkBAIC0yMzc0LDYgKzIzOTEsNyBAQCBpbmRleF9wYXJ0aXRp b25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJCQlj bWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFy dGxpc3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5k ZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3ODc2LDYgKzE3ODk0LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04K KwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBB VEgKQEAgLTE4NTAzLDYgKzE4NTIyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQ QVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwog CQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCmluZGV4IDYyMDE1NDMxZmQuLmY1NWFkMTc1MjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRl ICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29s bGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCkBAIC01OCw2 ICs1OSw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNp bmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAg LTM0ODgsNiArMzQ5MSwxMzggQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQs IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisgKiBjaGVja1BhcnRpdGlv bgorICogQ2hlY2sgd2hldGhlciBwYXJ0UmVsT2lkIGlzIGEgbGVhZiBwYXJ0aXRpb24gb2Yg dGhlIHBhcmVudCB0YWJsZSAocmVsKS4KKyAqIFBhcnRpdGlvbiB3aXRoIE9JRCBwYXJ0UmVs T2lkIG11c3QgYmUgbG9ja2VkIGJlZm9yZSBmdW5jdGlvbiBjYWxsLgorICovCitzdGF0aWMg dm9pZAorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK3sK KwlSZWxhdGlvbglwYXJ0UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJlbE9p ZCwgTm9Mb2NrKTsKKworCWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lO RF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMg ZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVs LT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBh cnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2Fu IG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwor CisJaWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxh dGlvbkdldFJlbGlkKHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4g b25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisK Kwl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3Jt UGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZv ciBtZXJnZWQgcGFydGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAq IHBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZv ck1lcmdlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkK K3sKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9u CXBhcmVudCA9IGN4dC0+cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRl Z3k7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlp c0RlZmF1bHRQYXJ0ID0gZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlr ZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0 X3BhcnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9IQVNIKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhh c2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIElzIGN1 cnJlbnQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRP aWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlv bkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBh cnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3Qo bGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBk aWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQt PnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJ CVJhbmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisK KwkJCWlmIChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0 aXRpb24gd2l0aCBuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1l KSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0 aW9uKSk7CisJCX0KKworCQkvKgorCQkgKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4g dGhlIGxpc3QuIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9ucyBiZWZvcmUKKwkJICogY2FsY3Vs YXRpbmcgdGhlIGJvdW5kYXJ5IGZvciByZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvIGNo ZWNrIGZvcgorCQkgKiBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNl IEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgaGVyZSwKKwkJICogYmVjYXVzZSB0aGVzZSBtZXJnZWQg cGFydGl0aW9ucyB3aWxsIGJlIGRldGFjaGVkIHRoZW4gZHJvcHBlZCBpbgorCQkgKiBBVEV4 ZWNNZXJnZVBhcnRpdGlvbnMuCisJCSAqLworCQlwYXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxp ZEV4dGVuZGVkKG5hbWUsCisJCQkJCQkJCQkJICAgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJ CQkJCQkJCQkgICBmYWxzZSwKKwkJCQkJCQkJCQkgICBSYW5nZVZhckNhbGxiYWNrT3duc1Jl bGF0aW9uLAorCQkJCQkJCQkJCSAgIE5VTEwpOworCisJCWlmIChwYXJ0T2lkID09IGRlZmF1 bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7CisKKwkJLyoKKwkJICogRXh0 ZW5kZWQgY2hlY2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRpb24gY2FuIGhhdmUgZGlmZmVy ZW50IG5hbWVzCisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRfbmFtZSIgYW5kICJwdWJsaWMu cGFydF9uYW1lIikuCisJCSAqLworCQlmb3JlYWNoKGxpc3RwdHIyLCBwYXJ0T2lkcykKKwkJ eworCQkJT2lkCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsKKworCQkJaWYgKGN1 ck9pZCA9PSBwYXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVS UkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGgg bmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CisJCX0K KworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRPaWRzID0g bGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJv dW5kIG9mIHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5k ID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRT cGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5k LT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0x OworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAo IWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdl KHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0 Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUpOworfQorCiAvKgogICogdHJh bnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5c2lzIGZvciBBTFRFUiBU QUJMRQpAQCAtMzc2NSw2ICszOTAwLDE5IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9p ZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQo bmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlv bnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlz dCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxpc3Qgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zIikpOwor CQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKwkJ CQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCiAJCQlkZWZhdWx0OgogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5jCmluZGV4IDRiZGMyOTQxZWYuLjlmN2MwMWI3ZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtMzIxNCw4ICszMjE0LDkgQEAgY2hlY2tf bmV3X3BhcnRpdGlvbl9ib3VuZChjaGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJlbnQsCiAJ CQkJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKIAogCQkJCQkJLyoKLQkJCQkJCSAq IFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxpc3Q7Ci0J CQkJCQkgKiBpZiB3ZSBoYXZlIGVxdWFsaXR5LCBwb2ludCB0byB0aGUgZmlyc3Qgb25lLgor CQkJCQkJICogUG9pbnQgdG8gcHJvYmxlbWF0aWMga2V5IGluIHRoZSBsaXN0IG9mIGxvd2Vy CisJCQkJCQkgKiBkYXR1bXM7IGlmIHdlIGhhdmUgZXF1YWxpdHksIHBvaW50IHRvIHRoZSBm aXJzdAorCQkJCQkJICogb25lLgogCQkJCQkJICovCiAJCQkJCQlkYXR1bSA9IGNtcHZhbCA9 PSAwID8gbGluaXRpYWwoc3BlYy0+bG93ZXJkYXR1bXMpIDoKIAkJCQkJCQlsaXN0X250aChz cGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKQEAgLTQ5NzcsMyArNDk3OCwx OTcgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQ R19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSByZW1haW5kZXIpOwogfQorCisv KgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlCisgKgorICogKGZ1bmN0 aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBl ciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4K KyAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQg YW5kIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91 bGQgYmUgZXF1YWwuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBm aXJzdF9uYW1lOgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KKyAqIGZpcnN0X2JvdW5kOgkJ Ym91bmQgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJCW5hbWUgb2Ygc2Vj b25kIHBhcnRpdGlvbgorICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNvbmQgcGFydGl0 aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0 ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3R3b19w YXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgUmFu Z2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJz dF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJCSAg UGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgUGFyc2VTdGF0 ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlv bktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmZpcnN0X3VwcGVyOworCVBh cnRpdGlvblJhbmdlQm91bmQgKnNlY29uZF9sb3dlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlB c3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJ Zmlyc3RfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGZpcnN0 X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCXNlY29uZF9sb3dlciA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcywg dHJ1ZSk7CisKKwkvKgorCSAqIGxvd2VyMT1mYWxzZSAodGhlIHNlY29uZCB0byBsYXN0IGFy Z3VtZW50KSBmb3IgY29ycmVjdCBjb21wYXJpc29uIG9mCisJICogbG93ZXIgYW5kIHVwcGVy IGJvdW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBh cnRuYXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+ cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRhdHVtcywgc2Vjb25k X2xvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBlcik7CisJaWYgKGNt cHZhbCkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vj b25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBw ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1lLT5y ZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0 byBiZSBhZGphY2VudC4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1 bS0+bG9jYXRpb24pKTsKKwl9Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3Nw ZWMKKyAqCisgKiBSZXR1cm5zIHRoZSBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHRoZSBwYXJ0 aXRpb24gd2l0aCB0aGUgZ2l2ZW4gT0lEIHBhcnRPaWQuCisgKi8KK3N0YXRpYyBQYXJ0aXRp b25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkKQor eworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJZGF0dW07CisJYm9vbAkJaXNudWxsOwor CVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmRzcGVjID0gTlVMTDsKKworCS8qIFRyeSBmZXRj aGluZyB0aGUgdHVwbGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZvciBzcGVlZC4gKi8KKwl0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIHBhcnRPaWQpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciByZWxhdGlvbiAldSIsIHBhcnRPaWQpOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo UkVMT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3VuZCwKKwkJ CQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAicGFydGl0aW9u IGJvdW5kIGZvciByZWxhdGlvbiAldSBpcyBudWxsIiwKKwkJCSBwYXJ0T2lkKTsKKworCWJv dW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisK KwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5kU3BlYykpCisJCWVsb2coRVJS T1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJlbGF0aW9uICV1IiwKKwkJ CSBwYXJ0T2lkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJvdW5k c3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdl CisgKgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVyZ2VkIHBhcnRpdGlvbiAic3Bl YyIgYnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0aW9ucyB0byBiZSBtZXJnZWQu CisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6CQlu YW1lcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRzIG9m IHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNwZWNp ZmljYXRpb24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVy IHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAq Lwordm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24g cGFyZW50LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFy dE9pZHMsCisJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQ YXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0 UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKwor CUFzc2VydCghc3BlYy0+aXNfZGVmYXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kp CisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJ CQlpOworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJaW50 CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOworCQkJCUxpc3QJICAgKmJvdW5k cyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoq KQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICop KTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcyBhbmQg bGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlmb3Jl YWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0X3Bh cnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlpID0gZm9yZWFjaF9jdXJyZW50 X2luZGV4KHBhcnRvaWQpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3Bh cnRpdGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJ CQlib3VuZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNv cnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9ib3Vu ZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkgIHFz b3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCQkJLyogUmFu Z2VzIG9mIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQkJCWZvciAoaSA9 IDE7IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWludAkJCWluZGV4ID0gbG93ZXJf Ym91bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJcHJldl9pbmRleCA9IGxvd2VyX2JvdW5k c1tpIC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19y YW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFy dE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNw ZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChS YW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkg IChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJCQkJ CQkJCQkJCQkJICBwc3RhdGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91 bmQgb2YgZmlyc3QgcGFydGl0aW9uIGlzIHRoZSBsb3dlciBib3VuZCBvZiBtZXJnZWQKKwkJ CQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1bXMgPQorCQkJ CQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5k c1swXS0+aW5kZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAqIFVwcGVyIGJv dW5kIG9mIGxhc3QgcGFydGl0aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJ CQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJ CQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5k c1tucGFydHMgLSAxXS0+aW5kZXgpKS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dl cl9ib3VuZHMpOworCQkJCWxpc3RfZnJlZShib3VuZHMpOworCQkJCWJyZWFrOworCQkJfQor CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCQl7CisJCQkJLyogQ29uc29s aWRhdGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlm b3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0 X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlzcGVjLT5saXN0ZGF0dW1z ID0gbGlzdF9jb25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQtPmxpc3RkYXR1bXMpOwor CQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+ c3RyYXRlZ3kpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAyYzBiNGYy OGMxLi42NDI0OGI1YjFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yNzIxLDYg KzI3MjEsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJCQkJ ICAiT1dORVIgVE8iLCAiU0VUIiwgIlZBTElEQVRFIENPTlNUUkFJTlQiLAogCQkJCQkgICJS RVBMSUNBIElERU5USVRZIiwgIkFUVEFDSCBQQVJUSVRJT04iLAogCQkJCQkgICJERVRBQ0gg UEFSVElUSU9OIiwgIkZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIsCisJCQkJCSAgIk1FUkdF IFBBUlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRB QkxFIHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1h dGNoQW55LCAiQUREIikpCkBAIC0yOTg3LDYgKzI5ODgsMTUgQEAgbWF0Y2hfcHJldmlvdXNf d29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04iLCBNYXRjaEFueSkpCiAJCUNP TVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTElaRSIpOwogCisJLyogQUxURVIg VEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLworCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigi KSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOwor CX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiTUVS R0UiLCAiUEFSVElUSU9OUyIsICIoKikiKSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyIpOwor CiAJLyogQUxURVIgVEFCTEUgPG5hbWU+IE9GICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk9GIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NvbXBvc2l0ZV9kYXRhdHlwZXMpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2NmNTI0Li5mNTQyMzM0OTliIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTA3LDYgKzEwNyw4IEBAIGV4dGVybiB2 b2lkIFJlbGVhc2VEZWxldGlvbkxvY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KTsK IGV4dGVybiB2b2lkIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmpl Y3QsCiAJCQkJCQkJRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCitleHRl cm4gdm9pZCBwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmpl Y3QsCisJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiBleHRl cm4gdm9pZCBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMoY29uc3QgT2JqZWN0QWRkcmVzc2Vz ICpvYmplY3RzLAogCQkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdz KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGJhMTI2NzhkMWMuLmI4ZTJhNjc5 Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk2OSw4ICs5NjksMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0 aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5h bWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2ggKi8KKwlSYW5nZVZhciAgICpuYW1l OwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVyZ2UgKi8KIAlQ YXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcg Ki8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1F UkdFCisJCQkJCQkJCSAqIFBBUlRJVElPTiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVu dDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDczLDYgKzI0NzUsNyBAQCB0eXBlZGVmIGVu dW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBB UlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9O ICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04g RklOQUxJWkUgKi8KKwlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9O UyAqLwogCUFUX0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJ ZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJv cElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRl eCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcs NiArMzM3LDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwi LCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoInBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQ QVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2 MTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgK KysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQg KzE0MywxMCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZt Z3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJj aChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1 cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25f Ym91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBh cnROYW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFy dGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRl KTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAg LTAsMCArMSwxOTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFy dCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjog QkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBz MmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2Rp Zicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVw IHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNF TEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1 fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQy NSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxF IHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5U TyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBh cnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+Citz dGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAg ICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAx fHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMx bWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAs IHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3Rl cCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBh cnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisx NXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0 MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4 dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0t LS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisy NXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7 CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJH RSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBf MjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0g J3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENP TU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0t LS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2Rp ZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdF IFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8y MDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAn dGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0t LS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlm CisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMy YyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsK K3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIg VEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIw KSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFU RSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAg IAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUg cm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMx bWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBU QUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjAp IElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRF IHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAg ICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAg CisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0 cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8g dHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0 IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAg CistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0 ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQor CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBlM2M2NjlhMjlj Li4wZGNhNjg0OTU1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUK QEAgLTEwNyw2ICsxMDcsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0 OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0z CiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UK IHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNs dXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZGMyYjlkMzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZl cmlmeSB0aGF0IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBh cnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRw YXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5 IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRw YXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0 XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjAp OworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBW QUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0 IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3Rl eHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7Cisg IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRv d24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJ eyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJ WkFCTEU7IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9Citz dGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47 IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE OyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9 CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9 CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUg aSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZS T00gdHBhcnQ7IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0 cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4KKyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNl cnRlZCByb3cgYW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlv bi4KKworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBz MmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBz MW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBz MWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMg czJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNl LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJz ZS5jCmluZGV4IDE5MzY2OWYyYmMuLjdkZTVkZGI4NzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAt Mjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05f QVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlw ZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQlj YXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElP TlMiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBl ID0gIkFERCBJREVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uNTMxZjIwMjFhYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDExMDUg QEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRl c3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFS VElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElP TiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJz YWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVz X2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRp b24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTog Li4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBz YWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMg bm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2Fs ZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEg dGFibGUKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9S OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1 YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0t IChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIw MjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19q YW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0 aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4g c2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2ph bjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGlzIG5vdCBl cXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBw YXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gRVJST1I6ICBwYXJ0aXRpb24g d2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21h cjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2Fs ZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxl c19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRpb25zLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21h cjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CitFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19hcHJfMiIgYWxyZWFkeSBleGlzdHMKK0NSRUFURSBWSUVXIGphbjIwMjJ2 IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBjYW5ub3QgZHJvcCB0YWJsZSBz YWxlc19qYW4yMDIyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJ TDogIHZpZXcgamFuMjAyMnYgZGVwZW5kcyBvbiB0YWJsZSBzYWxlc19qYW4yMDIyCitISU5U OiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMg dG9vLgorRFJPUCBWSUVXIGphbjIwMjJ2OworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3Rv bSBwYXJ0aXRpb25zIG9yZGVyLCBzb3VyY2UgcGFydGl0aW9ucyBub3QgaW4gdGhlIHNlYXJj aF9wYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIsIHB1 YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19m ZWIyMDIyLAorICBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19tYXIyMDIyLAorICBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2phbl9m ZWJfbWFyMjAyMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhyZWdjbGFzc1tdKSBBUwor U0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAgICAgYy5yZWxwZXJz aXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRldGFjaHBlbmRp bmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5o ZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g QU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5n ZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAg IHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAo JzA0LTAxLTIwMjInKQorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisg c2FsZXNfZGVjMjAyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAg ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZS T00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxlc19vdGhlcnMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJs ZSwgdGhlbiBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor Q1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jhbmdl IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAy MDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0 LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYs ICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAg IDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjIt MDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAo MTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisg ICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCBwZ19jYXRh bG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzKTsKKyBwZ19n ZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdFIChzYWxlc19k YXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgor RVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAgICAgIG9p ZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8 ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc19hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAx LTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgn MDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykg VE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIw MjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKwor LS0gY2hlY2sgc2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIy LCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0 aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5n ZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAgICAg IHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAo JzA1LTAxLTIwMjInKQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisg c2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAg ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3Nh bGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJn ZV9zY2hlbWEyJzsKKyAgICAgICAgc2NoZW1hbmFtZSAgICAgICAgfCAgICAgICB0YWJsZW5h bWUgICAgICAgfCAgICAgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICAgICAgfCB0YWJs ZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTIgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFy X2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNh bGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KQorKDEgcm93KQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf cmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICAgICAgICAg ICAgICAgICB0YWJsZW9pZCAgICAgICAgICAgICAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3 IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAg ICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2Fs ZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h Mi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAg NyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIg fCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXBy MjAyMiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTE5LTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0 aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBz YWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0y MDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBN dWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKwor UkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0t IE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24p IGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21h cjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxl c19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyBPUkRFUiBCWSBzYWxlc3Bl cnNvbl9pZDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93 cykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJl bHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAg ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNf YXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBz YWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjIn KQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsK Ky0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQg dmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2Rh eSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUwor ICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2Fs ZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0 LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVG QVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVj MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEy LCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFY VkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5h Z2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgn TWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAor ICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19k YXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8 ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIu MDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RlYzIwMjI7Cisgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgICAgIHwg ICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0 ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAx LjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwg MSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8 IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8 IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIu MDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbl9mZWIyMDIyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAx MCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMu MDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx LCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAk Qk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0 aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19X SEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFU RSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgor ICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RB VEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUK KyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJl IGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZh bm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUy MF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0 cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEg dHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo KTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5z CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor LS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg ZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWly bm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3co KSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1O IGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisg ICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBf NDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAg ICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAg ICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAg IDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92Cisg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZ IHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIy XzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2Fs ZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxl c19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHJfYWxs IHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByX2FsbCB8 ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0g QlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3Jz IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIw KSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVy ZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NS RUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0NSRUFURSBU QUJMRSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAo c2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBz YWxlc19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ug c2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hB Uig1KSk7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19l eHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBh cnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICAic2FsZXNf ZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNh bGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7 CitFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3Vi LXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxl c19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQy IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitISU5UOiAg QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVy bmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xp c3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFy dGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMg SURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRl X2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAo J1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAg KCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisg ICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAor ICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwK KyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyks CisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScp LAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMDYn KSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5 JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0x MScpLAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwgJzIwMjItMDMt MDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAz LTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0w My0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjIt MDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIy LTAzLTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VU RSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworICAgICAgb2lkICAgICAg fCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNfY2VudHJhbCB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 JykKKyBzYWxlc19lYXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3QgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0 aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3Nh bGVzX2xpc3R9Jyk7CisgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHAg ICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snLCAnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykKKyBzYWxlc19u b3JkICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKQor IHNhbGVzX290aGVycyB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7 CisgIHRhYmxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBz YWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX25vcmQgfCAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAw MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDcgfCBNYXkgICAg ICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIy Cisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICAgICB8IEhl bHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorIHNhbGVzX25vcmQg fCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8 ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAg IDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYg ICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgor IHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJz YXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyBzYWxlc19hbGwgIHwg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA2 IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDMtMDEtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgOCB8IExpICAgICAgICAg ICAgICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyBz YWxlc19hbGwgIHwgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlk ICAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNfYWxsICB8ICAg ICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTAtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAz LTA4LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAg ICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisoMTQg cm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1l cmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICog RlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwg MDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNh dyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBX YXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5v dic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNj YW47CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRp dGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEgKGkgaW50LCBh IGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEsIGIpOworQ1JFQVRF IFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8g KDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkg UkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEgUEFSVElUSU9OIE9GIHQyIEZPUiBWQUxV RVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4 dCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2Yg cmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwg dDJwYSkgSU5UTyB0MnA7CitFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0 aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQ QVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFy dGl0aW9ucworLS0gRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MnBh LCB0MykgSU5UTyB0MnA7CitFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBh cnRpdGlvbmVkIHRhYmxlICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRp dGlvbnMKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsK Ky0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCist LQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5o ZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0ICAgICAgICAgICAgICB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0 cF8xXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gUGFy dGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5m bygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0 YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKKygxIHJv dykKKworRFJPUCBUQUJMRSB0OworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXgg bmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0 aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklN QVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8w XzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUg VEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworQ1JFQVRFIElOREVYIHRpZHggT04gdChpKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMV8yLCB0cF8wXzEpIElOVE8gdHBfMV8yOworLS0gSW5kZXhuYW1lIHZh bHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCistLSBO b3QtbnVsbCBjb25zdHJhaW50IG5hbWUgc2hvdWxkIGJlICd0cF8xXzJfaV9ub3RfbnVsbCcu CitcZCsgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRp b25zX21lcmdlX3NjaGVtYS50cF8xXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGkgSVMgTk9UIE5VTEwpIEFORCAo aSA+PSAwKSBBTkQgKGkgPCAyKSkKK0luZGV4ZXM6CisgICAgInRwXzFfMl9wa2V5IiBQUklN QVJZIEtFWSwgYnRyZWUgKGkpCisgICAgInRwXzFfMl9pX2lkeCIgYnRyZWUgKGkpCitOb3Qt bnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGlu aGVyaXRlZCkKKworRFJPUCBUQUJMRSB0OworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50 IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJM RSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitT RUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOwor IG9pZCB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHQgICB8 IHAKKygxIHJvdykKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBv aWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdHBfMF8xIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpCisoMiByb3dzKQorCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVu dCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9S OiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2Yg cGVybWFuZW50IHJlbGF0aW9uICJ0IgorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0 aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0VSUk9S OiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2Yg cGVybWFuZW50IHJlbGF0aW9uICJ0IgorRFJPUCBUQUJMRSB0OworU0VUIHNlYXJjaF9wYXRo ID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0JFR0lOOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs cGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAn dCc6OnJlZ2NsYXNzOworIG9pZCB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0rLS0tLS0tLS0t LS0tLS0tLQorIHQgICB8IHQKKygxIHJvdykKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2lu Zm8oJ3t0fScpOworICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRl dGFjaHBlbmRpbmcgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgdCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBf MV8yIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCisoMiByb3dzKQorCitERUFMTE9DQVRFIGdldF9w YXJ0aXRpb25faW5mbzsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwZ190ZW1wLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0 aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUk9MTEJBQ0s7Cist LSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNl CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VM RUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBXSEVSRSB0YWJs ZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFi bGVuYW1lIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCByZWdy ZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUs IHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3Qn LCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEn CisgIE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxl bmFtZSB8ICBpbmRleG5hbWUgIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAg ICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgdHBfMF8yX3BrZXkgfCByZWdy ZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUg bmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JF QVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFO RExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVB VEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZS T00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBj Lm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkg Yy5yZWxuYW1lOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAgICAgCistLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uc19tZXJn ZV9oZWFwCisgdHBfMF8yICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorKDIgcm93cykKKwor RFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVh cDsKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24g dGhlIHBhcmVudCB0YWJsZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRv IGRvIHRoZSBtZXJnZS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Fs aWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQg QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0 cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVB VEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8y KSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3du ZXIgb2YgdGFibGUgdHBfMF8xCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRF UiBUQUJMRSB0cF8wXzEgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7 CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8xXzIKK1JFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00g cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKKy0tIFRlc3Q6IHdlIGNhbid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQg b3duZXJzCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNf bWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJM RSB0cF8wXzEoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JF QVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitBTFRF UiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNf bWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8 IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8 IHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZQorKDEgcm93KQorCistLSBPd25lciBp cyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEg ICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgT3duZXIgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0 cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9ib2IKKygxIHJvdykK KworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBv d25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRp ZmZlcmVudCBvd25lcnMKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2Fs aWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJP TSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVy Z2VfYm9iOworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAw KTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChN T0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gt cGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cDEsIHRwMikgSU5UTyB0cDM7CitFUlJPUjogIHBhcnRpdGlvbiBv ZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKKy0tIEVSUk9SOiAg bGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRl bXMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VS Uk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0 d28gaXRlbXMKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24g cHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlz IGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFy ZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25l ZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQg dGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVs dF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjIt MDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQg T04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CitDUkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQg Tk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzBf MScsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAy LTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENPTFVNTiB0cF8wXzEu aSBJUyAndHBfMF8xLmknOworQ1JFQVRFIFRBQkxFIHRwXzFfMgorKGkgaW50IE5PVCBOVUxM LAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8xXzInLAorIGIg YmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMy0wMycpIFNU T1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMV8yLmkgSVMgJ3Rw XzFfMi5pJzsKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBp LCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzBfMV9zdGF0IChERVBFTkRFTkNJ RVMpIG9uIGksIGIgZnJvbSB0cF8wXzE7CitDUkVBVEUgU1RBVElTVElDUyB0cF8xXzJfc3Rh dCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMV8yOworQUxURVIgVEFCTEUgdCBB REQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQg QUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsK K0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDAp IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBO VUxMIGIgTk9UIFZBTElEOworSU5TRVJUIElOVE8gdHBfMF8xKGksIHQsIGIpIFZBTFVFUygw LCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwXzFfMihpLCB0LCBiKSBWQUxVRVMoMSwg REVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitC RUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3 aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xF VkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgdF9i ZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcpOworQ1JFQVRF IFRSSUdHRVIgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VS VCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJf ZnVuY3Rpb24oJ3RwXzBfMScpOworQ1JFQVRFIFRSSUdHRVIgdHBfMV8yX2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8xXzIgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzFfMicpOworXGQrIHRw XzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0 ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgdHBfMF8xLmkKKyB0 ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90cF8w XzEnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAg ICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDItMDItMjAyMic6OmRhdGUpIHN0 b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkp IElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDEpKQorQ2hl Y2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0 X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2sy IiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3RzOgorICAgICJw YXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzFfc3RhdCIgKGRlcGVuZGVuY2llcykgT04g aSwgYiBGUk9NIHRwXzBfMQorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwXzBfMV9p X25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1Qg TlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0 CisgICAgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBP TiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlv bigndHBfMF8xJykKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLnRwXzBfMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAg ICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMg YXMgKCcwMS0wMS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFy dGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+ PSAwKSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9j aGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5P VCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImki IChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5P VCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJF Rk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRy aWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJTlNFUlQgSU5UTyB0KGksIHQs IGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRyaWdnZXIodCkgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVsID0gUk9XCitTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSBiOworIHRhYmxlb2lkIHwg aSB8ICAgICAgIHQgICAgICAgIHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0tKy0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAgfCBkZWZh dWx0X3RwXzBfMSB8IDEgfCAwMS0wMS0yMDIyCisgdHBfMF8xICAgfCAxIHwgZGVmYXVsdF90 cF8xXzIgfCAyIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdCAgICAg IHwgMyB8IDAxLTAxLTIwMjIKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVO Q1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdp dGggbm90IHZhbGlkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0IChp IElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJM RSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitD UkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFCTEUg dF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CitBTFRF UiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChp KSBSRUZFUkVOQ0VTIHQgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgTk9UIFZB TElEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKyAgICAgIFRhYmxlICJwYXJ0aXRpb25zX21l cmdlX3NjaGVtYS50cF8wXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitJ bmRleGVzOgorICAgICJ0cF8wXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorUmVm ZXJlbmNlZCBieToKKyAgICBUQUJMRSAidF9mayIgQ09OU1RSQUlOVCAidF9ma19pX2ZrZXki IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQoaSkgTk9UIFZBTElECisKKy0tIEVSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBUQUJMRSB0X2ZrIFZBTElEQVRF IENPTlNUUkFJTlQgdF9ma19pX2ZrZXk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9m a2V5IgorREVUQUlMOiAgS2V5IChpKT0oMikgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInQi LgorRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBNRVJHRSBQQVJU SVRJT05TIHdpdGggbm90IGVuZm9yY2VkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFU RSBUQUJMRSB0IChpIElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitD UkVBVEUgVEFCTEUgdF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEp LCAoMik7CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZP UkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBT aG91bGQgYmUgTk9UIEVORk9SQ0VEIEZPUkVJR04gS0VZCitcZCB0cF8wXzIKKyAgICAgIFRh YmxlICJwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS50cF8wXzIiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDIpCitJbmRleGVzOgorICAgICJ0cF8wXzJfcGtleSIgUFJJTUFSWSBL RVksIGJ0cmVlIChpKQorUmVmZXJlbmNlZCBieToKKyAgICBUQUJMRSAidF9mayIgQ09OU1RS QUlOVCAidF9ma19pX2ZrZXkiIEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VTIHQoaSkgTk9U IEVORk9SQ0VECisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9m ayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRF UiBUQUJMRSB0X2ZrIEFMVEVSIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRU5GT1JDRUQ7CitF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorREVUQUlMOiAgS2V5IChpKT0oMikg aXMgbm90IHByZXNlbnQgaW4gdGFibGUgInQiLgorRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBU QUJMRSB0OworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVk IGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVk IGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCBjYyBD SEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDAp LCAoMSk7CistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZv ciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlm aWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkg PSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCistLSAidGFiX2lkIiBjb2x1 bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRl IHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3VsZCBi ZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0 aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4K K1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VM RUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAg ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgZm9yIGdlbmVyYXRlZCBj b2x1bW5zIChkaWZmZXJlbnQgb3JkZXIgb2YgY29sdW1ucyBpbiBwYXJ0aXRpb25lZCB0YWJs ZQorLS0gYW5kIHBhcnRpdGlvbnMpLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCBnIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCkpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMSAoZyBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7CitDUkVBVEUgVEFCTEUgdHBfMiAoZyBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpLCBpIGludCk7CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKC0x KSBUTyAoMTApOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzIgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChnID4g MCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoaSA+IDApOworSU5TRVJUIElOVE8gdCBW QUxVRVMgKDUpLCAoMTUpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8x LCB0cF8yKSBJTlRPIHRwXzEyOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25z dHJhaW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CitFUlJPUjog IG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAidF9pX2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIHZpcnR1 YWwpLgorLS0gU2hvdWxkIGJlIDMgcm93czogKDUpLCAoMTUpLCAoMTYpOgorU0VMRUNUIGkg RlJPTSB0IE9SREVSIEJZIGk7CisgaSAgCistLS0tCisgIDUKKyAxNQorIDE2CisoMyByb3dz KQorCistLSBTaG91bGQgYmUgMSBiZWNhdXNlIGZvciB0aGUgc2FtZSB0YWJsZW9pZCAoMTUg KyB0YWJsZW9pZCkgPSAoNSArIHRhYmxlb2lkKSArIDEwOgorU0VMRUNUIGNvdW50KCopIEZS T00gdCBXSEVSRSBpID0gMTUgQU5EIGcgSU4gKFNFTEVDVCBnICsgMTAgRlJPTSB0IFdIRVJF IGkgPSA1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitEUk9QIFRB QkxFIHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGE0MjRiZTJhNmIuLjY0NjRh MjM4YWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEy Myw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWlu IHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJl c2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBi ZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fam9p biBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0 aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVz c2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVy Z2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0 IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0 IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVtYQogCiAj IGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBydW4gY29u Y3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5zIERETApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uYmY4YWNjNTEzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAgLTAsMCArMSw3OTYgQEAKKy0t CistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1 YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRl c3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJM RSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQ QVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRP ICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBu YW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIs IHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6 ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNh bGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0gKHNw YWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFuMjAyMiBhbmQgc2FsZXNfbWFyMjAyMikK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIw MjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21hcjIwMjI7CistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgaXMgbm90IGVxdWFs IHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSAo c3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIy KQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVj MjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFu X2ZlYjIwMjI7CistLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIw MjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEuc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7Cist LUVSUk9SLCBzYWxlc19hcHJfMiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwg c2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19hcHJfMjsKKworQ1JFQVRFIFZJRVcgamFuMjAy MnYgYXMgU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikg SU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitEUk9QIFZJRVcgamFuMjAyMnY7CisKKy0t IE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBh cnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf amFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworCitQUkVQQVJFIGdldF9wYXJ0 aXRpb25faW5mbyhyZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywKKyAgICAgICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5k LAorICAgICAgICBpLmluaGRldGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGku aW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAg ICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiOworCitFWEVDVVRFIGdl dF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhl biBtZXJnZSBwYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ft b3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5H IGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgcGdfY2F0YWxv Zy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisKKy0tIHNo b3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3NhbGVzX3JhbmdlfScpOworCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5h bWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIw MjIpIElOVE8gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAy MjsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisKK1NFTEVDVCAqIEZST00gcGdf aW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTInOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4 ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGludG8g REVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUg SU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcg YnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMK KyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWly bm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwg JzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycp LAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUs ICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIz JyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAn SGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQs ICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlv bnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhl IHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworCistLSBzaG93IHBh cnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8o J3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0t IFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdF TkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAg c2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQo c2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6 dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykp IFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxl cyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8g KDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0 ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVT IEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsK KworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEs IDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycs IDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdl cjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01h bmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAg KCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ph bjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVyOworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7 CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIy LCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOwor CitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRp b25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29u X2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgUEFSVElU SU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9S IFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg VkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBh ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3Bs cGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkg Y2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwg VEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJP RFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRfc3RhdGVt ZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAg IEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2Vy dF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNw ZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAg T04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVS RSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKKy0tIDIgdHJp Z2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQg ZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMg KDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxl MzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQg ZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg VkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVy ZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTICgzMCwgJ0Zv cmQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworU0VMRUNUICogRlJP TSBzYWxlc3Blb3BsZTEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworRFJPUCBG VU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IG1l cmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lk KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBwYXJ0aXRp b25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZ LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZTIwXzMwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCAgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUz MF80MChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIw IFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CisK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9w bGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBG T1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0Zv cmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5U TyBzYWxlc3Blb3BsZTEwXzQwOworCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlOworc2Vs ZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEwOworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3Bs ZTEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlOworCistLQorLS0gVGVzdDogbWVy Z2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVB VEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJ TkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAo MTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkLCBz YWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxl c19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkLCBz YWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEJZ IExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3Jz IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIw KSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVy ZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NS RUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJ U1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcn LCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMyIFBBUlRJVElPTiBP RiBzYWxlc19saXN0MiBERUZBVUxUOworCisKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5h bCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZj aCBWQVJDSEFSKDUpKTsKKworLS0gRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFz dCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICAic2FsZXNf ZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNh bGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7 CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJH RSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5U TyBzYWxlc19hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJM RSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxF IHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVS R0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAor KHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCks Cisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkg TElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3Bl cnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9u YW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxl c19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywg J1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2Vz dCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZB VUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcs ICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5v ZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQn LCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFu b3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVl dicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1Bv aXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdN YXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgn TGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAo J01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAg KCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisg ICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAor ICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwK KyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4Jyks CisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScp OworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRf cGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2Nl bnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOwor CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBC WSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRl c3RpbmcgaW5kZXhlcyBhZnRlciBtZXJnaW5nIHBhcnRpdGlvbnMKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz cGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RS T1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25z IG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQs IGIgaW50LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJM RSB0MXAxIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAy KTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdF ICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZS T00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOwor CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVs YXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJw YSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBh cnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMg KHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFCTEUgdDI7 CitEUk9QIFRBQkxFIHQxOworCistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2Yg dGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitF WEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCistLSBQYXJ0 aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7dH0nKTsKKworRFJPUCBUQUJMRSB0OworCistLQorLS0gQ2hlY2sgdGhlIHBhcnRpdGlv biBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2FtZSBhcyBvbmUK Ky0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUgdCAoaSBp bnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworCitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKKworQ1JFQVRFIElOREVYIHRpZHggT04gdChpKTsKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMV8yLCB0cF8wXzEpIElOVE8gdHBfMV8yOworCist LSBJbmRleG5hbWUgdmFsdWVzIHNob3VsZCBiZSAndHBfMV8yX3BrZXknIGFuZCAndHBfMV8y X2lfaWR4Jy4KKy0tIE5vdC1udWxsIGNvbnN0cmFpbnQgbmFtZSBzaG91bGQgYmUgJ3RwXzFf Ml9pX25vdF9udWxsJy4KK1xkKyB0cF8xXzIKKworRFJPUCBUQUJMRSB0OworCistLQorLS0g VHJ5IG1peGluZyBwZXJtYW5lbnQgYW5kIHRlbXBvcmFyeSBwYXJ0aXRpb25zLgorLS0KK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJs aWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitD UkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMu b2lkID0gJ3QnOjpyZWdjbGFzczsKKworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0 fScpOworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMg aW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworCistLSBDYW4ndCBtZXJnZSBw ZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVt cC50cF8wXzI7CitEUk9QIFRBQkxFIHQ7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAs IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKK0JFR0lOOworQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRw XzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFU RSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0 ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVn Y2xhc3M7CisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKworREVBTExP Q0FURSBnZXRfcGFydGl0aW9uX2luZm87CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHRl bXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50IHBhcnRpdGlvbgorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CitST0xMQkFDSzsKKworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFy ZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lO RyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBS QU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRw XzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFU RSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJs ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFt ZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lLCB0 YWJsZXNwYWNlOworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZS T00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFO RCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0 YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKK0RST1AgVEFCTEUgdDsKKworLS0g Q2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNz IG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1 YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBF IFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9o ZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEu YW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9p ZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykK K09SREVSIEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUgdDsKK0RST1AgQUNDRVNTIE1FVEhP RCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3Mu ICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgYWxsCistLSB0 aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NSRUFURSBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0dSQU5UIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0 aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVzc19w YXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTjsKKworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitEUk9QIFRB QkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBG Uk9NIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitEUk9Q IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworCisKKy0tIFRlc3Q6IHdlIGNh bid0IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgb3duZXJzCitDUkVBVEUgUk9M RSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNz X3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFy dGl0aW9uc19tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworQ1JFQVRFIFRBQkxFIHRwXzFfMihp IGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0FMVEVS IFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2Un OgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9i b2InOgorXGR0IHRwXzFfMgorCistLSBFUlJPUjogIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2Vk IGhhdmUgZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKK0RST1AgVEFCTEUgdDsKK1JFVk9L RSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19w YXJ0aXRpb25zX21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworRFJP UCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK0RST1AgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iOworCisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0 aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0go aSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVS Uk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1l cmdlZAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cDEsIHRwMikgSU5UTyB0 cDM7CisKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFp biBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIG1lcmdl ZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0g KiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZB VUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBh cyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENP TlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJ R0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQg Tk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBE RUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxX QVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMo aSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKworQ1JFQVRFIFRBQkxF IHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVM VCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxX QVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQ QVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ09NTUVOVCBP TiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKKworQ1JFQVRFIFRBQkxFIHRwXzFf MgorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVm YXVsdF90cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFz ICgnMjAyMi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xV TU4gdHBfMV8yLmkgSVMgJ3RwXzFfMi5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0 IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBf MF8xX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBT VEFUSVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8x XzI7CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChi ID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sg KGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRf Yl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBD T05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8g dHBfMF8xKGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJTlRPIHRw XzFfMihpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFD RSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdF ICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIo JSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlsw XSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJP RFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2Vy dF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUg VFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jdGlvbigndHBfMV8yJyk7CisKK1xkKyB0cF8wXzEKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8xOworXGQrIHRwXzBfMQor CitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9QIFRBQkxF IHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCistLSBUZXN0IE1F UkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAor Q1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgx KTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVF UyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2Zr ZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKwor LS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFU RSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRB QkxFIHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBm b3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBL RVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsK K0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworCitBTFRFUiBUQUJMRSB0X2Zr IEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZFUkVOQ0VT IHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQg Rk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9u IHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lf ZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBF TkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0tIFRl c3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRh Ymxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQg PD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBT aG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cg d2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJf aWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9p ZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0 dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0t IFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRo IGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3 aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9p ZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRBQkxF IHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRl ciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucyku CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkg KyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJM RSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCks IGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBB UlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjAp OworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQURE IENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CisKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8xMjsK KworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3Ig cmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lfY2hlY2si CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUgMyByb3dzOiAoNSks ICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0tIFNob3VsZCBi ZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1 ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAx NSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitEUk9Q IFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMjsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------7CtLIvH5g69EeqXXJgGqRku2 Content-Type: text/plain; charset=UTF-8; name="v48-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v48-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3ZjhlZmVhNzIwOTViZmFiM2JjOGJkMDM5YzZlMzQ1YjIyNDk1YTg3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NDggMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU 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 ZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAgOTIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0NjUgKysrKysKIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgNjUgKy0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICA2ODQg KysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAg ICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDE2ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmggICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAg ICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlv bi1zcGxpdC5vdXQgICAgfCAgMTkwICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9w YXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNTQgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNjU1ICsrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAgICAgfCAxMTQ4ICsr KysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAgMiArCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NDQ2IGluc2VydGlvbnMoKyksIDIz IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0 LnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dt bC9kZGwuc2dtbAppbmRleCA2MmMyYmI1NGVhLi40MWU0NzdlZGRmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00 NDYxLDYgKzQ0NjEsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKICAgICAgICAgICAg ICAgICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAw NnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgU2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucywgdGhl cmUgaXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBzaW5nbGUgcGFydGl0aW9u IGludG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlzIGZlYXR1cmUgY291bGQg Y29tZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3MgdG9vIGJpZworICAgICBh bmQgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0J3MgaW1wb3J0YW50IHRv IG5vdGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAgICAgYW4gPGxpdGVyYWw+ QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1wYWN0IGhp Z2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0aXZlIG5h dHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAgdGhlIHF1YXJ0ZXIgcGFy dGl0aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHByb2dyYW1saXN0aW5nPgor QUxURVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9OIG1lYXN1cmVtZW50X3ky MDA2cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMSBGT1IgVkFM VUVTIEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAxJyksCisgICAgUEFSVElU SU9OIG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDItMDEn KSBUTyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZt MDMgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgnMjAwNi0wNC0wMScpKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8L3NlY3QzPgogCiAgICA8 c2VjdDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUtbGltaXRhdGlvbnMiPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGU1MDNhMDYwMjguLmRhYWRiODMy NmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDEwIEBA IEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4geyBG T1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91 bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJMRSBbIElGIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZIHwgRklOQUxJ WkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ IElOVE8KKyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFi bGU+IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxV RVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVj PC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKIEFMVEVSIFRBQkxFIFsgSUYg RVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pCiAg ICAgICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4KQEAgLTExNTAsNiArMTE1NCw3MSBAQCBXSVRIICggTU9EVUxV UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBs YWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4K KyAgICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4u Ll0pPC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0 IHRhYmxlIGludG8gYSBuZXcKKyAgICAgIHBhcnRpdGlvbnMuIEhhc2gtcGFydGl0aW9uZWQg dGFyZ2V0IHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcKKyAgICAgIHBh cnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZyBwYXJ0 aXRpb25zCisgICAgICAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIElmIHRoZSBzcGxpdCBwYXJ0 aXRpb24gaXMgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIG9uZSBv ZgorICAgICAgdGhlIG5ldyBwYXJ0aXRpb25zIG11c3QgYmUgPGxpdGVyYWw+REVGQVVMVDwv bGl0ZXJhbD4uCisgICAgICBJbiBjYXNlIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgb3Ig b25lIG9mIGV4aXN0aW5nIHBhcnRpdGlvbnMgaXMKKyAgICAgIDxsaXRlcmFsPkRFRkFVTFQ8 L2xpdGVyYWw+LCBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBj YW4KKyAgICAgIGhhdmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0 aGUgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QKKyAgICAgIGhhdmUgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPiBwYXJ0aXRpb24sIHRoZSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRl cmFsPgorICAgICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiB0aGUgbmV3 IHBhcnRpdGlvbnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJbiBjYXNl IG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBjb250YWluIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0 ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiBhbmQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMg bm90IGhhdmUgYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9u LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxkCisgICAgICBi ZSBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBo YXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFm dGVyIHNwbGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhlCisgICAgICBzYW1l IG5hbWUpLiAgT25seSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJl IHNwbGl0LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlv bnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255 bT5BQ0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJh PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3Jl YXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcg cGFydGl0aW9ucy4KKyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBm cm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29t bWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBw YXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBw ZXJzaXN0ZW5jZQorICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0 YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9u IGlzIHNwbGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGlzCisg ICAgICBwYXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxs IGJlIGRyb3BwZWQuIFRoaXMgY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIg VEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpdHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2Jq ZWN0cy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIHNwbGl0IHBhcnRp dGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2Fu CisgICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90 IHVzZWQsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAg IDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVz IGEgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAg IHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNw bGl0LgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJs ZS1tZXJnZS1wYXJ0aXRpb25zIj4KICAgICA8dGVybT48bGl0ZXJhbD5NRVJHRSBQQVJUSVRJ T05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVy bT4KIApAQCAtMTI0NCw3ICsxMzEzLDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K ICAgIEFsbCB0aGUgZm9ybXMgb2YgPGNvbW1hbmQ+QUxURVIgVEFCTEU8L2NvbW1hbmQ+IHRo YXQgYWN0IG9uIGEgc2luZ2xlIHRhYmxlLAogICAgZXhjZXB0IDxsaXRlcmFsPlJFTkFNRTwv bGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+ QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048 L2xpdGVyYWw+LAotICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+ IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xp dGVyYWw+LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNh biBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMg dG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2li bGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2 ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1 bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKQEAgLTE0ODgsNyArMTU1OCw3IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAg ICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0 aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1l IG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Yg c3BsaXQgcGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRp b24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CkBAIC0xOTIxLDYgKzE5OTEsMjQgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQK ICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0 aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5n PgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9t YXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9SIFZBTFVF UyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBUTyAoJzIw MjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFMVUVTIEZS T00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFtbGlzdGlu Zz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24g b2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRvIG1lcmdl IHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0 YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggN2Y2M2RmMDYxMi4uZDNlZGZjZTE4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKQEAgLTc0Miw2ICs3NDIsOSBAQCBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdl KE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCiBzdGF0aWMgdm9p ZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpjbWQsIEFs dGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNT cGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJ CQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0 ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CURlZmluZVJlbGF0aW9uCkBAIC00ODQwLDYgKzQ4NDMsMTAgQEAgQWx0ZXJUYWJsZUdldExv Y2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2 ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJ Y21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJ ZGVmYXVsdDoJCQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBh bHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAt NTI4MCw2ICs1Mjg3LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJl cCBuZWVkZWQgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2Fz ZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0 eXBlLCByZWwsIEFUVF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNw ZWNpZmljIHByZXAgbmVlZGVkICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUp OwpAQCAtNTY4NCw2ICs1Njk2LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsCiAJCQlBVEV4ZWNNZXJnZVBhcnRpdGlvbnMod3F1ZXVlLCB0 YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKIAkJCQkJCQkJICBjb250ZXh0 KTsKIAkJCWJyZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJY21kID0gQVRQ YXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9k ZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNzZXJ0KGNtZCAhPSBO VUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY1NwbGl0UGFydGl0aW9uKHdxdWV1ZSwgdGFiLCBy ZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSBjb250ZXh0KTsKKwkJ CWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0 eXBlKTsKQEAgLTY3MjYsNiArNjc0Niw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5n KEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04g Li4uIEZJTkFMSVpFIjsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQlyZXR1cm4g Ik1FUkdFIFBBUlRJVElPTlMiOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0 dXJuICJTUExJVCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJcmV0 dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVOVElUWSI7CiAJCWNhc2UgQVRfU2V0SWRl bnRpdHk6CkBAIC0yMjkwOSwzICsyMjkzMSw0NDYgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25z KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAog CS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLwogCVNldFVzZXJJ ZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwogfQorCisK Ky8qCisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0IG9mIG5ldyBwYXJ0aXRpb24gZm9yIGluc2Vy dGluZyByb3dzIGZyb20gc3BsaXQgcGFydGl0aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNw bGl0UGFydGl0aW9uQ29udGV4dAoreworCUV4cHJTdGF0ZSAgKnBhcnRxdWFsc3RhdGU7CS8q IGV4cHJlc3Npb24gZm9yIGNoZWNraW5nIHNsb3QgZm9yIHBhcnRpdGlvbgorCQkJCQkJCQkg KiAoTlVMTCBmb3IgREVGQVVMVCBwYXJ0aXRpb24pICovCisJQnVsa0luc2VydFN0YXRlIGJp c3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVw bGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNsb3QgZm9yIGluc2VydGluZyByb3cgaW50byBw YXJ0aXRpb24gKi8KKwlBbHRlcmVkVGFibGVJbmZvICp0YWI7CQkvKiBzdHJ1Y3RvcmUgd2l0 aCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zCisJCQkJCQkJCSAqIGFuZCBjaGVjayBj b25zdHJhaW50IGV4cHJlc3NzaW9ucy4gKi8KKwlSZWxhdGlvbglwYXJ0UmVsOwkJLyogcmVs YXRpb24gZm9yIHBhcnRpdGlvbiAqLworfSBTcGxpdFBhcnRpdGlvbkNvbnRleHQ7CisKKy8q CisgKiBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGNyZWF0ZSBjb250ZXh0IGZvciBw YXJ0aXRpb24gYW5kIGZpbGwgaXQKKyAqLworc3RhdGljIFNwbGl0UGFydGl0aW9uQ29udGV4 dCAqCitjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoUmVsYXRpb24gcGFydFJlbCkKK3sK KwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25D b250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFydGl0aW9uQ29udGV4dCkpOworCXBj LT5wYXJ0UmVsID0gcGFydFJlbDsKKworCS8qCisJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRT dGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiBUaGUgRlNNIGlzIGVtcHR5LCBzbworCSAq IGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkgKi8KKwlwYy0+YmlzdGF0ZSA9IEdldEJ1bGtJ bnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRp b24uICovCisJcGMtPmRzdHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYy0+cGFydFJlbCwg TlVMTCk7CisKKwlyZXR1cm4gcGM7Cit9CisKKy8qCisgKiBkZWxldGVTcGxpdFBhcnRpdGlv bkNvbnRleHQ6IGRlbGV0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24KKyAqLworc3RhdGljIHZv aWQKK2RlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChTcGxpdFBhcnRpdGlvbkNvbnRleHQg KnBjLCBMaXN0ICoqd3F1ZXVlLCBpbnQgdGlfb3B0aW9ucykKK3sKKwlMaXN0Q2VsbCAgICps dGFiOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJ RnJlZUJ1bGtJbnNlcnRTdGF0ZShwYy0+YmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVs a19pbnNlcnQocGMtPnBhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24n dCBuZWVkIHByb2Nlc3MgdGhpcyBwYy0+cGFydFJlbCBzbyBkZWxldGUgdGhlIEFMVEVSIFRB QkxFIHF1ZXVlCisJICogb2YgaXQuCisJICovCisJZm9yZWFjaChsdGFiLCAqd3F1ZXVlKQor CXsKKwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiID0gKEFsdGVyZWRUYWJsZUluZm8gKikgbGZp cnN0KGx0YWIpOworCQlpZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5w YXJ0UmVsKSkKKwkJCSp3cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIp OworCX0KKworCXBmcmVlKHBjKTsKK30KKworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJv d3M6IHNjYW4gc3BsaXQgcGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFi bGUKKyAqIChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisg KiBOZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBv aW50ZXJzIHRvIFNpbmdsZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4KKyAqIG5ld1BhcnRS ZWxzOiBsaXN0IG9mIFJlbGF0aW9ucy4KKyAqIGRlZmF1bHRQYXJ0T2lkOiBvaWQgb2YgREVG QVVMVCBwYXJ0aXRpb24sIGZvciB0YWJsZSByZWwuCisgKi8KK3N0YXRpYyB2b2lkCitTcGxp dFBhcnRpdGlvbk1vdmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gc3BsaXRSZWwsCisJCQkJCSAgIExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXJ0UmVs cywgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRv bid0IGJvdGhlciB1c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5T RVJUX1NLSVBfRlNNOworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsK KwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVT bG90ICpzcmNzbG90OworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNj IHNjYW47CisJU25hcHNob3QJc25hcHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJ TGlzdAkgICAqcGFydENvbnRleHRzID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVw bGVfbWFwOworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxM LAorCQkJICAgKnBjOworCWJvb2wJCWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKworCW15 Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCWVzdGF0ZSA9IENyZWF0ZUV4 ZWN1dG9yU3RhdGUoKTsKKworCWZvcmJvdGgobGlzdHB0ciwgcGFydGxpc3QsIGxpc3RwdHIy LCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5n bGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNw bGl0UGFydGl0aW9uQ29udGV4dCgoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMikpOworCisJ CS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBwYXJ0aXRpb24gdGFibGU6 IG5ld1BhcnRSZWwuICovCisJCXBjLT50YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCBw Yy0+cGFydFJlbCk7CisKKwkJYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKHBjLT50 YWIsIHBjLT5wYXJ0UmVsLCBlc3RhdGUpOworCisJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZh dWx0KQorCQl7CisJCQkvKiBXZSBzaG91bGQgbm90IGNyZWF0ZSBjb25zdHJhaW50IGZvciBk ZXRhY2hlZCBERUZBVUxUIHBhcnRpdGlvbi4gKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7 CisJCX0KKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJ LyogQnVpbGQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hl Y2sgcXVhbHMuICovCisJCQlwYXJ0Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21fcGFydGJv dW5kKHJlbCwgc3BzLT5ib3VuZCk7CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJKExpc3Qg KikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5vZGUgKikg cGFydENvbnN0cmFpbnQpOworCQkJLyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24gZm9yIEV4 ZWNDaGVjaygpLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1ha2VfYW5k c19leHBsaWNpdChwYXJ0Q29uc3RyYWludCkpOworCisJCQkvKgorCQkJICogTWFwIHRoZSB2 YXJzIGluIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRub3MgdG8K KwkJCSAqIHNwbGl0UmVsJ3MuCisJCQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbWFwX3Bh cnRpdGlvbl92YXJhdHRub3MocGFydENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJIDEsIHNw bGl0UmVsLCByZWwpOworCisJCQlwYy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhlY1ByZXBh cmVFeHByKChFeHByICopIGxpbml0aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRlKTsKKwkJ CUFzc2VydChwYy0+cGFydHF1YWxzdGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8qIFN0b3Jl IHBhcnRpdGlvbiBjb250ZXh0IGludG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFw cGVuZChwYXJ0Q29udGV4dHMsIHBjKTsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBwYXJ0aXRp b24gY29udGV4dCBmb3IgREVGQVVMVCBwYXJ0aXRpb24uIFdlIGNhbiBpbnNlcnQgdmFsdWVz CisJICogaW50byB0aGlzIHBhcnRpdGlvbiBpbiBjYXNlIHNwYWNlcyB3aXRoIHZhbHVlcyBi ZXR3ZWVuIG5ldyBwYXJ0aXRpb25zLgorCSAqLworCWlmICghZGVmYXVsdFBhcnRDdHggJiYg T2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkpCisJeworCQkvKiBJbmRpY2F0ZSB0aGF0IHdl IGFsbG9jYXRlIGNvbnRleHQgZm9yIG9sZCBERUZBVUxUIHBhcnRpdGlvbiAqLworCQlpc09s ZERlZmF1bHRQYXJ0ID0gdHJ1ZTsKKwkJZGVmYXVsdFBhcnRDdHggPSBjcmVhdGVTcGxpdFBh cnRpdGlvbkNvbnRleHQodGFibGVfb3BlbihkZWZhdWx0UGFydE9pZCwgQWNjZXNzRXhjbHVz aXZlTG9jaykpOworCisJCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIGRlZmF1 bHQgcGFydGl0aW9uIHRhYmxlLiAqLworCQlkZWZhdWx0UGFydEN0eC0+dGFiID0gQVRHZXRR dWV1ZUVudHJ5KHdxdWV1ZSwgZGVmYXVsdFBhcnRDdHgtPnBhcnRSZWwpOworCX0KKworCWVj b250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOworCisJLyogQ3JlYXRl IG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCXNyY3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0 ZShzcGxpdFJlbCwgTlVMTCk7CisKKwkvKgorCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmlu ZyBhdHRyaWJ1dGVzIG9mIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9uCisJICog KGZvciBmaXJzdCBuZXcgcGFydGl0aW9uLCBidXQgb3RoZXIgbmV3IHBhcnRpdGlvbnMgY2Fu IHVzZSB0aGUgc2FtZQorCSAqIG1hcCkuCisJICovCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25D b250ZXh0ICopIGxmaXJzdChsaXN0X2hlYWQocGFydENvbnRleHRzKSk7CisJdHVwbGVfbWFw ID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKHNwbGl0UmVsKSwK KwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpKTsKKworCS8qIFNj YW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo R2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCisJLyoKKwkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxl IG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCSAqIHByb2R1 Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkgKi8KKwlvbGRDeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJ d2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIHNyY3Nsb3QpKQorCXsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJs ZVNsb3QgKmluc2VydHNsb3Q7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQll Y29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzcmNzbG90OworCisJCS8qIFNlYXJjaCBwYXJ0 aXRpb24gZm9yIGN1cnJlbnQgc2xvdCBzcmNzbG90LiAqLworCQlmb3JlYWNoKGxpc3RwdHIs IHBhcnRDb250ZXh0cykKKwkJeworCQkJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICop IGxmaXJzdChsaXN0cHRyKTsKKworCQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlIC8qIHNraXAg REVGQVVMVCBwYXJ0aXRpb24gKi8gJiYKKwkJCQlFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3Rh dGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJfQorCQlpZiAoIWZvdW5k KQorCQl7CisJCQkvKiBVc2UgREVGQVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLwor CQkJaWYgKGRlZmF1bHRQYXJ0Q3R4KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQll bHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9DSEVDS19W SU9MQVRJT04pLAorCQkJCQkJZXJybXNnKCJjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBz cGxpdCBwYXJ0aXRpb24gcm93IiksCisJCQkJCQllcnJ0YWJsZShzcGxpdFJlbCkpOworCQl9 CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJeworCQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNv cHkgYXR0cmlidXRlcy4gKi8KKwkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Ns b3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBwYy0+ZHN0c2xvdCk7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBFeHRyYWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCQlz bG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGly ZWN0bHkuICovCisJCQlpbnNlcnRzbG90ID0gcGMtPmRzdHNsb3Q7CisKKwkJCUV4ZWNDbGVh clR1cGxlKGluc2VydHNsb3QpOworCisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVl cywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xv dC0+dHRzX252YWxpZCk7CisJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jj c2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNf bnZhbGlkKTsKKworCQkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGluc2VydHNsb3QpOworCQl9 CisKKwkJLyoKKwkJICogQ29uc3RyYWludHMgYW5kIEdFTkVSQVRFRCBleHByZXNzaW9ucyBt aWdodCByZWZlcmVuY2UgdGhlIHRhYmxlb2lkCisJCSAqIGNvbHVtbiwgc28gZmlsbCB0dHNf dGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4gKFdlIG11c3QgZG8KKwkJICogdGhp cyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRoIG5ld3JlbCdz IE9JRCBkdXJpbmcKKwkJICogc3RvcmluZy4pCisJCSAqLworCQlpbnNlcnRzbG90LT50dHNf dGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKTsKKworCQkvKgorCQkg KiBOb3csIGV2YWx1YXRlIGFueSBnZW5lcmF0ZWQgZXhwcmVzc2lvbnMgd2hvc2UgaW5wdXRz IGNvbWUgZnJvbQorCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNvbHVt bnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJICogb3RoZXIsIHNvIHRoYXQgdGhlcmUncyBu byBvcmRlcmluZyBkZXBlbmRlbmN5LgorCQkgKi8KKwkJZXZhbHVhdGVHZW5lcmF0ZWRFeHBy ZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHMocGMtPnRhYiwgcGMtPnBhcnRSZWwsCisJCQkJ CQkJCQkJCQkJCWluc2VydHNsb3QsIGVjb250ZXh0KTsKKworCQkvKiBXcml0ZSB0aGUgdHVw bGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCXRhYmxlX3R1cGxlX2luc2VydChw Yy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkgICB0aV9vcHRpb25zLCBw Yy0+YmlzdGF0ZSk7CisKKwkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisJfQorCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4p OworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwlpZiAodHVwbGVfbWFwKQor CQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsK KworCWZvcmVhY2hfcHRyKFNwbGl0UGFydGl0aW9uQ29udGV4dCwgc3BjLCBwYXJ0Q29udGV4 dHMpCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChzcGMsIHdxdWV1ZSwgdGlfb3B0 aW9ucyk7CisKKwkvKiBOZWVkIHRvIGNsb3NlIHRhYmxlIGFuZCBmcmVlIGJ1ZmZlcnMgZm9y IERFRkFVTFQgcGFydGl0aW9uLiAqLworCWlmIChpc09sZERlZmF1bHRQYXJ0KQorCXsKKwkJ UmVsYXRpb24JZGVmYXVsdFBhcnRSZWwgPSBkZWZhdWx0UGFydEN0eC0+cGFydFJlbDsKKwor CQlkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoZGVmYXVsdFBhcnRDdHgsIHdxdWV1ZSwg dGlfb3B0aW9ucyk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0 YWJsZV9jbG9zZShkZWZhdWx0UGFydFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKKy8qCisgKiBB TFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gSU5U TyA8cGFydGl0aW9uLWxpc3Q+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTcGxpdFBhcnRp dGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKKwkJCQkJIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQg KmNvbnRleHQpCit7CisJUmVsYXRpb24Jc3BsaXRSZWw7CisJT2lkCQkJc3BsaXRSZWxPaWQ7 CisJY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisJTGlzdENlbGwgICAqbGlzdHB0ciwK KwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJ dG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7 CisJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lk CQkJc2F2ZV91c2VyaWQ7CisJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZl X25lc3RsZXZlbDsKKworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21f cGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyoK KwkgKiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRp dGlvbkNtZEZvclNwbGl0CisJICogZnVuY3Rpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJs ZV9vcGVucnYoY21kLT5uYW1lLCBOb0xvY2spOworCisJc3BsaXRSZWxPaWQgPSBSZWxhdGlv bkdldFJlbGlkKHNwbGl0UmVsKTsKKworCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBvZiBuZXcg cGFydGl0aW9ucy4gKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3Bz LCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKworCQlzdHJs Y3B5KHJlbG5hbWUsIHNwcy0+bmFtZS0+cmVsbmFtZSwgTkFNRURBVEFMRU4pOworCisJCS8q CisJCSAqIExvb2sgdXAgZXhpc3RpbmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlvbiBuYW1l LCBjaGVjayB3ZSBoYXZlCisJCSAqIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2Nr IGl0IGFnYWluc3QgY29uY3VycmVudCBkcm9wLCBhbmQgbWFyaworCQkgKiBzdG10LT5yZWxh dGlvbiBhcyBSRUxQRVJTSVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBp cworCQkgKiBzZWxlY3RlZC4KKwkJICovCisJCXNwcy0+bmFtZS0+cmVscGVyc2lzdGVuY2Ug PSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tD cmVhdGlvbk5hbWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOwor CisJCS8qCisJCSAqIFRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJl bGF0aW9uIGFscmVhZHkgZXhpc3RzLiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3 ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3Rp bmdSZWxpZCA9PSBzcGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcg cGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAq LworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3Rp bmdSZWxpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBl eGlzdHMiLCByZWxuYW1lKSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4g Ki8KKwlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9p ZCk7CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1p bmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcCBhbGwKKwkgKiBtZXJnaW5nIHBhcnRpdGlv bnMgYmVmb3JlIHdlIGFjdHVhbGx5IGRvIHNvIGxhdGVyLiBBZnRlciBtZXJnaW5nIHJvd3MK KwkgKiBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucyB2aWEgU3BsaXRQYXJ0aXRpb25Nb3ZlUm93 cywgYWxsIG9sZCBwYXJ0aXRpb25zCisJICogbmVlZCBiZSBkcm9wcGVkLiBIb3dldmVyLCBz aW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBEUk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBt ZXJnZSBwcm9jZXNzIChTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKSBjYW4gYmUgdGltZS1jb25z dW1pbmcsCisJICogcGVyZm9ybWluZyBhbiBlYXJseSBjaGVjayBvbiB0aGUgZHJvcCBlbGln aWJpbGl0eSBvZiBvbGQgcGFydGl0aW9ucyBpcworCSAqIHByZWZlcmFibGUuCisJICovCisJ b2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0LmNsYXNzSWQgPSBSZWxh dGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwlwZXJmb3JtRGVs ZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9OX0lO VEVSTkFMKTsKKworCS8qCisJICogSWYgbmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFt ZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhlbiB3ZSBzaG91bGQKKwkgKiByZW5hbWUgc3BsaXQg cGFydGl0aW9uIGZvciByZXVzaW5nIG5hbWUuCisJICovCisJaWYgKGlzU2FtZU5hbWUpCisJ eworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtl IHRoZSBzcGxpdCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBmb3IgcmVuYW1pbmcu CisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkvKiBSZW5hbWUgcGFy dGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJzcGxpdC0ldS0lWC10bXAiLCBS ZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisJCVJlbmFtZVJlbGF0aW9uSW50 ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5hbWUsIHRydWUsIGZhbHNlKTsKKworCQkvKgor CQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBzcGxp dCBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBhZnRlciByZW5hbWluZy4KKwkJICov CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJfQorCisJLyogQ3JlYXRlIG5ldyBw YXJ0aXRpb25zIChsaWtlIHNwbGl0IHBhcnRpdGlvbiksIHdpdGhvdXQgaW5kZXhlcy4gKi8K Kwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBjbWQtPnBhcnRsaXN0 KQorCXsKKwkJUmVsYXRpb24JbmV3UGFydFJlbDsKKworCQluZXdQYXJ0UmVsID0gY3JlYXRl UGFydGl0aW9uVGFibGUod3F1ZXVlLCBzcHMtPm5hbWUsIHJlbCwKKwkJCQkJCQkJCQkgIHNw bGl0UmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJbmV3UGFydFJlbHMgPSBsYXBwZW5kKG5l d1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisKKwkvKgorCSAqIFN3aXRjaCB0byB0aGUg dGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBhcmUg cnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24gc2VjdXJpdHktcmVzdHJp Y3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFibGUg Y2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRvIGl0 IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUgY2Fs bC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVf c2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc3BsaXRSZWwtPnJkX3Jl bC0+cmVsb3duZXIsCisJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVT VFJJQ1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVs KCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBzcGxp dCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMuICovCisJU3BsaXRQYXJ0aXRpb25Nb3Zl Um93cyh3cXVldWUsIHJlbCwgc3BsaXRSZWwsIGNtZC0+cGFydGxpc3QsIG5ld1BhcnRSZWxz LCBkZWZhdWx0UGFydE9pZCk7CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICov CisJdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisKKwkvKiBBdHRhY2ggbmV3IHBh cnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCisJZm9yYm90aChsaXN0cHRyLCBj bWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0 aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0 cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRy Mik7CisKKwkJLyoKKwkJICogd3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZvciBlYWNo IGNsb25lZCBjb25zdHJhaW50IGlzIG5vdAorCQkgKiBuZWVkZWQuCisJCSAqLworCQlhdHRh Y2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIHNwcy0+Ym91bmQpOwor CQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwkJdGFibGVfY2xvc2UobmV3 UGFydFJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKiBEcm9wIHNwbGl0IHBhcnRpdGlvbi4gKi8K KwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0 SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCS8qIFByb2Jh Ymx5IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVkLiAqLworCXBlcmZvcm1EZWxldGlvbigm b2JqZWN0LCBEUk9QX1JFU1RSSUNULCAwKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNo YW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zLiAqLworCUF0RU9YYWN0X0dVQyhm YWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOworCisJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3Vy aXR5IGNvbnRleHQuICovCisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwg c2F2ZV9zZWNfY29udGV4dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA0NmJiZGNiYzc0Li5h ZWQ3OWI2M2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1Nyw2ICsyNTcsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0gKnBhcnRlbGVtOwogCVBhcnRp dGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kc3Bl YzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3BlYzsKIAlSb2xlU3BlYyAg ICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1YmxpY2F0aW9ub2JqZWN0c3Bl YzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQwLDYgKzY0MSw4 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+CXBhcnRf ZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3VuZHNwZWM+ IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5nbGVQYXJ0 aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUgPGxpc3Q+ CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0K IApAQCAtNzcwLDcgKzc3Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU0FW RVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNF Q1VSSVRZIFNFTEVDVAogCVNFUVVFTkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJW RVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJ TUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTT1VSQ0UgU1FMX1Ag U1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05B UFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNU QVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBT VFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQ T1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgogCkBAIC0yMzIxLDYg KzIzMjQsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAn LCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitw YXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBs aXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRp dGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRp dGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRT cGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2lu Z2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3Vu ZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoK IAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1l PiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBh cnRpdGlvbkJvdW5kU3BlYwpAQCAtMjM2NSw2ICsyMzg1LDIwIEBAIHBhcnRpdGlvbl9jbWQ6 CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwog CQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRp dGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQTElUIFBBUlRJVElPTiBxdWFsaWZpZWRf bmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJyknCisJCQkJeworCQkJCQlBbHRlclRh YmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNt ZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0g QVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFtZSA9ICQzOworCQkJCQljbWQtPmJv dW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ2OworCQkJCQljbWQtPmNvbmN1 cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBB UlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCiAJCQl8IE1FUkdFIFBBUlRJ VElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUK IAkJCQl7CkBAIC0xNzk2Myw2ICsxNzk5Nyw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgU0tJUAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwg U1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTg2MDMsNiArMTg2 MzgsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUK IAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJ fCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGY1 NWFkMTc1MjguLjczMzE1ZWZhYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnN0cmFpbnRB dHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIExpc3QgKmNvbnN0cmFp bnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtblR5cGUoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pOwogc3RhdGljIHZvaWQgc2V0U2NoZW1h TmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25h bWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVBh cnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMg KmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1QYXJ0aXRpb25SYW5nZUJvdW5kcyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0LAogCQkJCQkJCQkJCSAgIFJlbGF0aW9u IHBhcmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUluZmluaXRlQm91bmRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAtMzUyNiw2ICszNTI2LDQ2IEBAIGNoZWNr UGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCiAJdGFibGVfY2xvc2Uo cGFydFJlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZv clNwbGl0CisgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3IHBhcnRpdGlvbiBzcHMtPmJvdW5kIGlz IHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCisgKiBEb2VzIGNoZWNr cyBmb3IgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zLgorICovCitzdGF0aWMgdm9pZAordHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFy dGl0aW9uQ21kICpwYXJ0Y21kKQoreworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOwor CU9pZAkJCXNwbGl0UGFydE9pZDsKKworCS8qIFRyYW5zZm9ybSBwYXJ0aXRpb24gYm91bmRz IGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdDogKi8KKwlmb3JlYWNoX25vZGUoU2lu Z2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCWN4dC0+ cGFydGJvdW5kID0gTlVMTDsKKwkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKGN4dCwgc3BzLT5i b3VuZCk7CisJCS8qIEFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9u IGJvdW5kLiAqLworCQlzcHMtPmJvdW5kID0gY3h0LT5wYXJ0Ym91bmQ7CisJfQorCisJLyoK KwkgKiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbiwgY2hlY2sgb3duZXJzaGlwIGFsb25nIHRo ZSB3YXkuIFdlIG5lZWQgdG8gdXNlCisJICogQWNjZXNzRXhjbHVzaXZlTG9jayBoZXJlLCBi ZWNhdXNlIHRoaXMgc3BsaXQgcGFydGl0aW9uIHdpbGwgYmUgZGV0YWNoZWQKKwkgKiB0aGVu IGRyb3BwZWQgaW4gQVRFeGVjU3BsaXRQYXJ0aXRpb24uCisJICovCisJc3BsaXRQYXJ0T2lk ID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKHBhcnRjbWQtPm5hbWUsCisJCQkJCQkJCQkJ CUFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCisJCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCQlS YW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uLAorCQkJCQkJCQkJCQlOVUxMKTsKKworCWNo ZWNrUGFydGl0aW9uKHBhcmVudCwgc3BsaXRQYXJ0T2lkKTsKKworCS8qIFRoZW4gd2Ugc2hv dWxkIGNoZWNrIHBhcnRpdGlvbnMgd2l0aCB0cmFuc2Zvcm1lZCBib3VuZHMuICovCisJY2hl Y2tfcGFydGl0aW9uc19mb3Jfc3BsaXQocGFyZW50LCBzcGxpdFBhcnRPaWQsIHBhcnRjbWQt PnBhcnRsaXN0LCBjeHQtPnBzdGF0ZSk7Cit9CisKKwogLyoKICAqIHRyYW5zZm9ybVBhcnRp dGlvbkNtZEZvck1lcmdlCiAgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgY29tbWFuZApAQCAtMzg5Miw3ICszOTMyLDcgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQl7CiAJ CQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7 CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQpOworCQkJCQl0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQpOwogCQkJCQkvKiBh c3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZCAqLwogCQkJ CQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpAQCAtMzkwMCw2ICsz OTQwLDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxl U3RtdCAqc3RtdCwKIAkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOwogCQkJ CWJyZWFrOwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgogCQkJY2FzZSBBVF9NZXJn ZVBhcnRpdGlvbnM6CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFy dGl0aW9uQ21kICopIGNtZC0+ZGVmOwpAQCAtMzkwOCw3ICszOTQ5LDExIEBAIHRyYW5zZm9y bUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCiAJCQkJCQkJCWVycm1zZygibGlzdCBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMiKSk7Ci0JCQkJCXRyYW5zZm9y bVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCisJCQkJCWlmIChjbWQt PnN1YnR5cGUgPT0gQVRfU3BsaXRQYXJ0aXRpb24pCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JTcGxpdCgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJZWxzZQorCQkJCQkJdHJhbnNm b3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNtZCk7CiAJCQkJCW5ld2NtZHMg PSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KQEAgLTQzNDMs MTMgKzQzODgsMTMgQEAgc2V0U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVt YSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAKIC8qCiAgKiB0cmFuc2Zvcm1QYXJ0aXRp b25DbWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5k CisgKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSC9TUExJVCBQQVJUSVRJT04gY29tbWFu ZAogICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSCBQQVJUSVRJT04gY29tbWFuZCwgY3h0 LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICogdHJhbnNmb3JtZWQgdmFsdWUgb2YgY21k LT5ib3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSC9TUExJVCBQQVJUSVRJT04gY29t bWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQorICogdHJhbnNmb3JtZWQgdmFs dWUgb2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi10cmFuc2Zvcm1QYXJ0aXRpb25DbWQo Q3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCit0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQm91bmRTcGVj ICpib3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRSZWwgPSBjeHQtPnJlbDsKIApAQCAtNDM1 OCw5ICs0NDAzLDkgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBhcnRpdGlvbiBib3VuZCwgaWYgYW55ICov CiAJCQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50UmVsKSAhPSBOVUxM KTsKLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkK IAkJCQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kKGN4dC0+cHN0 YXRlLCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJCSBjbWQtPmJvdW5kKTsKKwkJCQkJCQkJ CQkJCQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURf SU5ERVg6CiAKQEAgLTQzNjgsNyArNDQxMyw3IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChD cmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJCSAqIEEgcGFy dGl0aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBwYXJ0aXRpb24gYm91bmQgc2V0LiAgQUxU RVIKIAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQgd2l0aCBpdHMgZ3JhbW1hciwgYnV0IG5v dCBBTFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJ CWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJIGVycm1zZygi XCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlIiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDlmN2MwMWI3ZmEuLjljNzMwZTEyN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtNDk4NCwxNSArNDk4NCwy MSBAQCBzYXRpc2ZpZXNfaGFzaF9wYXJ0aXRpb24oUEdfRlVOQ1RJT05fQVJHUykKICAqCiAg KiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZykKICAqCi0gKiBUaGlzIGlz IGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9t ZXJnZSgpLgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0 aW9uc19mb3Jfc3BsaXQoKSBhbmQKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9y X21lcmdlKCkuCiAgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGFuZCBsb3dlciBib3VuZCBvZgotICogc2Vjb25kX2JvdW5kLiBUaGVzZSBi b3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMg c2hvdWxkIGJlIGVxdWFsIGV4Y2VwdCB3aGVuCisgKiAiZGVmYXVsdFBhcnQgPT0gdHJ1ZSIg KHRoaXMgbWVhbnMgdGhhdCBvbmUgb2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBERUZBVUxUKS4K KyAqIEluIHRoaXMgY2FzZSB1cHBlciBib3VuZCBvZiBmaXJzdF9ib3VuZCBjYW4gYmUgbGVz cyB0aGFuIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQgYmVjYXVzZSBzcGFjZSBi ZXR3ZWVuIHRoZXNlIGJvdW5kcyB3aWxsIGJlIGluY2x1ZGVkIGluCisgKiBERUZBVUxUIHBh cnRpdGlvbi4KICAqCiAgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKICAqIGZpcnN0 X25hbWU6CQluYW1lIG9mIGZpcnN0IHBhcnRpdGlvbgogICogZmlyc3RfYm91bmQ6CQlib3Vu ZCBvZiBmaXJzdCBwYXJ0aXRpb24KICAqIHNlY29uZF9uYW1lOgkJbmFtZSBvZiBzZWNvbmQg cGFydGl0aW9uCiAgKiBzZWNvbmRfYm91bmQ6CWJvdW5kIG9mIHNlY29uZCBwYXJ0aXRpb24K KyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpZiBvbmUgb2Ygc3BsaXQgcGFydGl0aW9ucyBpcyBE RUZBVUxUCiAgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3Ig ZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KICAqLwogc3RhdGljIHZvaWQKQEAgLTUwMDEs NiArNTAwNyw3IEBAIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlv biBwYXJlbnQsCiAJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpmaXJzdF9ib3VuZCwK IAkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCiAJCQkJCQkJCSAgUGFydGl0aW9u Qm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgYm9vbCBkZWZhdWx0UGFydCwK IAkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CkBAIC01MDIyLDcgKzUwMjksNyBA QCBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAog CQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKIAkJCQkJCQkJICBzZWNvbmRfbG93ZXIt PmRhdHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAogCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91 cHBlcik7Ci0JaWYgKGNtcHZhbCkKKwlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8 IChkZWZhdWx0UGFydCAmJiBjbXB2YWwgPCAwKSkKIAl7CiAJCVBhcnRpdGlvblJhbmdlRGF0 dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CiAKQEAg LTUxMzQsNyArNTE0MSw3IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdl KFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMg KikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKIAkJCQkJCQkJCQkJCQkgIChSYW5n ZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKIAkJCQkJCQkJCQkJCQkgIChQ YXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCi0JCQkJCQkJ CQkJCQkJICBwc3RhdGUpOworCQkJCQkJCQkJCQkJCSAgZmFsc2UsIHBzdGF0ZSk7CiAJCQkJ fQogCiAJCQkJLyoKQEAgLTUxNzIsMyArNTE3OSw2NzIgQEAgY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCSAoaW50KSBrZXktPnN0 cmF0ZWd5KTsKIAl9CiB9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFw X2xpc3QKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoK KyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9y X3NwbGl0KCkuCisgKiBDaGVja3MgdGhhdCB0aGUgdmFsdWVzIG9mIHRoZSBuZXcgcGFydGl0 aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxl CisgKiBwYXJ0czoJYXJyYXkgb2YgU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3RzIHdpdGgg aW5mbyBhYm91dCBzcGxpdCBwYXJ0aXRpb25zCisgKiBucGFydHM6CXNpemUgb2YgYXJyYXkg InBhcnRzIgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rfb3Zlcmxh cF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVj ICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBQYXJzZVN0YXRl ICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWludAkJCW92ZXJsYXBf bG9jYXRpb24gPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3Bl YyAqc3BzMSwKKwkJCSAgICpzcHMyOworCUxpc3QJICAgKm92ZXJsYXA7CisKKwlBc3NlcnQo a2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwlmb3IgKGkg PSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlzcHMxID0gcGFydHNbaV07CisKKwkJZm9y IChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJc3BzMiA9IHBhcnRzW2pd OworCisJCQkvKgorCQkJICogQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVl cyBvZiB0d28gcGFydGl0aW9ucy4KKwkJCSAqLworCQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJz ZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0ZGF0dW1zLAorCQkJCQkJCQkJCXNwczItPmJvdW5k LT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7 CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsZmlyc3QobGlzdF9oZWFkKG92ZXJs YXApKTsKKworCQkJCW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92 ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCQkgICBz cHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwkJCX0KKwkJfQor CX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3Jhbmdl CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICog Q2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGFyZSBpbnNpZGUg Ym91bmRzIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCku IElmIGZpcnN0PXRydWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMKKyAqIHRoZSBmaXJz dCBvZiBuZXcgcGFydGl0aW9ucykgdGhlbiBsb3dlciBib3VuZCBvZiAic3BlYyIgc2hvdWxk IGJlIGVxdWFsIChvcgorICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGluIGNhc2UgZGVmYXVs dFBhcnQ9dHJ1ZSkgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQKKyAqIHBhcnRpdGlvbi4gSWYg bGFzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzIHRoZSBsYXN0IG9mIG5ldwor ICogcGFydGl0aW9ucykgdGhlbiB1cHBlciBib3VuZCBvZiAic3BlYyIgc2hvdWxkIGJlIGVx dWFsIChvciBsZXNzIHRoYW4gb3IKKyAqIGVxdWFsIGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1 ZSkgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9mIHRoZSBuZXcgcGFy dGl0aW9uCisgKiBzcGVjOgkJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBuZXcgcGFy dGl0aW9uCisgKiBzcGxpdFBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIGZpcnN0 OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFydGl0aW9uICJzcGVjIiBpcyBmaXJzdCBvZiBuZXcg cGFydGl0aW9ucworICogbGFzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3Bl YyIgaXMgbGFzdCBvZiBuZXcgcGFydGl0aW9ucworICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlu IGNhc2UgcGFydGl0aW9uZWQgdGFibGUgaGFzIERFRkFVTFQgcGFydGl0aW9uCisgKiBwc3Rh dGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9y IHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zv cl9zcGxpdF9yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBjaGFyICpyZWxu YW1lLAorCQkJCQkJCQkJICAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJ ICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIGJvb2wgZmlyc3QsCisJCQkJCQkJ CQkgICBib29sIGxhc3QsCisJCQkJCQkJCQkgICBib29sIGRlZmF1bHRQYXJ0LAorCQkJCQkJ CQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxh dGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmxv d2VyLAorCQkJICAgKnVwcGVyOworCWludAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0 cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisJQXNzZXJ0KHNwZWMtPnN0 cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisKKwlsb3dlciA9IG1ha2Vf b25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUp OworCXVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVjLT51 cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyoKKwkgKiBGaXJzdCBjaGVjayBpZiB0aGUgcmVz dWx0aW5nIHJhbmdlIHdvdWxkIGJlIGVtcHR5IHdpdGggc3BlY2lmaWVkIGxvd2VyCisJICog YW5kIHVwcGVyIGJvdW5kcy4gIHBhcnRpdGlvbl9yYm91bmRfY21wIGNhbm5vdCByZXR1cm4g emVybyBoZXJlLCBzaW5jZQorCSAqIHRoZSBsb3dlci1ib3VuZCBmbGFncyBhcmUgZGlmZmVy ZW50LgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5h dHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0 Y29sbGF0aW9uLAorCQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJ CQkJCQkgIHRydWUsIHVwcGVyKTsKKwlBc3NlcnQoY21wdmFsICE9IDApOworCWlmIChjbXB2 YWwgPiAwKQorCXsKKwkJLyogUG9pbnQgdG8gcHJvYmxlbWF0aWMga2V5IGluIHRoZSBsb3dl ciBkYXR1bXMgbGlzdC4gKi8KKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaXN0 X250aChzcGVjLT5sb3dlcmRhdHVtcywgY21wdmFsIC0gMSk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJZXJybXNnKCJlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiBc IiVzXCIiLAorCQkJCQkgICByZWxuYW1lKSwKKwkJCQllcnJkZXRhaWwoIlNwZWNpZmllZCBs b3dlciBib3VuZCAlcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQg JXMuIiwKKwkJCQkJCSAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoc3BlYy0+bG93ZXJk YXR1bXMpLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT51cHBl cmRhdHVtcykpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2Nh dGlvbikpOworCX0KKworCS8qIE5lZWQgdG8gY2hlY2sgZmlyc3QgYW5kIGxhc3QgcGFydGl0 aW9ucyAoZnJvbSBzZXQgb2YgbmV3IHBhcnRpdGlvbnMpICovCisJaWYgKGZpcnN0IHx8IGxh c3QpCisJeworCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwbGl0X3NwZWMgPSBnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMoc3BsaXRQYXJ0T2lkKTsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAq ZGF0dW07CisKKwkJaWYgKGZpcnN0KQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpz cGxpdF9sb3dlcjsKKworCQkJc3BsaXRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCQkJY21w dmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJ ICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAor CQkJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCQkJICB0 cnVlLCBzcGxpdF9sb3dlcik7CisKKwkJCS8qCisJCQkgKiBMb3dlciBib3VuZCBvZiAic3Bl YyIgc2hvdWxkIGJlIGVxdWFsIChvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwKKwkJCSAqIGlu IGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uLgorCQkJICovCisJCQlpZiAoIWRlZmF1bHRQYXJ0KQorCQkJeworCQkJCWlmIChjbXB2 YWwgIT0gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1 bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1z ZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gbG93 ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJ CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJ CQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWlmIChjbXB2YWwgPCAwKQorCQkJCXsK KwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkg LSAxKTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gXCIlc1wiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZUJvdW5kICpzcGxpdF91cHBlcjsKKworCQkJ c3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0 X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkJCWNtcHZhbCA9IHBhcnRpdGlvbl9y Ym91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVu YywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkgIHVwcGVy LT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAgZmFsc2UsIHNwbGl0X3VwcGVy KTsKKworCQkJLyoKKwkJCSAqIFVwcGVyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1 YWwgKG9yIGxlc3MgdGhhbiBvciBlcXVhbCBpbgorCQkJICogY2FzZSBkZWZhdWx0UGFydD10 cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlm ICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJ CQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAx KTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJ1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJaWYgKGNtcHZhbCA+IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3Rf bnRoKHNwZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIg aXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJ CQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRh dHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIGNo ZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAqCisgKiAoZnVuY3Rpb24g Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBv ZiBuZXcgcGFydGl0aW9uIGFyZSBpbnNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlvbgor ICogKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlv bmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAq IHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRpb24KKyAq IHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcHN0YXRlOgkJCXBvaW50 ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgor ICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlz dChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgIFBhcnRpdGlv bkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJ CQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxh dGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2Mg PSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9u Qm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJd2l0 aCA9IC0xOworCWJvb2wJCW92ZXJsYXAgPSBmYWxzZTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0 aW9uID0gLTE7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRF R1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUKTsKKwlBc3NlcnQoYm91bmRpbmZvICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0g UEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1 ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBpbiBleGlzdGluZyBwYXJ0aXRpb25zLiBBbGwK KwkgKiBvZiB0aGVtIHNob3VsZCBiZSBpbiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHNw bGl0UGFydE9pZCkuCisJICovCisJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwZWMtPmxp c3RkYXR1bXMpCisJeworCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJ aWYgKCF2YWwtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlvZmZzZXQ7CisJCQlib29s CQllcXVhbDsKKworCQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3RfYnNlYXJjaCgma2V5LT5w YXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJ CQkJCQlib3VuZGluZm8sCisJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJ CQkJJmVxdWFsKTsKKwkJCWlmIChvZmZzZXQgPj0gMCAmJiBlcXVhbCkKKwkJCXsKKwkJCQl3 aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldF07CisJCQkJaWYgKHBhcnRkZXNjLT5v aWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQl7CisJCQkJCW92ZXJsYXAgPSB0cnVl OworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2 YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkg ICByZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBf bG9jYXRpb24pKTsKKwkJfQorCQllbHNlIGlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19u dWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRoID0gYm91bmRpbmZvLT5udWxsX2luZGV4 OworCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCXsK KwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90 IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZl IiwKKwkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorCisJaWYgKG92ZXJsYXApCisJeworCQlBc3Nl cnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9u IFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRp b24gXCIlc1wiIiwKKwkJCQkJICAgcmVsbmFtZSwgZ2V0X3JlbF9uYW1lKHBhcnRkZXNjLT5v aWRzW3dpdGhdKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9s b2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlv bnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisg KgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGluIGNhc2UgYW55IG9mIG5ldyBwYXJ0aXRp b25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisgKgorICogcGFydHN1cGZ1bmM6CQlpbmZv cm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUg cGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlvbjoJcGFydGl0aW9uaW5nIGNvbGxhdGlv bgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRl c2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJlciBvZiBuZXcgcGFydGl0aW9ucworICog dmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yCisgKiBpc251bGw6 CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IgaXMgTlVMTAor ICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KEZt Z3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBPaWQgKnBhcnRjb2xsYXRpb24sCisJ CQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBu cGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJCQkJCSAgYm9vbCBpc251bGwp Cit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwl7CisJCVNpbmdsZVBh cnRpdGlvblNwZWMgKnNwcyA9IHBhcnRzW2ldOworCisJCWZvcmVhY2hfbm9kZShDb25zdCwg dmFsLCBzcHMtPmJvdW5kLT5saXN0ZGF0dW1zKQorCQl7CisJCQlpZiAoaXNudWxsICYmIHZh bC0+Y29uc3Rpc251bGwpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYm ICF2YWwtPmNvbnN0aXNudWxsKQorCQkJeworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0 aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0 aW9uWzBdLAorCQkJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2 YWx1ZSkpID09IDApCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVy biBmYWxzZTsKK30KKworLyoKKyAqIGNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRp dGlvbnMKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoK KyAqIENoZWNrcyB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uICh3aXRoIE9p ZCBwYXJ0T2lkKSBjb250YWlucyBpbiBuZXcKKyAqIHBhcnRpdGlvbnMuCisgKgorICogcGFy ZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9p ZAorICogcGFydHM6CXBvaW50ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNj cmlwdGlvbnMKKyAqIG5wYXJ0czoJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3Rh dGU6CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBw b3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdf cGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAor CQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJCQkgIGlu dCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRp b25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRp b25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFs c2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRp bmZvOworCWludAkJCWk7CisJYm9vbAkJZm91bmQgPSB0cnVlOworCWJvb2wJCXNlYXJjaE51 bGwgPSBmYWxzZTsKKwlEYXR1bQkJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisK KwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisK KwkvKgorCSAqIFNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5V TEwgdmFsdWUgaWYgdGhlIHNwbGl0CisJICogcGFydGl0aW9uIChwYXJ0T2lkKSBjb250YWlu cyBpdC4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRp bmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBh cnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgm a2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9u LCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgdHJ1ZSkpCisJCXsKKwkJCWZvdW5kID0gZmFsc2U7 CisJCQlzZWFyY2hOdWxsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogU2VhcmNoIGFs bCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHdpdGggcGFydE9pZCBpbiBQYXJ0aXRpb25E ZXNjIG9mCisJICogcGFydGl0aW9uZWQgdGFibGUuCisJICovCisJZm9yIChpID0gMDsgaSA8 IGJvdW5kaW5mby0+bmRhdHVtczsgaSsrKQorCXsKKwkJaWYgKHBhcnRkZXNjLT5vaWRzW2Jv dW5kaW5mby0+aW5kZXhlc1tpXV0gPT0gcGFydE9pZCkKKwkJeworCQkJLyogV2UgZm91bmQg dmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gY29udGFpbnMuICovCisJCQlkYXR1bSA9IGJv dW5kaW5mby0+ZGF0dW1zW2ldWzBdOworCQkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0 aXRpb25zX2xpc3QoJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkgICBrZXkt PnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCBmYWxzZSkpCisJCQl7CisJ CQkJZm91bmQgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmICgh Zm91bmQpCisJeworCQlDb25zdAkgICAqbm90Rm91bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hO dWxsKQorCisJCQkvKgorCQkJICogTWFrZSBDb25zdCBmb3IgZ2V0dGluZyBzdHJpbmcgcmVw cmVzZW50YXRpb24gb2Ygbm90IGZvdW5kCisJCQkgKiB2YWx1ZS4KKwkJCSAqLworCQkJbm90 Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0sCisJCQkJCQkJCQlrZXkt PnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBjb2xsWzBdLAorCQkJCQkJ CQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQkJZGF0dW0sCisJCQkJCQkJCQlmYWxz ZSwJLyogaXNudWxsICovCisJCQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7CisKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1 ZSAlcyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMiLAorCQkJCQkgICBzZWFyY2hOdWxsID8g Ik5VTEwiIDogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKTsKKwl9 Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAorICoKKyAqIENoZWNr cyBuZXcgcGFydGl0aW9ucyBmb3IgU1BMSVQgUEFSVElUSU9OUyBjb21tYW5kOgorICogMS4g REVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZS4KKyAqIDIuIE5ldyBwYXJ0aXRpb25z IHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcworICogICAgKHdpdGggZXhpc3RpbmcgcGFy dGl0aW9ucyB0b28pLgorICogMy4gQm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBu b3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcKKyAqICAgIHBhcnRpdGlvbnMuCisg KiA0LiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiwgb25l IG9mIG5ldyBwYXJ0aXRpb25zCisgKiAgICBzaG91bGQgYmUgREVGQVVMVC4KKyAqIDUuIElu IGNhc2UgbmV3IHBhcnRpdGlvbnMgb3IgZXhpc3RpbmcgcGFydGl0aW9ucyBjb250YWlucyBE RUZBVUxUCisgKiAgICBwYXJ0aXRpb24sIG5ldyBwYXJ0aXRpb25zIGNhbiBoYXZlIGFueSBi b3VuZHMgaW5zaWRlIHNwbGl0CisgKiAgICBwYXJ0aXRpb24gYm91bmQgKGNhbiBiZSBzcGFj ZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcykuCisgKiA2LiBJbiBjYXNlIHBhcnRpdGlv bmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24sIERFRkFVTFQKKyAq ICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBhcyBvbmUgb2YgbmV3IHBhcnRpdGlvbi4K KyAqIDcuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgbm90IGNvbnRhaW5zIERFRkFVTFQgcGFy dGl0aW9uIGFuZAorICogICAgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZB VUxUIHBhcnRpdGlvbiB0aGUgZm9sbG93aW5nCisgKiAgICBzaG91bGQgYmUgdHJ1ZTogc3Vt IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgZXF1YWwKKyAqICAgIHRvIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQg dGFibGUKKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogbGlzdDoJ CQlsaXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJz ZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQK K2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAg IE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAg IFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0 cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWJvb2wJCWlzU3BsaXRQYXJ0RGVm YXVsdDsKKwlib29sCQlleGlzdHNEZWZhdWx0UGFydDsKKwlpbnQJCQlkZWZhdWx0X2luZGV4 ID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdf cGFydHM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzUHJldiA9IE5VTEw7CisJaW50CQkJ bnBhcnRzID0gMDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7 CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2gg KHN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2Fz ZSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYWtl IGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJ CQkJICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0 aXRpb25TcGVjICoqKQorCQkJCQlwYWxsb2MwKGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNp emVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJCQlpID0gMDsKKwkJCQlmb3JlYWNo X25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwkJCQl7CisJCQkJ CWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVmYXVs dF9pbmRleCA+PSAwKQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQllcnJtc2co IkRFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUiKSwKKwkJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1 bHRfaW5kZXggPSBpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJbmV3X3Bh cnRzW25wYXJ0cysrXSA9IHNwczsKKwkJCQkJfQorCQkJCQlpKys7CisJCQkJfQorCQkJfQor CQkJYnJlYWs7CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQllcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNh bm5vdCBiZSBzcGxpdCIpKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkg a2V5LT5zdHJhdGVneSk7CisJCQlicmVhazsKKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFS VElUSU9OX1NUUkFURUdZX1JBTkdFKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxv d2VyX2JvdW5kczsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqKnRtcF9uZXdfcGFydHM7CisK KwkJLyoKKwkJICogRm9yIHNpbXBsaWZ5IGNoZWNrIGZvciByYW5nZXMgb2YgbmV3IHBhcnRp dGlvbnMgbmVlZCB0byBzb3J0IGFsbAorCQkgKiBwYXJ0aXRpb25zIGluIGFzY2VuZGluZyBv cmRlciBvZiB0aGVtIGJvdW5kcyAod2UgY29tcGFyZSB1cHBlcgorCQkgKiBib3VuZCBvbmx5 KS4KKwkJICovCisJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQor CQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisK KwkJLyogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJZm9yIChpID0gMDsg aSA8IG5wYXJ0czsgaSsrKQorCQl7CisJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgaSwKKwkJCQkJCQkJCQkJCQkJbmV3X3BhcnRzW2ldLT5i b3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQl9CisKKwkJLyogU29ydCBhcnJheSBvZiBs b3dlciBib3VuZHMuICovCisJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6 ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJICBxc29ydF9wYXJ0aXRpb25fcmJv dW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkvKiBSZW9yZGVyIGFycmF5IG9mIHBhcnRp dGlvbnMuICovCisJCXRtcF9uZXdfcGFydHMgPSBuZXdfcGFydHM7CisJCW5ld19wYXJ0cyA9 IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2Yo U2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkr KykKKwkJCW5ld19wYXJ0c1tpXSA9IHRtcF9uZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5p bmRleF07CisKKwkJcGZyZWUodG1wX25ld19wYXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5k cyk7CisJfQorCisJZGVmYXVsdFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9w YXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwkv KiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVM VCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBhcnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lk ID09IHNwbGl0UGFydE9pZCk7CisKKwlpZiAoaXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1 bHRfaW5kZXggPCAwKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJvbmUgcGFydGl0 aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0 aW9uIGlzIERFRkFVTFQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNp bmdsZVBhcnRpdGlvblNwZWMgKikgbGluaXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRp b24pKTsKKwl9CisJZWxzZSBpZiAoIWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9p bmRleCA+PSAwKSAmJiBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwc0RlZiA9CisJCQkoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBs aXN0X250aChwYXJ0bGlzdCwgZGVmYXVsdF9pbmRleCk7CisKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ ZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVM VCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBzcHNEZWYtPm5hbWUtPmxvY2F0aW9uKSk7CisJfQorCisJLyogSW5kaWNhdG9y IHRoYXQgcGFydGl0aW9uZWQgdGFibGUgaGFzIChvciB3aWxsIGhhdmUpIERFRkFVTFQgcGFy dGl0aW9uICovCisJZXhpc3RzRGVmYXVsdFBhcnQgPSBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0 T2lkKSB8fCAoZGVmYXVsdF9pbmRleCA+PSAwKTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFy dHM7IGkrKykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IG5ld19wYXJ0c1tp XTsKKworCQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0KQorCQl7CisJCQkvKgorCQkJICogSW4g Y2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24gd2UgY2FuIHVzZSBh bnkKKwkJCSAqIGZyZWUgcmFuZ2VzIC0gYXMgd2hlbiBjcmVhdGluZyBhIG5ldyBwYXJ0aXRp b24uCisJCQkgKi8KKwkJCWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoc3BzLT5uYW1lLT5y ZWxuYW1lLCBwYXJlbnQsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkgIHBzdGF0ZSk7CisJCX0K KwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogQ2hlY2tzIHRoYXQgYm91bmQgb2YgY3VycmVu dCBwYXJ0aXRpb24gaXMgaW5zaWRlIGJvdW5kIG9mIHNwbGl0CisJCQkgKiBwYXJ0aXRpb24u IEZvciByYW5nZSBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0aGF0IHVwcGVyIGJvdW5kIG9mCisJ CQkgKiBwcmV2aW91cyBwYXJ0aXRpb24gaXMgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2YgY3Vy cmVudAorCQkJICogcGFydGl0aW9uLiBGb3IgbGlzdCBwYXJ0aXRpb25pbmc6IGNoZWNrcyB0 aGF0IHNwbGl0IHBhcnRpdGlvbgorCQkJICogY29udGFpbnMgYWxsIHZhbHVlcyBvZiBjdXJy ZW50IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9T VFJBVEVHWV9SQU5HRSkKKwkJCXsKKwkJCQlib29sCQlmaXJzdCA9IChpID09IDApOworCQkJ CWJvb2wJCWxhc3QgPSAoaSA9PSAobnBhcnRzIC0gMSkpOworCisJCQkJY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UocGFyZW50LCBzcHMtPm5hbWUtPnJlbG5hbWUs IHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCQkJICAgc3BsaXRQYXJ0T2lkLCBmaXJzdCwgbGFz dCwKKwkJCQkJCQkJCQkJCQkgICBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKwkJCX0K KwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KHBh cmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJCQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwg c3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisKKwkJLyogUmFuZ2VzIG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJ VElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2KQorCQkJY2hlY2tfdHdvX3BhcnRpdGlv bnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJldi0+bmFtZSwgc3BzUHJldi0+Ym91bmQs CisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMtPmJvdW5kLCBleGlzdHNEZWZhdWx0UGFy dCwgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3BzOworCisJCS8qIENoZWNrOiBuZXcgcGFy dGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvciAoaiA9IGkg KyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNw czIgPSBuZXdfcGFydHNbal07CisKKwkJCWlmIChlcXVhbChzcHMtPm5hbWUsIHNwczItPm5h bWUpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygibmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2Vk Iiwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBzcHMyLT5uYW1lLT5sb2NhdGlvbikpOworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19u b3Rfb3ZlcmxhcF9saXN0KHBhcmVudCwgbmV3X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJ ICBwc3RhdGUpOworCisJCS8qCisJCSAqIE5lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVz IG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlucyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4g U2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQgcGFydGl0aW9uIGV4aXN0cy4KKwkJICovCisJ CWlmICghZXhpc3RzRGVmYXVsdFBhcnQpCisJCQljaGVja19wYXJlbnRfdmFsdWVzX2luX25l d19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdf cGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9CisKKwlwZnJlZShuZXdfcGFydHMpOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDNkNmU2YmRiZmQuLjNlMTY4OWIx MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEzNzA3LDMgKzEzNzA3 LDIxIEBAIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcykK IAogCXJldHVybiBidWYtPmRhdGE7CiB9CisKKy8qCisgKiBnZXRfbGlzdF9wYXJ0dmFsdWVf c3RyaW5nCisgKgkJQSBDIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBvbmUgbGlzdCBwYXJ0 aXRpb24gdmFsdWUKKyAqLworY2hhciAqCitnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENv bnN0ICp2YWwpCit7CisJZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CisJU3RyaW5nSW5mbwli dWYgPSBtYWtlU3RyaW5nSW5mbygpOworCisJbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2Yo ZGVwYXJzZV9jb250ZXh0KSk7CisJY29udGV4dC5idWYgPSBidWY7CisKKwlnZXRfY29uc3Rf ZXhwcih2YWwsICZjb250ZXh0LCAtMSk7CisKKwlyZXR1cm4gYnVmLT5kYXRhOworfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDY0MjQ4YjViMWYuLmMwZTkxODk1MWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3MjEsNyArMjcyMSw3IEBAIG1hdGNoX3ByZXZp b3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJPV05FUiBUTyIsICJTRVQiLCAi VkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJQ0EgSURFTlRJVFkiLCAiQVRU QUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJUSVRJT04iLCAiRk9SQ0UgUk9X IExFVkVMIFNFQ1VSSVRZIiwKLQkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAoIiwKKwkJCQkJ ICAiU1BMSVQgUEFSVElUSU9OIiwgIk1FUkdFIFBBUlRJVElPTlMgKCIsCiAJCQkJCSAgIk9G IiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBBREQgKi8KIAllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUREIikpCkBAIC0yOTc3LDEw ICsyOTc3LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlD T01QTEVURV9XSVRIKCJGUk9NICgiLCAiSU4gKCIsICJXSVRIICgiKTsKIAogCS8qCi0JICog SWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0ggUEFSVElUSU9OLCBwcm92aWRl IGEgbGlzdCBvZgorCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIfFNQ TElUIFBBUlRJVElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKIAkgKiBwYXJ0aXRpb25zIG9mIDxm b28+LgogCSAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hB bnksICJERVRBQ0giLCAiUEFSVElUSU9OIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSHxTUExJVCIsICJQQVJUSVRJT04iKSkKIAl7 CiAJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2M193ZCk7CiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOwpAQCAtMjk4 OCw2ICsyOTg4LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0gi LCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5U TFkiLCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJU SVRJT04gPG5hbWU+ICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBN YXRjaEFueSwgIlNQTElUIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVf V0lUSCgiSU5UTyAoIFBBUlRJVElPTiIpOworCiAJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1F UkdFIFBBUlRJVElPTlMgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxF IiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggYjhlMmE2NzljZC4uMDFhYTRiMmU2NCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtOTYzLDE1ICs5NjMsMjYgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFydGl0aW9uUmFuZ2VEYXR1bQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9j YXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsKIAor LyoKKyAqIFBhcnRpdGlvbkRlc2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9y IEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYgc3Ry dWN0IFNpbmdsZVBhcnRpdGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFuZ2VW YXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJvdW5k U3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQ YXJ0aXRpb25TcGVjOworCiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIg VEFCTEUvSU5ERVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKICAqLwogdHlw ZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZh ciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gvbWVy Z2UgKi8KKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0 dGFjaC9kZXRhY2gvbWVyZ2Uvc3BsaXQgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5k OwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KLQlMaXN0CSAgICpwYXJ0bGlzdDsJ CS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIE1FUkdFCisJTGlzdAkgICAqcGFydGxpc3Q7 CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMsIGZvciBNRVJHRS9TUExJVAogCQkJCQkJCQkgKiBQ QVJUSVRJT04gY29tbWFuZCAqLwogCWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNt ZDsKQEAgLTI0NzUsNiArMjQ4Niw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQog CUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0 YWNoUGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0 aXRpb25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX1Nw bGl0UGFydGl0aW9uLAkJCS8qIFNQTElUIFBBUlRJVElPTiAqLwogCUFUX01lcmdlUGFydGl0 aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8q IEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkg Y29sdW1uIG9wdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA5MGU4Y2RkZjhiLi42 NmM4ODc2NjU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00MjEsNiArNDIxLDcgQEAgUEdf S0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElU LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBT UUxfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3Rh YmxlIiwgU1RBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJzdGFuZGFsb25lIiwgU1RBTkRBTE9ORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAppbmRleCA2 OTBkMjU5NjE5Li40NWIxZmExZGU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmgKQEAgLTE0Myw2ICsxNDMsMTAgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFu Z2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBh cnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJ CQkJCQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBj aGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkg ICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJ CQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpOwogZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3Bh cnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJ TGlzdCAqcGFydE5hbWVzLAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3J1bGV1dGlscy5oCmluZGV4IDVmMmVhMmU0ZDAuLjYyMDQzZDNiZjUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3J1bGV1dGlscy5oCkBAIC01NCw0ICs1NCw2IEBAIGV4dGVybiBjaGFyICpnZXRfcmFuZ2Vf cGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpOwogCiBleHRlcm4gY2hhciAq cGdfZ2V0X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCitleHRl cm4gY2hhciAqZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKTsKKwogI2Vu ZGlmCQkJCQkJCS8qIFJVTEVVVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjVkOWU4YjA5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCwwICsxLDE5 MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJF R0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0 cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAu Li4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAg ICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRl eHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3Rl cCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAx fHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0 XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSst LS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNw bHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBT UExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFy dF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElP TiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQor MTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3Rl cCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAg SU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0 ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK K3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRf MTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFM VUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VM RUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAx fHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMy cworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3Rl cCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSst LS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8 dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3Bs dCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJ VCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8x MF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0 cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0t Ky0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1Cisz NXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFz cGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0 ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxl CmluZGV4IDBkY2E2ODQ5NTUuLjQwNGE3ZmQ4MzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lz b2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZQpAQCAtMTA4LDYgKzEwOCw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1r ZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRp dGlvbi1rZXktdXBkYXRlLTQKIHRlc3Q6IHBhcnRpdGlvbi1tZXJnZQordGVzdDogcGFydGl0 aW9uLXNwbGl0CiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0 CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjA4NzIzOWE0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMKQEAgLTAsMCArMSw1 NCBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlv bnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElG IEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBh cnRpdGlvbiBieSByYW5nZShpKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJ VElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBU QUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0 cGFydCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBh cnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICg1LCAndGV4dDA1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3Rl eHQyNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9 CisKK3RlYXJkb3duCit7CisgIERST1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEK K3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVW RUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMxc3BsdAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0 XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOyB9CitzdGVwIHMx Ywl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0 ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9Citz dGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVw IHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVw IHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisK KworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2Vy dCByb3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4K KworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRh dGlvbiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFi IHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNw bHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJy IHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMx YyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBz MnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVy bXV0YXRpb24gczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5j CmluZGV4IDdkZTVkZGI4NzguLjE3ZDcyZTQxMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMjk2 LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJH UykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9 ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNl IEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXN0cnR5cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsK KwkJCQlicmVhazsKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0cnR5cGUg PSAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uN2Q1NDNhYjgxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE2 NTUgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFC TEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwg cHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0 IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91 bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhp c3QKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHgg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIg ZG9lcyBub3QgZXhpc3QKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFs cmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0gRVJST1I6ICBp bnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcy MDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNh dGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBl bXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAy MiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgZW1wdHkgcmFu Z2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitMSU5F IDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAzLTAx LTIwMjInKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0w MS0yMDIyJykuCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBj b250YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTEwLTAxJykpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250 YWluIGF0IGxlYXN0IHR3byBpdGVtcworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4g bG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IEVSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK Ky0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3Bs aXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhl IHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CitFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFk eSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIg aXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAg ICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0 aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKK0VSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElUIFBBUlRJVElPTiBjYW5ub3QgYmUgcGVy Zm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitERVRBSUw6ICBU aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCistLSBFUlJPUjog IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0 aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2FwcjIwMjIiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24KK0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgQUxU RVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBi b3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFy dGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRp dGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19v dGhlcnM7CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gQ2hlY2sgdGhl IHNvdXJjZSBwYXJ0aXRpb24gbm90IGluIHRoZSBzZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9w YXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwg cHVibGljOworXGQrIHNhbGVzX3JhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5n ZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAgICBUeXBlICAgICAgICAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgaW50ZWdlciAgICAg ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAg fCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlp bmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAg ICAgICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQgICAgIHwgaW50ZWdlciAgICAgICAgICAg ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAg ICAgICAgICAgfCAKKyBzYWxlc19kYXRlICAgICAgIHwgZGF0ZSAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAg ICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChzYWxlc19kYXRlKQorUGFydGl0aW9u czogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAy LTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAy MicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworLS0KKy0tIEFk ZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBwYXJ0aXRpb24KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92Jywg ICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIy LTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAg ICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAg ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5 LTIwMjIKKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24g ICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAg ICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAg IHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19tYXIyMDIyOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy CisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwg MDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24s IHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxz byBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5cGUgICAgICAg ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBp bnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCBjaGFy YWN0ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBl eHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2Vy ICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFp biAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAg ICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUp CitQYXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAg ICAgICAgIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRP ICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJyksCisgICAgICAgICAgICBz YWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAx LTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX290aGVycyBERUZBVUxUCisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxl 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 IDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmVi MjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2 IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy LnNhbGVzX21hcjIwMjI7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA3 IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRl IHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1 bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9u dGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVS QVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8 ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFE KHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50 IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywg MSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAo J01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywg MyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUg T1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7 CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRl cGFydG1lbnQKKyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAg ICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMg ZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNh bGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQg fCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMSAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4w MyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIyICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAz LjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxl c19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgy MDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjIn LCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNh bGVzX2RheTsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3ll YXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBh cnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNfZGVjMjAyMSB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIx IHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX2RlYzIwMjEgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1l bnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAor IHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X2phbjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19m ZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmVi MjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIw MjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCist LUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAor U0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNh bGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9N IHNhbGVzX2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFC TEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFy dGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0 ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitD UkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2Ug VVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBz YWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTEgcm93cykKKworU0VM RUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGlu ZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAg ICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8 IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5E RVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVf aW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNh bGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAg ICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitTRVQg ZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitTRUxF Q1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjIn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGlu ZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAg ICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNf ZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwg Q1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9u X3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hl bWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0 YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNl IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHgg fCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9p ZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19tYXIyMDIyIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hF UkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRp dGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFu YW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAg ICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJf c2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIw MjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIy MDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOwor ICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRl eG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVz X290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNh bGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZv ciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5U KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVx dWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJ TlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFy dGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2Vj dHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhl IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIy MDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19lcnJvciIKK0xJTkUgNDogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91 bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8g KDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBh ZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIx IChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8g KDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g TUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBh ZGphY2VudC4KKy0tIEVSUk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQg YmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7CitFUlJPUjog IG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBz cGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNf ZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAuLi4KKyAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBh cmUgYmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00g KDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIG5vIGVycm9yOiBi b3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJv dW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIy MDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0t IFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05T VFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1Bv aXJvdCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lkIElO VCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ftb3Vu dCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGNvbm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3Ry YWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUg ICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAx KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3Jh bmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJz b25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNf cmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05T VFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9j b25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29u bmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3Vu dCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2Fs ZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxl c3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBz YWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg Y29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ft b3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg c2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChz YWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkg fCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCitT RUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIyMDIyJzo6cmVnY2xh c3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVz X2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZ IChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQor CistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2si CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAzLTExJyk7 CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRl cyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitE RVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMtMTEtMjAyMikuCistLSBF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lk X2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjIt MDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFy MjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2Fs ZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25faWQpPSgtMSkg aXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9rCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVND QURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJs ZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3Ro ZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQg SU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2Fs ZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAgJ1BvaXJvdCcpLAorICAoMTAsICdN YXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgyMCwgJ1NtaXJub2ZmJyksCisgICgzMCwg J0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAy Mi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcy MDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3MCwg JzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAg IDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMTAgfCBNYXkK KyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Bl b3BsZTEwXzQwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMTBf NDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9N ICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJs ZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxl c3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEw XzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAg ICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAg fCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQK Kyg1IHJvd3MpCisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2Fs ZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29u X2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAz LTA0Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5 IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9KDQwKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVF UyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsK K0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNw ZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx LCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAk Qk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0 aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19X SEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFU RSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgor ICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RB VEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUK KyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJl IGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZh bm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3Rh dGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9m ZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2Fs ZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVs ID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElD RTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVu ID0gQUZURVIsIGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAg ICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Bl b3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwg ICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAg ICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8 IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RS T1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDog c3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFy dGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRp dGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElU WSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUx XzIgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1bW46CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBOVUxMLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBU TyAoNSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFM VUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRp dHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFO RCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAg ICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHks IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBh dHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAg ICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50 aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVk IEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3Nh bGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0 dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAg IHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAK KygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBz YWxlc3Blb3BsZTJfNSBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZB TFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9S IFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGU0XzUg Rk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUg KHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9p ZCwgc2FsZXNwZXJzb25faWQ7CisgICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUxXzIgfCAgICAgICAgICAgICAgMSB8 IFBvaXJvdAorIHNhbGVzcGVvcGxlMl8zIHwgICAgICAgICAgICAgIDIgfCBJdmFub3YKKyBz YWxlc3Blb3BsZTNfNCB8ICAgICAgICAgICAgICAzIHwgTWF5Cisgc2FsZXNwZW9wbGU0XzUg fCAgICAgICAgICAgICAgNCB8IEZvcmQKKyg0IHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBh dHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRF UiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2Vu ZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9u YW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRF UiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2Vu ZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9u YW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIE5ldyBwYXJ0aXRpb25zIGhh dmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsK Ky0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBD cmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgn ZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkg dmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZTEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBE Uk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwg J01heScpLAorICAoMzAsICdGb3JkJyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNw ZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9O IHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBB UlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkp OworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVS IEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8 ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAg ICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDE5IHwgSXZh bm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyBz YWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgc3Vi LXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJU SVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxl c19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEw JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIy LTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAy MgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8 IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAg ICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxh dG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAg ICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworQUxURVIg VEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0 LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxl c3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAg ICB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2Zl YjIwMjIgICAgICAgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAg ICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAg fCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxh dG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhl cnMgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAg ICAgNTEwIHwgMDUtMDQtMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg c2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19hcHIyMDIyXzEwXzIwIHwg ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorIHNhbGVzX2FwcjIwMjJfMjBfMzAgfCAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMTQgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZwor LS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9u aW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQs Cisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFS KDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElP TiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJz YnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2Jywg J1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlv biAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycs ICdIZWxzaW5raScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkg cGFydGl0aW9uICJzYWxlc19ub3JkIgorTElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2 JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFw IHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2 ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhh dmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitM SU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcsIE5VTEwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBw YXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBW QUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxV RVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBi ZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04g c2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 JyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKK0VSUk9SOiAgbmV3 IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9u IGFscmVhZHkgZXhpc3RzCitMSU5FIDU6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERF RkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0 OworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0 aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUs IHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8g bm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19h bW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxl c19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3Ns bycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywg TlVMTCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5V TEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAn VmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQg c3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9S ICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFV TFQpOworRVJST1I6ICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitMSU5FIDY6 ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAg ICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1Qg cGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19h bW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxl c19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lk eCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFU RSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5H IGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVy c2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1Zs YWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNv bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMK KyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyks CisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycp LAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUn KSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0 JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0w NycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAz LTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0w My0wOScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjIt MDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIy LTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAy Mi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIw MjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcy MDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAn MjAyMi0wMy0wNScpOworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgdGFi bGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCAgc2FsZXNf c3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIw MDAgfCAwMy0wNS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICA3IHwgTWF5 ICAgICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYt MjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAg ICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxl c19ub3JkICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lu a2kgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisgc2FsZXNfd2VzdCAgICB8 ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwg ICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgICAgfCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTA3LTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgMTEgfCBNdWxs ZXIgICAgICAgICAgIHwgTWFkcmlkICAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0y MDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICAg ICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorIHNhbGVz X2Vhc3QgICAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcg ICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19lYXN0ICAgIHwg ICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAg ICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIw MjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAg IHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNf Y2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDE0IHJvd3MpCisKKy0tIFVz ZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRlciBzcGxpdHRpbmcgcGFydGl0 aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0g T0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0g J1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf c3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAg ICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0 ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3 ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0y MDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNw ZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cpCisK K1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsK K0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxp dCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4g Ym91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBB UlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29u X2lkOworICAgICAgIHRhYmxlb2lkICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAg ICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX290aGVycyAgICAg ICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2Fs ZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8 ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3Ro ZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAg ICAgICAgNTEwIHwgMDUtMDQtMjAyMgorIHNhbGVzX21hcjIwMjJfMWRlY2FkZSB8ICAgICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIw MjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8x ZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAg ICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBz YWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRl IHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBh cnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9y ZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h bGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAo MiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisg ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwK KyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVt cCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp LAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRl Y2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xMCcpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19y YW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVv aWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAg ICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhlcnMgICAg ICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNh bGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAg fCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290 aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisgc2FsZXNfbWFyMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX2phbjIwMjJf MWRlY2FkZSB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisg c2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMTQgcm93 cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvciBzcGxpdCBu b24tREVGQVVMVCBwYXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25z CistLSB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAg ICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAor ICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAn MjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyks CisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgn LCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsK KyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg c2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNh bGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxl c19hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNf ZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDggfCBF cmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX290 aGVycyAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAx NzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19vdGhl cnMgIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxNCB8IFNtaXRo ICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9u IG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQp IFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBP RiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0 ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworLS0gRVJST1I6ICByZWxhdGlvbiAidDFw YSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQy IFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxV RVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMg RlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBN RVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBz dWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0g VHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRF IFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJl Z2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBn X2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8 IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MikgfCB0CisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7Cist LSBQYXJ0aXRpb25zIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8x IHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBD aGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNlCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxl cworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJs ZW5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgICAgdGFibGVzcGFjZSAgICAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHJlZ3Jlc3NfdGJs c3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMV8yICAgIHwgcmVn cmVzc190YmxzcGFjZQorKDMgcm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1l LCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0 JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFj ZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8 IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMSAgICB8IHRwXzBfMV9w a2V5IHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHRwXzFfMl9wa2V5IHwgcmVn cmVzc190YmxzcGFjZQorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgbmV3 IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorQ1JF QVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5E TEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworQ1JFQVRF IFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJU SVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1l LCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0g YS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xh c3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZTsKKyByZWxuYW1l IHwgICAgICAgIGFtbmFtZSAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzBfMSAgfCBwYXJ0 aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorKDMg cm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9z cGxpdF9oZWFwOworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRz IHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUKKy0tIHRoZSBwYXJ0aXRpb24gdG8g c3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7 CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7 CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Jv YjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJU SVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9O IHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJPUjogIG11c3QgYmUg b3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIg VEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBf MF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2Yg dGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJM RSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRw XzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworUkVWT0tF IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CistLSBTcGxp dCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRp dGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRp b24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElU SU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMgb2Yg bmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIgYmlnaW50LAor ICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEsCisgIGsgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElUSU9OIEJZIFJB TkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0 X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBiZWZvcmUg U1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50 X2JpZ2ludCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAg ICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50 ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo KGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlv biBrZXk6IFJBTkdFIChiKQorUGFydGl0aW9uczogdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxU CisKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0 IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAg ICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0 IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEw KSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0 X2JpZ2ludCBERUZBVUxUCitObyBwYXJ0aXRpb24gY29uc3RyYWludAorCitBTFRFUiBUQUJM RSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRPCisgIChQ QVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApLAor ICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1 bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2Rl ZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAg ICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERFRkFVTFQKK1Bh cnRpdGlvbiBjb25zdHJhaW50OiAoTk9UICgoYiBJUyBOT1QgTlVMTCkgQU5EICgoYiA+PSAn MCc6OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50KSkpKQorCitcZCsgdF9iaWdpbnRf MDFfMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF8wMV8xMCIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgRk9SIFZBTFVFUyBG Uk9NICgnMCcpIFRPICgnMTAnKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYiBJUyBOT1Qg TlVMTCkgQU5EIChiID49ICcwJzo6YmlnaW50KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQpKQor CitEUk9QIFRBQkxFIHRfYmlnaW50OworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlv bnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JF QVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUg IHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMF8yIHwgdGFibGUgfCBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikpOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1l ICB8IFR5cGUgIHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwg cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworXGR0IHRwXzFfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAg U2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCiso MSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RS T1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKy0tIFRlc3Q6IGluZGV4 IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBh cyBzcGxpdAorLS0gcGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBf MjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlT RSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBS RVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxFOworLS0gT3du ZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBP TiB0IChydW5fbWUoaSkpOworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUg YXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTwor ICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisg ICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitO T1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZQorRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUoaW50 ZWdlcik7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZS T00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19w YXJ0aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRh YmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JF QVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg MiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0 aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSwKKyAgIFBBUlRJVElP TiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDIpKTsKK0VS Uk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNw bGl0CistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4g YXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEg SU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBS RU1BSU5ERVIgMCkpOworRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBj b250YWluIGF0IGxlYXN0IHR3byBpdGVtcworRFJPUCBUQUJMRSB0OworLS0gQWRkaXRpb25h bCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxl c19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NS0wMScpOworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Fw cjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKK0VSUk9SOiAgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMC4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLSBUZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24g cHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlz IGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFy ZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25l ZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQg dGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVs dF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjIt MDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQg T04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CitDUkVBVEUgVEFCTEUgdHBfeAorKGkgaW50IE5P VCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF94JywK KyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDIn KSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwX3ggRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF94LmkgSVMgJ3Rw X3guaSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwg YiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF94X3N0YXQgKERFUEVOREVOQ0lFUykg b24gaSwgYiBmcm9tIHRwX3g7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9j aGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jf Y2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIg VEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJ TlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VS VCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBM QU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0 cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRH X0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VO RDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJF IHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2lu c2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKK1xkKyB0cF94 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxl ICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgdHBfeC5pCisgdCAgICAgIHwg dGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfeCc6OnRleHQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAgIHwg CisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1Qg TlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5EIChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0 cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChiID4gMCkKKyAgICAidF9iX2NoZWNr MSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAgICAidF9iX2NoZWNrMiIgQ0hFQ0sg KGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0czoKKyAgICAicGFydGl0aW9u X3NwbGl0X3NjaGVtYS50cF94X3N0YXQiIChkZXBlbmRlbmNpZXMpIE9OIGksIGIgRlJPTSB0 cF94CitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidHBfeF9pX25vdF9udWxsIiBOT1Qg TlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVy aXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3Ry aWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNU SU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAgIHRwX3hfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9X IEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpCisKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVt YS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAg ICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFn ZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgICB8 ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwg ZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo JzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCitQYXJ0aXRp b24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDEp IEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNr IiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVO Rk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitOb3Qt bnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGlu aGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZB TElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JF IElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJf ZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZB TFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRyaWdnZXIodCkgY2FsbGVkOiBhY3Rp b24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVsID0gUk9XCitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSBiOworIHRhYmxlb2lkIHwgaSB8ICAg ICAgdCAgICAgICB8IGIgfCAgICAgZCAgICAgIAorLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0t LS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAgIHwgMCB8IGRlZmF1bHRfdHBfeCB8 IDEgfCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwgZGVmYXVsdF90cF94IHwgMiB8IDAx LTAxLTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0X3QgICAgfCAzIHwgMDEtMDEtMjAy MgorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1 bmN0aW9uKCk7CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0 ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFi bGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOwor LS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdp dGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93 IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFi X2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCist LS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQg Z2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcwor LS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIg Zm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAg QU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNv dW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKK1JFU0VU IHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7 CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCmluZGV4IDY0NjRhMjM4YWMuLmE5OGFlZjdjYTEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBs YW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJl cGFyZSBjb252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28g bm90aGluZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdy b3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pv aW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRp dGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJl c3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVtYQordGVzdDogcGFydGl0aW9uX21l cmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVs b3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRp b25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHBy ZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBh bmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMg RERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZmE0YjY5Mzc2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApAQCAt MCwwICsxLDExNDggQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAi 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 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBUZXN0cyBmb3Igc3BhY2VzIGJl dHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZB VUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElP TiBzYWxlc19vdGhlcnM7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQg cGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIENoZWNr IHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJM RSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEsIHB1YmxpYzsKK1xkKyBzYWxlc19yYW5nZQorCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBh cnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAo MiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisg ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwK KyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVt cCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp LAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRB 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 ZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEn KSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdG b3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDEx LCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0 ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29s dW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAo c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21v bnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5F UkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8 fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBB RChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVu dCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwg MywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5U TyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAo J01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSks CisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEs IDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIy LCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgNSwgMSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19kYXRlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5OworCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxl c19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMs IDEpKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVv aWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisKKy0tRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbl9mZWIyMDIyOworCitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FE RTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5k ZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwg ICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAn KSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdE ZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAz NTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAg IDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor U0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhl cnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZ IGluZGV4bmFtZTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGlu ZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRl ID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1NFVCBlbmFibGVf aW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworU0VMRUNUICog RlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5h bWU7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVz X21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9S REVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRl eGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0g J3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBm b3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElO VCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVz X2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90 IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEi CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBp bnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFs IHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0 cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhl IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIy MDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGgg c2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gRVJST1I6ICBvbmUgcGFydGl0aW9uIGlu IHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlz IERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBi ZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6 IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIg Ym91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw MjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKwor LS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtF WSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx LCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNwZXJz b25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLAorc2Fs ZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitTRUxFQ1Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdj bGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKKworLS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBv biBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBj b25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBj b25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIw MjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgY29ubmFtZTs7CisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVz X21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVz X2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwg JzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi c2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNf cmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKwor LS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBj YXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFi bGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNwZXJz b25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5 JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdG b3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAnMjAy Mi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAsICcy MDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3MCwg JzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CisKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9p ZCwgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBB UlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBC WSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVw ZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMg KDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworCitEUk9QIFRBQkxFIHNhbGVzIENBU0NB REU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0K K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdw bHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUp IGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0s IFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRC T0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRl bWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAg ICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVz cGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAg IE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURV UkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOworCistLSAyIHRy aWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hvdWxk IGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVT ICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJU SVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUx MF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElP TiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCist LSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJp Z2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUz MF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lk OworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVt biBpcyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlk ZW50aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVh dGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29u X25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBB UlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKKwor SU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1Bv aXJvdCcpLCAoJ0l2YW5vdicpOworCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor U0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRy aWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzIn OjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0tIFNwbGl0IHBhcnRpdGlvbiBo YXMgaWRlbnRpdHkgY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRn ZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVs aWQgPSAnc2FsZXNwZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK KworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxl Ml81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00g KDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZS T00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVT IEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3Bl cnNvbl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdGb3JkJyk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJh dGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0g J3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBpZGVu dGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRl IFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRp dHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFO RCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkg YXR0bnVtOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVy c29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBu ZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUg c2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUworICAoJ2R1bW15 IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpLAorICAoJ2R1bW15IHZhbHVl IDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEw XzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9Q IENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElP TiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAs ICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBT UExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0 MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUg T1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVz cGVvcGxlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVf aWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIw MjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAor ICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyks CisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwg ICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3 LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxl c19hcHIyMDIyOworCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElP TiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEw IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy XzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBP UkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNf cmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRl c3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVz X2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVs c2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3Rv aycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBERUZBVUxUOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdv dWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNf bm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5r aScpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJz YWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJz YWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQg cGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVF UyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcg cGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ug c3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxi b3VybmUnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWpp bmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0t IEVSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFV TFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3Qg Rk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91 cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0 OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0 aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgTlVMTCB2YWx1 ZSwgd2hpY2ggc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBk byBub3QgaGF2ZSBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVz X2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRlcnNidXJnJywg J09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3Rv aycsIE5VTEwpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZh bHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJ0t5aXYnIGJ1dCBzcGxpdCBwYXJ0 aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdM aXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsIE5VTEwpKTsKKworLS0gRVJST1IgIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBi ZSBvbmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fs bCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFS VElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJ T04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNv bl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19z dGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFU RSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBJTkRFWCBz YWxlc19saXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRy ZWUgKHNhbGVzcGVyc29uX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNf c3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycs ICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWpp bmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3 IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0 LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdX YXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAn TGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAg J0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAg ICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAg ICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAg ICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXIn LCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVy JywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRo JywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5k aScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxh dG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4g KCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19saXN0IE9SREVS IEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NFVCBlbmFibGVf aW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAq IEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFu b3YnOworCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gT047CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgor LS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFj ZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMg aW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJs ZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0t CistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8g cGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20g b3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIw MjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAx LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZB VUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdp dGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAy LTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAy Mi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisg ICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFy dGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0 IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJ VElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGlu dCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworCistLSBFUlJPUjogIHJlbGF0 aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIg VEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEg Rk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJVElPTiB0MmIgRk9S IFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKworRFJPUCBUQUJMRSB0MjsKK0RST1Ag VEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFy eS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0 aW9ucyBpbmhlcml0IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGlu dCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up CisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1Qg dGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFt ZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRp dGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsK K1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4 ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5E IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFi bGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENo ZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRo b2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFC TEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsK K0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTwor ICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBB UlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMu cmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5y ZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6 OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CitE Uk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7 CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24g dGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRv IGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JBTlQg QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0 cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOwor QUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElP TiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBfMiBPV05FUiBUTyBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0RST1AgVEFCTEUg dDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUg cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworCistLSBTcGxpdCBwYXJ0aXRpb24gb2Yg YSB0ZW1wb3JhcnkgdGFibGUgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0t IHNwbGl0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQK K0NSRUFURSBURU1QIFRBQkxFIHQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOwor Q1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTwor ICAoUEFSVElUSU9OIHRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7 CisKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0aW9u cworQ1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERFRkFV TFQgKDMrMTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JF QVRFIFRBQkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFV TFQ7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJ T04KK1xkKyB0X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRf YmlnaW50IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJ VElPTiB0X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQ QVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMv Y29uc3RyYWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVs dAorXGQrIHRfYmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmlnaW50OworCisKKy0tIFRl c3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25l ciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBf MF8yKGkgaW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFC TEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KTsKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xk dCB0cF8wXzIKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8K KyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gT3du ZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBf MF8xCitcZHQgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworCist LSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRo IHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICQk CitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VS UkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1N VVRBQkxFOworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2Un OgorQ1JFQVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5U TworICAoUEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisgICBQQVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7 CisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworCitS RVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2U7CisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFC TEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1B SU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBW QUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAx XzIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7CisKKy0tIEVS Uk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0 d28gaXRlbXMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQ QVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAw KSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJv ciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBp bnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNh bGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKKy0tIEVS Uk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3Qg ZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKworLS0g VGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1Mg aXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhl IHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0Ug aXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VO RVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhlIHNhbWUgYXMgR0VORVJBVEVEIGFuZCBD T05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogVFJJR0dFUlMgYXJlIHRo ZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorCitDUkVBVEUgVEFC TEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIEVYVEVOREVEIENPTVBS RVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUg R0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBBUlRJVElPTiBC WSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEuaSc7CisK K0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0Ug TUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5F UkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0NP TU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKKworQ1JFQVRFIFNUQVRJU1RJ Q1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJ U1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworCitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOwor QUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkg Tk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sy IENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlO VCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CisKK0lOU0VSVCBJTlRPIHRwX3goaSwg dCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfeChpLCB0LCBi KSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwn IEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6 IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwg VEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NS RUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJU IE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VE VVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKKworXGQrIHRwX3gKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpKTsKK1xkKyB0cF94CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikg VkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigpOworCisKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVk IGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50 IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCBjYyBD SEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDAp LCAoMSk7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIg Zm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZp ZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9 IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOwor CistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0 YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9O IHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBTaG91bGQgYmUgMCBiZWNh dXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50 IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxF Q1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0 YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworRFJPUCBUQUJMRSB0OworCisKK1JFU0VU IHNlYXJjaF9wYXRoOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAppbmRleCAzMmQ2ZTcxOGFkLi5iODE1Y2NlZDg0IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc2Niw2ICsyNzY2LDcgQEAgU2ltcGxlU3RhdHMK IFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0cmluZ0xpc3RDZWxsCiBTaW5nbGVCb3VuZFNv cnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBTaXplCiBTa2lwUGFnZXMKIFNraXBTdXBw b3J0CkBAIC0yODMyLDYgKzI4MzMsNyBAQCBTcGVjaWFsSm9pbkluZm8KIFNwaW5EZWxheVN0 YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgorU3BsaXRQYXJ0aXRpb25Db250ZXh0CiBT cGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNwbGl0VGV4dE91dHB1dERhdGEKLS0gCjIu NDAuMS53aW5kb3dzLjEKCg== --------------7CtLIvH5g69EeqXXJgGqRku2--