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 1uuCDY-004S15-GA for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Sep 2025 15:49:46 +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 1uuCDX-00HZha-Lg for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Sep 2025 15:49:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uuCDW-00HZhP-Qo for pgsql-hackers@lists.postgresql.org; Thu, 04 Sep 2025 15:49:43 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uuCDQ-000YbO-1G for pgsql-hackers@postgresql.org; Thu, 04 Sep 2025 15:49:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1757000971; bh=0tvEgiL4kTeJYROe0/XasHPZbpqmdOXStWp5S5C7lWc=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=qdrqzidaxU9Wofv7kywUZ+BRBXZNGLKBZpQ3NT7epTOyIStTaM6pcMrvAHQ/q2DR8 NE8M6UkeASeZMuB2ULJyCiO2r0WSl4rrWOl9kOgCY1Dfh6oLM2kHS7Nm9FVB1jNugw qRWzDRm6tWX0uJuvxmIg2PF31oGAxyQG+NX0SGFesMtez6GsHyXgNQH/Ham8tFk4VA huYxW0AYfoltzATX+ZbscvL4tPIi6vKCF9BsKFPswV+PpSxrgp24665/w1TNyRXFJw duvLNyaRtM5Q9aiweCIyMmwhtfG1pPa/4y7lhNbOr22VA4kMvcf/eg1oEjhC5hpVxH xwByecldDVpqQ== Received: from [10.0.85.1] (unknown [151.236.12.133]) (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: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 40BFF60945; Thu, 4 Sep 2025 18:49:24 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------kHlD7chBUGN7diVaEI00tqIQ" Message-ID: <026722b5-6e61-44d8-816d-482ad24423a9@postgrespro.ru> Date: Thu, 4 Sep 2025 18:49:20 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: Alexander Korotkov Cc: Amit Kapila , pgsql-hackers , Jim Nasby , Bertrand Drouvot , Ilia Evdokimov , Kirill Reshke , Andrei Zubkov , Masahiko Sawada , Melanie Plageman , jian he , a.lepikhov@postgrespro.ru, Sami Imseih , vignesh C References: <86f76aa5-1ab5-4e2e-9b15-405051852a2a@postgrespro.ru> <0b4eefc7-4c38-4caa-b2ca-a4c75dd7dd12@postgrespro.ru> <333c2306-c401-4959-9f0c-a44c670a11a9@postgrespro.ru> <513f0188-b093-4cc8-98cf-4c324570d525@postgrespro.ru> <47a7b784-5218-43f2-96e3-65f9a729c5a5@tantorlabs.com> <5583261b-eede-4341-b3b1-91650fefc1cf@postgrespro.ru> <2a04ad18-5572-4633-848b-eb57209e7ac0@postgrespro.ru> <2f48399f-2959-4483-938f-64edb863ca76@postgrespro.ru> <9a94f2a0-4698-40e3-9010-2567d3b8ba55@postgrespro.ru> Content-Language: en-US In-Reply-To: <9a94f2a0-4698-40e3-9010-2567d3b8ba55@postgrespro.ru> X-KSMG-AntiPhishing: NotDetected 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/09/04 12:10:00 #27762282 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. --------------kHlD7chBUGN7diVaEI00tqIQ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, all! On 02.06.2025 19:50, Alena Rybakina wrote: > > On 02.06.2025 19:25, Alexander Korotkov wrote: >> On Tue, May 13, 2025 at 12:49 PM Alena Rybakina >> wrote: >>> On 12.05.2025 08:30, Amit Kapila wrote: >>>> On Fri, May 9, 2025 at 5:34 PM Alena Rybakina >>>> wrote: >>>>> I did a rebase and finished the part with storing statistics >>>>> separately from the relation statistics - now it is possible to >>>>> disable the collection of statistics for relationsh using gucs and >>>>> this allows us to solve the problem with the memory consumed. >>>>> >>>> I think this patch is trying to collect data similar to what we do for >>>> pg_stat_statements for SQL statements. So, can't we follow a similar >>>> idea such that these additional statistics will be collected once some >>>> external module like pg_stat_statements is enabled? That module should >>>> be responsible for accumulating and resetting the data, so we won't >>>> have this memory consumption issue. >>> The idea is good, it will require one hook for the pgstat_report_vacuum >>> function, the extvac_stats_start and extvac_stats_end functions can be >>> run if the extension is loaded, so as not to add more hooks. >> +1 >> Nice idea of a hook.  Given the volume of the patch, it might be a >> good idea to keep this as an extension. > Okay, I'll realize it and apply the patch) >> >>> But I see a problem here with tracking deleted objects for which >>> statistics are no longer needed. There are two solutions to this and I >>> don't like both of them, to be honest. >>> The first way is to add a background process that will go through the >>> table with saved statistics and check whether the relation or the >>> database are relevant now or not and if not, then >>> delete the vacuum statistics information for it. This may be >>> resource-intensive. The second way is to add hooks for deleting the >>> database and relationships (functions dropdb, index_drop, >>> heap_drop_with_catalog). >> Can we workaround this with object_access_hook? > > I think this could fix the problem. For the OAT-DROP access type, we > can call a function to reset the vacuum statistics for relations that > are about to be dropped. > > At the moment, I don’t see any limitations to using this approach. > I’ve prepared the first working version of the extension. I haven’t yet implemented writing the statistics to a file and reloading them into a hash table and shared memory at instance startup, and I also haven’t implemented a proper output for database-level statistics yet. I structured the extension as follows: statistics are stored in a hash table keyed by a composite key - database OID, relation OID, and object type (index, table, or database). When VACUUM or a worker processes a table or index, an exclusive lock is taken to update the corresponding record; a shared lock is taken when reading the statistics. For database-level output, I plan to compute the totals by summing table and index statistics on demand. To optimize that, I plan to keep entries in the hash table ordered by database OID. When accessing the first element by the partial key (database OID), I’ll scan forward and aggregate until the partitial database key changes. Right now this requires adding the extension to `shared_preload_libraries`. I haven’t found a way to avoid that because of shared-memory setup, and I’m not sure it’s even possible. I’m also unsure whether it’s better to store the statistics in the cumulative statistics system (as done here) or entirely inside the extension. Note that the code added to the core to support the extension executes regardless of whether the extension is enabled. --------------kHlD7chBUGN7diVaEI00tqIQ Content-Type: text/x-patch; charset=UTF-8; name="0001-Core-patch-for-vacuum-statistics.patch" Content-Disposition: attachment; filename="0001-Core-patch-for-vacuum-statistics.patch" Content-Transfer-Encoding: base64 RnJvbSAwOThlMzgxY2E4OGUyNjAwY2I4ZTg1MjhlM2Y1NGY1ODhkNGM0M2E4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCA0IFNlcCAyMDI1IDE4OjE2OjUyICswMzAwClN1Ympl Y3Q6IFtQQVRDSF0gQ29yZSBwYXRjaCBmb3IgdmFjdXVtIHN0YXRpc3RpY3MuCgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgIHwgMzA5ICsrKysr KysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAu YyAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAg ICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMg ICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxh dGlvbi5jIHwgIDM2ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMg ICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAg ICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAg ICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAg ICAgICAgICAgfCAgMjYgKysKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTE5ICsrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0ICAgICAgICAgIHwgIDEyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCA1NDUgaW5zZXJ0 aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCmluZGV4IDkzMjcwMWQ4NDIwLi4zMzBmOWY5MGE2YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjg5LDYgKzI4OSw4IEBAIHR5cGVkZWYgc3Ry dWN0IExWUmVsU3RhdGUKIAkvKiBFcnJvciByZXBvcnRpbmcgc3RhdGUgKi8KIAljaGFyCSAg ICpkYm5hbWU7CiAJY2hhcgkgICAqcmVsbmFtZXNwYWNlOworCU9pZAkJCXJlbG9pZDsKKwlP aWQJCQlpbmRvaWQ7CiAJY2hhcgkgICAqcmVsbmFtZTsKIAljaGFyCSAgICppbmRuYW1lOwkJ LyogQ3VycmVudCBpbmRleCBuYW1lICovCiAJQmxvY2tOdW1iZXIgYmxrbm87CQkJLyogdXNl ZCBvbmx5IGZvciBoZWFwIG9wZXJhdGlvbnMgKi8KQEAgLTQwNyw2ICs0MDksMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCSAqIGJlZW4gcGVybWFuZW50bHkgZGlzYWJsZWQu CiAJICovCiAJQmxvY2tOdW1iZXIgZWFnZXJfc2Nhbl9yZW1haW5pbmdfZmFpbHM7CisKKwlp bnQzMgkJd3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsgLyogbnVtYmVyIG9mIGVtZXJnZW5j eSB2YWN1dW1zIHRvIHByZXZlbnQgYW50aS13cmFwYXJvdW5kIHNodXRkb3duICovCisKKwlQ Z1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgZXh0VmFjUmVwb3J0SWR4OwogfSBMVlJlbFN0 YXRlOwogCiAKQEAgLTQ3NCw2ICs0ODAsMjA5IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1 dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCiBzdGF0aWMgdm9pZCByZXN0b3Jl X3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQkJCSAgY29u c3QgTFZTYXZlZEVyckluZm8gKnNhdmVkX3ZhY3JlbCk7CiAKKy8qIC0tLS0tLS0tLS0KKyAq IGV4dHZhY19zdGF0c19zdGFydCgpIC0KKyAqCisgKiBTYXZlIGN1dC1vZmYgdmFsdWVzIG9m IGV4dGVuZGVkIHZhY3V1bSBjb3VudGVycyBiZWZvcmUgc3RhcnQgb2YgYSByZWxhdGlvbgor ICogcHJvY2Vzc2luZy4KKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2V4dHZh Y19zdGF0c19zdGFydChSZWxhdGlvbiByZWwsIExWRXh0U3RhdENvdW50ZXJzICpjb3VudGVy cykKK3sKKwlUaW1lc3RhbXBUeglzdGFydHRpbWU7CisKKwltZW1zZXQoY291bnRlcnMsIDAs IHNpemVvZihMVkV4dFN0YXRDb3VudGVycykpOworCisJc3RhcnR0aW1lID0gR2V0Q3VycmVu dFRpbWVzdGFtcCgpOworCisJY291bnRlcnMtPnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwlj b3VudGVycy0+d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOworCWNvdW50ZXJzLT5idWZ1c2FnZSA9 IHBnQnVmZmVyVXNhZ2U7CisJY291bnRlcnMtPlZhY3V1bURlbGF5VGltZSA9IFZhY3V1bURl bGF5VGltZTsKKwljb3VudGVycy0+YmxvY2tzX2ZldGNoZWQgPSAwOworCWNvdW50ZXJzLT5i bG9ja3NfaGl0ID0gMDsKKworCWlmICghcmVsLT5wZ3N0YXRfaW5mbyB8fCAhcGdzdGF0X3Ry YWNrX2NvdW50cykKKwkJLyoKKwkJICogaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgb3IgdXNl ciBkb2Vzbid0IHdhbnQgdG8gdHJhY2sgYSBkYXRhYmFzZQorCQkgKiBhY3Rpdml0eSAtIGp1 c3Qgc3VwcHJlc3MgaXQuCisJCSAqLworCQlyZXR1cm47CisKKwljb3VudGVycy0+YmxvY2tz X2ZldGNoZWQgPSByZWwtPnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2ZldGNoZWQ7CisJ Y291bnRlcnMtPmJsb2Nrc19oaXQgPSByZWwtPnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tz X2hpdDsKK30KKworLyogLS0tLS0tLS0tLQorICogZXh0dmFjX3N0YXRzX2VuZCgpIC0KKyAq CisgKglDYWxsZWQgdG8gZmluaXNoIGFuIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWMgZ2F0 aGVyaW5nIGFuZCBmb3JtIGEgcmVwb3J0LgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMg dm9pZAorZXh0dmFjX3N0YXRzX2VuZChSZWxhdGlvbiByZWwsIExWRXh0U3RhdENvdW50ZXJz ICpjb3VudGVycywKKwkJCQkgIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqcmVwb3J0 KQoreworCVdhbFVzYWdlCXdhbHVzYWdlOworCUJ1ZmZlclVzYWdlCWJ1ZnVzYWdlOworCVRp bWVzdGFtcFR6IGVuZHRpbWU7CisJbG9uZwkJc2VjczsKKwlpbnQJCQl1c2VjczsKKworCS8q IENhbGN1bGF0ZSBkaWZmcyBvZiBnbG9iYWwgc3RhdCBwYXJhbWV0ZXJzIG9uIFdBTCBhbmQg YnVmZmVyIHVzYWdlLiAqLworCW1lbXNldCgmd2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2Fn ZSkpOworCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZjb3Vu dGVycy0+d2FsdXNhZ2UpOworCisJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7CisJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJV c2FnZSwgJmNvdW50ZXJzLT5idWZ1c2FnZSk7CisKKwllbmR0aW1lID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOworCVRpbWVzdGFtcERpZmZlcmVuY2UoY291bnRlcnMtPnN0YXJ0dGltZSwg ZW5kdGltZSwgJnNlY3MsICZ1c2Vjcyk7CisKKwkvKgorCSAqIEZpbGwgYWRkaXRpb25hbCBz dGF0aXN0aWNzIG9uIGEgdmFjdXVtIHByb2Nlc3Npbmcgb3BlcmF0aW9uLgorCSAqLworCXJl cG9ydC0+Y29tbW9uLnRvdGFsX2Jsa3NfcmVhZCArPSBidWZ1c2FnZS5sb2NhbF9ibGtzX3Jl YWQgKyBidWZ1c2FnZS5zaGFyZWRfYmxrc19yZWFkOworCXJlcG9ydC0+Y29tbW9uLnRvdGFs X2Jsa3NfaGl0ICs9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0ICsgYnVmdXNhZ2Uuc2hhcmVk X2Jsa3NfaGl0OworCXJlcG9ydC0+Y29tbW9uLnRvdGFsX2Jsa3NfZGlydGllZCArPSBidWZ1 c2FnZS5sb2NhbF9ibGtzX2RpcnRpZWQgKyBidWZ1c2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVk OworCXJlcG9ydC0+Y29tbW9uLnRvdGFsX2Jsa3Nfd3JpdHRlbiArPSBidWZ1c2FnZS5zaGFy ZWRfYmxrc193cml0dGVuOworCisJcmVwb3J0LT5jb21tb24ud2FsX3JlY29yZHMgKz0gd2Fs dXNhZ2Uud2FsX3JlY29yZHM7CisJcmVwb3J0LT5jb21tb24ud2FsX2ZwaSArPSB3YWx1c2Fn ZS53YWxfZnBpOworCXJlcG9ydC0+Y29tbW9uLndhbF9ieXRlcyArPSB3YWx1c2FnZS53YWxf Ynl0ZXM7CisKKwlyZXBvcnQtPmNvbW1vbi5ibGtfcmVhZF90aW1lICs9IElOU1RSX1RJTUVf R0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa19yZWFkX3RpbWUpOworCXJlcG9ydC0+ Y29tbW9uLmJsa19yZWFkX3RpbWUgKz0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNh Z2Uuc2hhcmVkX2Jsa19yZWFkX3RpbWUpOworCXJlcG9ydC0+Y29tbW9uLmJsa193cml0ZV90 aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa193cml0 ZV90aW1lKTsKKwlyZXBvcnQtPmNvbW1vbi5ibGtfd3JpdGVfdGltZSArPSBJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyhidWZ1c2FnZS5zaGFyZWRfYmxrX3dyaXRlX3RpbWUpOworCXJlcG9y dC0+Y29tbW9uLmRlbGF5X3RpbWUgKz0gVmFjdXVtRGVsYXlUaW1lIC0gY291bnRlcnMtPlZh Y3V1bURlbGF5VGltZTsKKworCXJlcG9ydC0+Y29tbW9uLnRvdGFsX3RpbWUgKz0gc2VjcyAq IDEwMDAuICsgdXNlY3MgLyAxMDAwLjsKKworCWlmICghcmVsLT5wZ3N0YXRfaW5mbyB8fCAh cGdzdGF0X3RyYWNrX2NvdW50cykKKwkJLyoKKwkJICogaWYgc29tZXRoaW5nIGdvZXMgd3Jv bmcgb3IgYW4gdXNlciBkb2Vzbid0IHdhbnQgdG8gdHJhY2sgYSBkYXRhYmFzZQorCQkgKiBh Y3Rpdml0eSAtIGp1c3Qgc3VwcHJlc3MgaXQuCisJCSAqLworCQlyZXR1cm47CisKKwlyZXBv cnQtPmNvbW1vbi5ibGtzX2ZldGNoZWQgKz0KKwkJcmVsLT5wZ3N0YXRfaW5mby0+Y291bnRz LmJsb2Nrc19mZXRjaGVkIC0gY291bnRlcnMtPmJsb2Nrc19mZXRjaGVkOworCXJlcG9ydC0+ Y29tbW9uLmJsa3NfaGl0ICs9CisJCXJlbC0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3Nf aGl0IC0gY291bnRlcnMtPmJsb2Nrc19oaXQ7Cit9CisKK3ZvaWQKK2V4dHZhY19zdGF0c19z dGFydF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAor CQkJCQkgICBMVkV4dFN0YXRDb3VudGVyc0lkeCAqY291bnRlcnMpCit7CisJLyogU2V0IGlu aXRpYWwgdmFsdWVzIGZvciBjb21tb24gaGVhcCBhbmQgaW5kZXggc3RhdGlzdGljcyovCisJ ZXh0dmFjX3N0YXRzX3N0YXJ0KHJlbCwgJmNvdW50ZXJzLT5jb21tb24pOworCWNvdW50ZXJz LT5wYWdlc19kZWxldGVkID0gY291bnRlcnMtPnR1cGxlc19yZW1vdmVkID0gMDsKKworCWlm IChzdGF0cyAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogWFhYOiBXaHkgZG8gd2UgbmVlZCB0 aGlzIGNvZGUgaGVyZT8gSWYgaXQgaXMgbmVlZGVkLCBJIGZlZWwgbGFjayBvZgorCQkgKiBj b21tZW50cywgZGVzY3JpYmluZyB0aGUgcmVhc29uLgorCQkgKi8KKwkJY291bnRlcnMtPnR1 cGxlc19yZW1vdmVkID0gc3RhdHMtPnR1cGxlc19yZW1vdmVkOworCQljb3VudGVycy0+cGFn ZXNfZGVsZXRlZCA9IHN0YXRzLT5wYWdlc19kZWxldGVkOworCX0KK30KKwordm9pZAorZXh0 dmFjX3N0YXRzX2VuZF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAorCQkJCQkgTFZFeHRTdGF0Q291bnRlcnNJZHggKmNvdW50ZXJzLCBQZ1N0YXRf VmFjdXVtUmVsYXRpb25Db3VudHMgKnJlcG9ydCkKK3sKKwltZW1zZXQocmVwb3J0LCAwLCBz aXplb2YoUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzKSk7CisKKwlleHR2YWNfc3RhdHNf ZW5kKHJlbCwgJmNvdW50ZXJzLT5jb21tb24sIHJlcG9ydCk7CisJcmVwb3J0LT50eXBlID0g UEdTVEFUX0VYVFZBQ19JTkRFWDsKKworCWlmIChzdGF0cyAhPSBOVUxMKQorCXsKKwkJLyoK KwkJICogaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgb3IgYW4gdXNlciBkb2Vzbid0IHdhbnQg dG8gdHJhY2sgYSBkYXRhYmFzZQorCQkgKiBhY3Rpdml0eSAtIGp1c3Qgc3VwcHJlc3MgaXQu CisJCSAqLworCisJCS8qIEZpbGwgaW5kZXgtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmll bGRzICovCisJCXJlcG9ydC0+aW5kZXgudHVwbGVzX2RlbGV0ZWQgPQorCQkJCQkJCXN0YXRz LT50dXBsZXNfcmVtb3ZlZCAtIGNvdW50ZXJzLT50dXBsZXNfcmVtb3ZlZDsKKwkJcmVwb3J0 LT5pbmRleC5wYWdlc19kZWxldGVkID0KKwkJCQkJCQlzdGF0cy0+cGFnZXNfZGVsZXRlZCAt IGNvdW50ZXJzLT5wYWdlc19kZWxldGVkOworCX0KK30KKworLyogQWNjdW11bGF0ZSB2YWN1 dW0gc3RhdGlzdGljcyBmb3IgaGVhcC4KKyAqCisgICogQmVjYXVzZSBvZiBjb21wbGV4aXR5 IG9mIHZhY3V1bSBwcm9jZXNzaW5nOiBpdCBzd2l0Y2ggcHJvY2VzaW5nIGJldHdlZW4KKyAg KiB0aGUgaGVhcCByZWxhdGlvbiB0byBpbmRleCByZWxhdGlvbnMgYW5kIHZpc2EgdmVyc2Es IHdlIG5lZWQgdG8gc3RvcmUKKyAgKiBnYXRoZXJlZCBzdGF0aXN0aWNzIGluZm9ybWF0aW9u IGZvciBoZWFwIHJlbGF0aW9ucyBzZXZlcmFsIHRpbWVzIGJlZm9yZQorICAqIHRoZSB2YWN1 dW0gc3RhcnRzIHByb2Nlc3NpbmcgdGhlIGluZGV4ZXMgYWdhaW4uCisgICoKKyAgKiBJdCBp cyBuZWNlc3NhcnkgdG8gZ2F0aGVyIGNvcnJlY3Qgc3RhdGlzdGljcyBpbmZvcm1hdGlvbiBm b3IgaGVhcCBhbmQgaW5kZXhlcworICAqIG90aGVyd2ljZSB0aGUgaW5kZXggc3RhdGlzdGlj cyBpbmZvcm1hdGlvbiB3b3VsZCBiZSBhZGRlZCB0byBoaXMgcGFyZW50IGhlYXAKKyAgKiBz dGF0aXN0aWNzIGluZm9ybWF0aW9uIGFuZCBpdCB3b3VsZCBiZSBkaWZmaWN1bHQgdG8gYW5h bHl6ZSBpdCBsYXRlci4KKyAgKgorICAqIFdlIGNhbid0IHN1YnRyYWN0IHVuaW9uIHZhY3V1 bSBzdGF0aXN0aWNzIGluZm9ybWF0aW9uIGZvciBpbmRleCBmcm9tIHRoZSBoZWFwIHJlbGF0 aW9ucworICAqIGJlY2F1c2Ugb2YgdG90YWwgYW5kIGRlbGF5IHRpbWUgdGltZSBzdGF0aXN0 aWNzIGNvbGxlY3RpbmcgZHVyaW5nIHBhcmFsbGVsIHZhY3V1bQorICAqIHByb2N1ZHVyZS4K KyovCitzdGF0aWMgdm9pZAorYWNjdW11bGF0ZV9oZWFwX3ZhY3V1bV9zdGF0aXN0aWNzKExW UmVsU3RhdGUgKnZhY3JlbCwgUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICpleHRWYWNT dGF0cykKK3sKKwkvKiBGaWxsIGhlYXAtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmllbGRz ICovCisJZXh0VmFjU3RhdHMtPnR5cGUgPSBQR1NUQVRfRVhUVkFDX1RBQkxFOworCWV4dFZh Y1N0YXRzLT50YWJsZS5wYWdlc19zY2FubmVkID0gdmFjcmVsLT5zY2FubmVkX3BhZ2VzOwor CWV4dFZhY1N0YXRzLT50YWJsZS5wYWdlc19yZW1vdmVkID0gdmFjcmVsLT5yZW1vdmVkX3Bh Z2VzOworCWV4dFZhY1N0YXRzLT50YWJsZS52bV9uZXdfZnJvemVuX3BhZ2VzID0gdmFjcmVs LT52bV9uZXdfZnJvemVuX3BhZ2VzOworCWV4dFZhY1N0YXRzLT50YWJsZS52bV9uZXdfdmlz aWJsZV9wYWdlcyA9IHZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXM7CisJZXh0VmFjU3Rh dHMtPnRhYmxlLnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyA9IHZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzOworCWV4dFZhY1N0YXRzLT50YWJsZS50dXBsZXNfZGVs ZXRlZCA9IHZhY3JlbC0+dHVwbGVzX2RlbGV0ZWQ7CisJZXh0VmFjU3RhdHMtPnRhYmxlLnR1 cGxlc19mcm96ZW4gPSB2YWNyZWwtPnR1cGxlc19mcm96ZW47CisJZXh0VmFjU3RhdHMtPnRh YmxlLnJlY2VudGx5X2RlYWRfdHVwbGVzID0gdmFjcmVsLT5yZWNlbnRseV9kZWFkX3R1cGxl czsKKwlleHRWYWNTdGF0cy0+dGFibGUucmVjZW50bHlfZGVhZF90dXBsZXMgPSB2YWNyZWwt PnJlY2VudGx5X2RlYWRfdHVwbGVzOworCWV4dFZhY1N0YXRzLT50YWJsZS5taXNzZWRfZGVh ZF90dXBsZXMgPSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlczsKKwlleHRWYWNTdGF0cy0+ dGFibGUubWlzc2VkX2RlYWRfcGFnZXMgPSB2YWNyZWwtPm1pc3NlZF9kZWFkX3BhZ2VzOwor CWV4dFZhY1N0YXRzLT50YWJsZS5pbmRleF92YWN1dW1fY291bnQgPSB2YWNyZWwtPm51bV9p bmRleF9zY2FuczsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLndyYXBhcm91bmRfZmFpbHNhZmVf Y291bnQgPSB2YWNyZWwtPndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQ7CisKKwlleHRWYWNT dGF0cy0+Y29tbW9uLmJsa19yZWFkX3RpbWUgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHgu Y29tbW9uLmJsa19yZWFkX3RpbWU7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi5ibGtfd3JpdGVf dGltZSAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24uYmxrX3dyaXRlX3RpbWU7 CisJZXh0VmFjU3RhdHMtPmNvbW1vbi50b3RhbF9ibGtzX2RpcnRpZWQgLT0gdmFjcmVsLT5l eHRWYWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX2Jsa3NfZGlydGllZDsKKwlleHRWYWNTdGF0 cy0+Y29tbW9uLnRvdGFsX2Jsa3NfaGl0IC09IHZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNv bW1vbi50b3RhbF9ibGtzX2hpdDsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3Nf cmVhZCAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24udG90YWxfYmxrc19yZWFk OworCWV4dFZhY1N0YXRzLT5jb21tb24udG90YWxfYmxrc193cml0dGVuIC09IHZhY3JlbC0+ ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX3dyaXR0ZW47CisJZXh0VmFjU3Rh dHMtPmNvbW1vbi53YWxfYnl0ZXMgLT0gdmFjcmVsLT5leHRWYWNSZXBvcnRJZHguY29tbW9u LndhbF9ieXRlczsKKwlleHRWYWNTdGF0cy0+Y29tbW9uLndhbF9mcGkgLT0gdmFjcmVsLT5l eHRWYWNSZXBvcnRJZHguY29tbW9uLndhbF9mcGk7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi53 YWxfcmVjb3JkcyAtPSB2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24ud2FsX3JlY29y ZHM7CisKKwlleHRWYWNTdGF0cy0+Y29tbW9uLnRvdGFsX3RpbWUgLT0gdmFjcmVsLT5leHRW YWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX3RpbWU7CisJZXh0VmFjU3RhdHMtPmNvbW1vbi5k ZWxheV90aW1lIC09IHZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi5kZWxheV90aW1l OworCit9CisKK3N0YXRpYyB2b2lkCithY2N1bXVsYXRlX2lkeHNfdmFjdXVtX3N0YXRpc3Rp Y3MoTFZSZWxTdGF0ZSAqdmFjcmVsLCBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKmV4 dFZhY0lkeFN0YXRzKQoreworCisJLyogRmlsbCBoZWFwLXNwZWNpZmljIGV4dGVuZGVkIHN0 YXRzIGZpZWxkcyAqLworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi5ibGtfcmVh ZF90aW1lICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24uYmxrX3JlYWRfdGltZTsKKwl2YWNy ZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24uYmxrX3dyaXRlX3RpbWUgKz0gZXh0VmFjSWR4 U3RhdHMtPmNvbW1vbi5ibGtfd3JpdGVfdGltZTsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElk eC5jb21tb24udG90YWxfYmxrc19kaXJ0aWVkICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24u dG90YWxfYmxrc19kaXJ0aWVkOworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50 b3RhbF9ibGtzX2hpdCArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9uLnRvdGFsX2Jsa3NfaGl0 OworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi50b3RhbF9ibGtzX3JlYWQgKz0g ZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi50b3RhbF9ibGtzX3JlYWQ7CisJdmFjcmVsLT5leHRW YWNSZXBvcnRJZHguY29tbW9uLnRvdGFsX2Jsa3Nfd3JpdHRlbiArPSBleHRWYWNJZHhTdGF0 cy0+Y29tbW9uLnRvdGFsX2Jsa3Nfd3JpdHRlbjsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElk eC5jb21tb24ud2FsX2J5dGVzICs9IGV4dFZhY0lkeFN0YXRzLT5jb21tb24ud2FsX2J5dGVz OworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0SWR4LmNvbW1vbi53YWxfZnBpICs9IGV4dFZhY0lk eFN0YXRzLT5jb21tb24ud2FsX2ZwaTsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21t b24ud2FsX3JlY29yZHMgKz0gZXh0VmFjSWR4U3RhdHMtPmNvbW1vbi53YWxfcmVjb3JkczsK Kwl2YWNyZWwtPmV4dFZhY1JlcG9ydElkeC5jb21tb24uZGVsYXlfdGltZSArPSBleHRWYWNJ ZHhTdGF0cy0+Y29tbW9uLmRlbGF5X3RpbWU7CisKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydElk eC5jb21tb24udG90YWxfdGltZSArPSBleHRWYWNJZHhTdGF0cy0+Y29tbW9uLnRvdGFsX3Rp bWU7Cit9CiAKIAogLyoKQEAgLTYzMiw2ICs4NDEsMTMgQEAgaGVhcF92YWN1dW1fcmVsKFJl bGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAlCdWZmZXJVc2FnZSBz dGFydGJ1ZmZlcnVzYWdlID0gcGdCdWZmZXJVc2FnZTsKIAlFcnJvckNvbnRleHRDYWxsYmFj ayBlcnJjYWxsYmFjazsKIAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CisJTFZFeHRTdGF0 Q291bnRlcnMgZXh0VmFjQ291bnRlcnM7CisJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRz IEV4dFZhY1JlcG9ydDsKKwlQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgYWxsemVybzsK KworCS8qIEluaXRpYWxpemUgdmFjdXVtIHN0YXRpc3RpY3MgKi8KKwltZW1zZXQoJmFsbHpl cm8sIDAsIHNpemVvZihQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMpKTsKKwlFeHRWYWNS ZXBvcnQgPSBhbGx6ZXJvOwogCiAJdmVyYm9zZSA9IChwYXJhbXMub3B0aW9ucyAmIFZBQ09Q VF9WRVJCT1NFKSAhPSAwOwogCWluc3RydW1lbnQgPSAodmVyYm9zZSB8fCAoQW1BdXRvVmFj dXVtV29ya2VyUHJvY2VzcygpICYmCkBAIC02NTIsNiArODY4LDcgQEAgaGVhcF92YWN1dW1f cmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAlwZ3N0YXRf cHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5EX1ZBQ1VVTSwKIAkJCQkJ CQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCisJZXh0dmFjX3N0YXRzX3N0YXJ0KHJl bCwgJmV4dFZhY0NvdW50ZXJzKTsKIAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBz dXBwb3J0IGZvciBlcmVwb3J0KCkgZmlyc3QuICBUaGUgaWRlYSBpcyB0byBzZXQKIAkgKiB1 cCBhbiBlcnJvciBjb250ZXh0IGNhbGxiYWNrIHRvIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZv cm1hdGlvbiBvbiBhbnkKQEAgLTY2OCw2ICs4ODUsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVs YXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCXZhY3JlbC0+ZGJuYW1l ID0gZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKTsKIAl2YWNyZWwtPnJlbG5hbWVz cGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKTsK IAl2YWNyZWwtPnJlbG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpOworCXZhY3JlbC0+cmVsb2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCXZhY3Jl bC0+aW5kbmFtZSA9IE5VTEw7CiAJdmFjcmVsLT5waGFzZSA9IFZBQ1VVTV9FUlJDQl9QSEFT RV9VTktOT1dOOwogCXZhY3JlbC0+dmVyYm9zZSA9IHZlcmJvc2U7CkBAIC02NzYsNiArODk0 LDggQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1z IHBhcmFtcywKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKIAorCW1lbXNldCgmdmFj cmVsLT5leHRWYWNSZXBvcnRJZHgsIDAsIHNpemVvZihQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMpKTsKKwogCS8qIFNldCB1cCBoaWdoIGxldmVsIHN0dWZmIGFib3V0IHJlbCBhbmQg aXRzIGluZGV4ZXMgKi8KIAl2YWNyZWwtPnJlbCA9IHJlbDsKIAl2YWNfb3Blbl9pbmRleGVz KHZhY3JlbC0+cmVsLCBSb3dFeGNsdXNpdmVMb2NrLCAmdmFjcmVsLT5uaW5kZXhlcywKQEAg LTc3Niw2ICs5OTYsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBW YWN1dW1QYXJhbXMgcGFyYW1zLAogCXZhY3JlbC0+YWdncmVzc2l2ZSA9IHZhY3V1bV9nZXRf Y3V0b2ZmcyhyZWwsIHBhcmFtcywgJnZhY3JlbC0+Y3V0b2Zmcyk7CiAJdmFjcmVsLT5yZWxf cGFnZXMgPSBvcmlnX3JlbF9wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVs KTsKIAl2YWNyZWwtPnZpc3Rlc3QgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CisJdmFjcmVs LT53cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50ID0gMDsKIAogCS8qIEluaXRpYWxpemUgc3Rh dGUgdXNlZCB0byB0cmFjayBvbGRlc3QgZXh0YW50IFhJRC9NWElEICovCiAJdmFjcmVsLT5O ZXdSZWxmcm96ZW5YaWQgPSB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbjsKQEAgLTkyNCw2 ICsxMTQ1LDkgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVt UGFyYW1zIHBhcmFtcywKIAkJCQkJCXZhY3JlbC0+TmV3UmVsZnJvemVuWGlkLCB2YWNyZWwt Pk5ld1JlbG1pbk14aWQsCiAJCQkJCQkmZnJvemVueGlkX3VwZGF0ZWQsICZtaW5tdWx0aV91 cGRhdGVkLCBmYWxzZSk7CiAKKwkvKiBNYWtlIGdlbmVyaWMgZXh0ZW5kZWQgdmFjdXVtIHN0 YXRzIHJlcG9ydCAqLworCWV4dHZhY19zdGF0c19lbmQocmVsLCAmZXh0VmFjQ291bnRlcnMs ICZFeHRWYWNSZXBvcnQpOworCiAJLyoKIAkgKiBSZXBvcnQgcmVzdWx0cyB0byB0aGUgY3Vt dWxhdGl2ZSBzdGF0cyBzeXN0ZW0sIHRvby4KIAkgKgpAQCAtOTM0LDEyICsxMTU4LDIwIEBA IGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJh bXMsCiAJICogc29vbiBpbiBjYXNlcyB3aGVyZSB0aGUgZmFpbHNhZmUgcHJldmVudGVkIHNp Z25pZmljYW50IGFtb3VudHMgb2YgaGVhcAogCSAqIHZhY3V1bWluZy4KIAkgKi8KKwkvKiBN YWtlIGdlbmVyaWMgZXh0ZW5kZWQgdmFjdXVtIHN0YXRzIHJlcG9ydCBhbmQKKwkJKiBmaWxs IGhlYXAtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmllbGRzLgorCQkqLworCWV4dHZhY19z dGF0c19lbmQodmFjcmVsLT5yZWwsICZleHRWYWNDb3VudGVycywgJkV4dFZhY1JlcG9ydCk7 CisJYWNjdW11bGF0ZV9oZWFwX3ZhY3V1bV9zdGF0aXN0aWNzKHZhY3JlbCwgJkV4dFZhY1Jl cG9ydCk7CisKIAlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlkKHJlbCks Ci0JCQkJCQkgcmVsLT5yZF9yZWwtPnJlbGlzc2hhcmVkLAotCQkJCQkJIE1heCh2YWNyZWwt Pm5ld19saXZlX3R1cGxlcywgMCksCi0JCQkJCQkgdmFjcmVsLT5yZWNlbnRseV9kZWFkX3R1 cGxlcyArCi0JCQkJCQkgdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXMsCi0JCQkJCQkgc3Rh cnR0aW1lKTsKKwkJCQkJCXJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKKwkJCQkJCU1heCh2 YWNyZWwtPm5ld19saXZlX3R1cGxlcywgMCksCisJCQkJCQl2YWNyZWwtPnJlY2VudGx5X2Rl YWRfdHVwbGVzICsKKwkJCQkJCXZhY3JlbC0+bWlzc2VkX2RlYWRfdHVwbGVzLAorCQkJCQkJ c3RhcnR0aW1lLAorCQkJCQkJJkV4dFZhY1JlcG9ydCk7CisKIAlwZ3N0YXRfcHJvZ3Jlc3Nf ZW5kX2NvbW1hbmQoKTsKIAogCWlmIChpbnN0cnVtZW50KQpAQCAtMjYzMSwxMCArMjg2Mywy MCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJfQog CWVsc2UKIAl7CisJCUxWRXh0U3RhdENvdW50ZXJzIGNvdW50ZXJzOworCQlQZ1N0YXRfVmFj dXVtUmVsYXRpb25Db3VudHMgUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzOworCisJCW1l bXNldCgmUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzLCAwLCBzaXplb2YoUGdTdGF0X1Zh Y3V1bVJlbGF0aW9uQ291bnRzKSk7CisKKwkJZXh0dmFjX3N0YXRzX3N0YXJ0KHZhY3JlbC0+ cmVsLCAmY291bnRlcnMpOworCiAJCS8qIE91dHNvdXJjZSBldmVyeXRoaW5nIHRvIHBhcmFs bGVsIHZhcmlhbnQgKi8KIAkJcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMo dmFjcmVsLT5wdnMsIG9sZF9saXZlX3R1cGxlcywKIAkJCQkJCQkJCQkJdmFjcmVsLT5udW1f aW5kZXhfc2NhbnMpOwogCisJCWV4dHZhY19zdGF0c19lbmQodmFjcmVsLT5yZWwsICZjb3Vu dGVycywgJlBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyk7CisJCWFjY3VtdWxhdGVfaWR4 c192YWN1dW1fc3RhdGlzdGljcyh2YWNyZWwsICZQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3Vu dHMpOworCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5n IHdyYXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQogCQkgKiB0aGF0IHBhcmFsbGVsIFZB Q1VVTSBvbmx5IGdldHMgdGhlIHByZWNoZWNrIGFuZCB0aGlzIHBvc3RjaGVjay4KQEAgLTI5 NjEsNiArMzIwMyw3IEBAIGxhenlfY2hlY2tfd3JhcGFyb3VuZF9mYWlsc2FmZShMVlJlbFN0 YXRlICp2YWNyZWwpCiAJCWludDY0CQlwcm9ncmVzc192YWxbMl0gPSB7MCwgMH07CiAKIAkJ VmFjdXVtRmFpbHNhZmVBY3RpdmUgPSB0cnVlOworCQl2YWNyZWwtPndyYXBhcm91bmRfZmFp bHNhZmVfY291bnQgKys7CiAKIAkJLyoKIAkJICogQWJhbmRvbiB1c2Ugb2YgYSBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IHRvIGFsbG93IHVzZSBvZiBhbGwgb2YKQEAgLTMwNDMsMTAgKzMy ODYsMjAgQEAgbGF6eV9jbGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkK IAl9CiAJZWxzZQogCXsKKwkJTFZFeHRTdGF0Q291bnRlcnMgY291bnRlcnM7CisJCVBnU3Rh dF9WYWN1dW1SZWxhdGlvbkNvdW50cyBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHM7CisK KwkJbWVtc2V0KCZQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMsIDAsIHNpemVvZihQZ1N0 YXRfVmFjdXVtUmVsYXRpb25Db3VudHMpKTsKKworCQlleHR2YWNfc3RhdHNfc3RhcnQodmFj cmVsLT5yZWwsICZjb3VudGVycyk7CisKIAkJLyogT3V0c291cmNlIGV2ZXJ5dGhpbmcgdG8g cGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5k ZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9p bmRleF9zY2FucywKIAkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKworCQlleHR2YWNf c3RhdHNfZW5kKHZhY3JlbC0+cmVsLCAmY291bnRlcnMsICZQZ1N0YXRfVmFjdXVtUmVsYXRp b25Db3VudHMpOworCQlhY2N1bXVsYXRlX2lkeHNfdmFjdXVtX3N0YXRpc3RpY3ModmFjcmVs LCAmUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzKTsKIAl9CiAKIAkvKiBSZXNldCB0aGUg cHJvZ3Jlc3MgY291bnRlcnMgKi8KQEAgLTMwNzIsNiArMzMyNSwxMSBAQCBsYXp5X3ZhY3V1 bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlz dGF0LAogewogCUluZGV4VmFjdXVtSW5mbyBpdmluZm87CiAJTFZTYXZlZEVyckluZm8gc2F2 ZWRfZXJyX2luZm87CisJTFZFeHRTdGF0Q291bnRlcnNJZHggZXh0VmFjQ291bnRlcnM7CisJ UGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50 czsKKworCS8qIFNldCBpbml0aWFsIHN0YXRpc3RpY3MgdmFsdWVzIHRvIGdhdGhlciB2YWN1 dW0gc3RhdGlzdGljcyBmb3IgdGhlIGluZGV4ICovCisJZXh0dmFjX3N0YXRzX3N0YXJ0X2lk eChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMpOwogCiAJaXZpbmZvLmluZGV4ID0g aW5kcmVsOwogCWl2aW5mby5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CkBAIC0zMDkwLDYgKzMz NDgsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCSAqLwogCUFzc2VydCh2YWNyZWwtPmluZG5hbWUg PT0gTlVMTCk7CiAJdmFjcmVsLT5pbmRuYW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShpbmRyZWwpKTsKKwl2YWNyZWwtPmluZG9pZCA9IFJlbGF0aW9uR2V0UmVsaWQo aW5kcmVsKTsKIAl1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8odmFjcmVsLCAmc2F2ZWRfZXJy X2luZm8sCiAJCQkJCQkJIFZBQ1VVTV9FUlJDQl9QSEFTRV9WQUNVVU1fSU5ERVgsCiAJCQkJ CQkJIEludmFsaWRCbG9ja051bWJlciwgSW52YWxpZE9mZnNldE51bWJlcik7CkBAIC0zMDk4 LDYgKzMzNTcsMTYgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpc3RhdCA9IHZhY19idWxrZGVsX29u ZV9pbmRleCgmaXZpbmZvLCBpc3RhdCwgdmFjcmVsLT5kZWFkX2l0ZW1zLAogCQkJCQkJCQkg IHZhY3JlbC0+ZGVhZF9pdGVtc19pbmZvKTsKIAorCS8qIE1ha2UgZXh0ZW5kZWQgdmFjdXVt IHN0YXRzIHJlcG9ydCBmb3IgaW5kZXggKi8KKwlleHR2YWNfc3RhdHNfZW5kX2lkeChpbmRy ZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3Vu dHMpOworCisJaWYgKCFQYXJhbGxlbFZhY3V1bUlzQWN0aXZlKHZhY3JlbCkpCisJCWFjY3Vt dWxhdGVfaWR4c192YWN1dW1fc3RhdGlzdGljcyh2YWNyZWwsICZQZ1N0YXRfVmFjdXVtUmVs YXRpb25Db3VudHMpOworCisJcGdzdGF0X3JlcG9ydF92YWN1dW0oUmVsYXRpb25HZXRSZWxp ZChpbmRyZWwpLAorCQkJCQkJCWluZHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKKwkJCQkJ CQkwLCAwLCAwLCAmUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzKTsKKwogCS8qIFJldmVy dCB0byB0aGUgcHJldmlvdXMgcGhhc2UgaW5mb3JtYXRpb24gZm9yIGVycm9yIHRyYWNlYmFj ayAqLwogCXJlc3RvcmVfdmFjdXVtX2Vycm9yX2luZm8odmFjcmVsLCAmc2F2ZWRfZXJyX2lu Zm8pOwogCXBmcmVlKHZhY3JlbC0+aW5kbmFtZSk7CkBAIC0zMTIyLDYgKzMzOTEsMTEgQEAg bGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqaXN0YXQsCiB7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKIAlMVlNhdmVk RXJySW5mbyBzYXZlZF9lcnJfaW5mbzsKKwlMVkV4dFN0YXRDb3VudGVyc0lkeCBleHRWYWND b3VudGVyczsKKwlQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgUGdTdGF0X1ZhY3V1bVJl bGF0aW9uQ291bnRzOworCisJLyogU2V0IGluaXRpYWwgc3RhdGlzdGljcyB2YWx1ZXMgdG8g Z2F0aGVyIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaW5kZXggKi8KKwlleHR2YWNfc3Rh dHNfc3RhcnRfaWR4KGluZHJlbCwgaXN0YXQsICZleHRWYWNDb3VudGVycyk7CiAKIAlpdmlu Zm8uaW5kZXggPSBpbmRyZWw7CiAJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKQEAg LTMxNDEsMTIgKzM0MTUsMjIgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBp bmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJICovCiAJQXNzZXJ0KHZh Y3JlbC0+aW5kbmFtZSA9PSBOVUxMKTsKIAl2YWNyZWwtPmluZG5hbWUgPSBwc3RyZHVwKFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOworCXZhY3JlbC0+aW5kb2lkID0gUmVs YXRpb25HZXRSZWxpZChpbmRyZWwpOwogCXVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNy ZWwsICZzYXZlZF9lcnJfaW5mbywKIAkJCQkJCQkgVkFDVVVNX0VSUkNCX1BIQVNFX0lOREVY X0NMRUFOVVAsCiAJCQkJCQkJIEludmFsaWRCbG9ja051bWJlciwgSW52YWxpZE9mZnNldE51 bWJlcik7CiAKIAlpc3RhdCA9IHZhY19jbGVhbnVwX29uZV9pbmRleCgmaXZpbmZvLCBpc3Rh dCk7CiAKKwkvKiBNYWtlIGV4dGVuZGVkIHZhY3V1bSBzdGF0cyByZXBvcnQgZm9yIGluZGV4 ICovCisJZXh0dmFjX3N0YXRzX2VuZF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50 ZXJzLCAmUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzKTsKKwlpZiAoIVBhcmFsbGVsVmFj dXVtSXNBY3RpdmUodmFjcmVsKSkKKwkJYWNjdW11bGF0ZV9pZHhzX3ZhY3V1bV9zdGF0aXN0 aWNzKHZhY3JlbCwgJlBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyk7CisKKwlwZ3N0YXRf cmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlkKGluZHJlbCksCisJCQkJCQkJaW5kcmVs LT5yZF9yZWwtPnJlbGlzc2hhcmVkLAorCQkJCQkJCTAsIDAsIDAsICZQZ1N0YXRfVmFjdXVt UmVsYXRpb25Db3VudHMpOworCiAJLyogUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBwaGFzZSBp bmZvcm1hdGlvbiBmb3IgZXJyb3IgdHJhY2ViYWNrICovCiAJcmVzdG9yZV92YWN1dW1fZXJy b3JfaW5mbyh2YWNyZWwsICZzYXZlZF9lcnJfaW5mbyk7CiAJcGZyZWUodmFjcmVsLT5pbmRu YW1lKTsKQEAgLTM3NTksNiArNDA0Myw5IEBAIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lk ICphcmcpCiAJc3dpdGNoIChlcnJpbmZvLT5waGFzZSkKIAl7CiAJCWNhc2UgVkFDVVVNX0VS UkNCX1BIQVNFX1NDQU5fSEVBUDoKKwkJCWlmKGdldGVycmVsZXZlbCgpID09IEVSUk9SKQor CQkJCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZvLT5yZWxvaWQsIGVycmlu Zm8tPnJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwgUEdTVEFUX0VYVFZBQ19UQUJMRSk7CisK IAkJCWlmIChCbG9ja051bWJlcklzVmFsaWQoZXJyaW5mby0+Ymxrbm8pKQogCQkJewogCQkJ CWlmIChPZmZzZXROdW1iZXJJc1ZhbGlkKGVycmluZm8tPm9mZm51bSkpCkBAIC0zNzc0LDYg KzQwNjEsOSBAQCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCQkJYnJlYWs7 CiAKIAkJY2FzZSBWQUNVVU1fRVJSQ0JfUEhBU0VfVkFDVVVNX0hFQVA6CisJCQlpZihnZXRl cnJlbGV2ZWwoKSA9PSBFUlJPUikKKwkJCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihl cnJpbmZvLT5yZWxvaWQsIGVycmluZm8tPnJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwgUEdT VEFUX0VYVFZBQ19UQUJMRSk7CisKIAkJCWlmIChCbG9ja051bWJlcklzVmFsaWQoZXJyaW5m by0+Ymxrbm8pKQogCQkJewogCQkJCWlmIChPZmZzZXROdW1iZXJJc1ZhbGlkKGVycmluZm8t Pm9mZm51bSkpCkBAIC0zNzg5LDE2ICs0MDc5LDI1IEBAIHZhY3V1bV9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpCiAJCQlicmVhazsKIAogCQljYXNlIFZBQ1VVTV9FUlJDQl9QSEFTRV9W QUNVVU1fSU5ERVg6CisJCQlpZihnZXRlcnJlbGV2ZWwoKSA9PSBFUlJPUikKKwkJCQlwZ3N0 YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZvLT5yZWxvaWQsIGVycmluZm8tPnJlbC0+ cmRfcmVsLT5yZWxpc3NoYXJlZCwgUEdTVEFUX0VYVFZBQ19JTkRFWCk7CisKIAkJCWVycmNv bnRleHQoIndoaWxlIHZhY3V1bWluZyBpbmRleCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlcy4l c1wiIiwKIAkJCQkJICAgZXJyaW5mby0+aW5kbmFtZSwgZXJyaW5mby0+cmVsbmFtZXNwYWNl LCBlcnJpbmZvLT5yZWxuYW1lKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVkFDVVVNX0VSUkNC X1BIQVNFX0lOREVYX0NMRUFOVVA6CisJCQlpZihnZXRlcnJlbGV2ZWwoKSA9PSBFUlJPUikK KwkJCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZvLT5yZWxvaWQsIGVycmlu Zm8tPnJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwgUEdTVEFUX0VYVFZBQ19JTkRFWCk7CisK IAkJCWVycmNvbnRleHQoIndoaWxlIGNsZWFuaW5nIHVwIGluZGV4IFwiJXNcIiBvZiByZWxh dGlvbiBcIiVzLiVzXCIiLAogCQkJCQkgICBlcnJpbmZvLT5pbmRuYW1lLCBlcnJpbmZvLT5y ZWxuYW1lc3BhY2UsIGVycmluZm8tPnJlbG5hbWUpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBW QUNVVU1fRVJSQ0JfUEhBU0VfVFJVTkNBVEU6CisJCQlpZihnZXRlcnJlbGV2ZWwoKSA9PSBF UlJPUikKKwkJCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZvLT5yZWxvaWQs IGVycmluZm8tPnJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwgUEdTVEFUX0VYVFZBQ19UQUJM RSk7CisKIAkJCWlmIChCbG9ja051bWJlcklzVmFsaWQoZXJyaW5mby0+Ymxrbm8pKQogCQkJ CWVycmNvbnRleHQoIndoaWxlIHRydW5jYXRpbmcgcmVsYXRpb24gXCIlcy4lc1wiIHRvICV1 IGJsb2NrcyIsCiAJCQkJCQkgICBlcnJpbmZvLT5yZWxuYW1lc3BhY2UsIGVycmluZm8tPnJl bG5hbWUsIGVycmluZm8tPmJsa25vKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2li aWxpdHltYXAuYwppbmRleCA5NTNhZDRhNDg0My4uYTIxZTc3Y2Q1NTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTkxLDYgKzkxLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRp bHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAgLTE2MCw2ICsxNjEsMTUgQEAgdmlz aWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciB2bWJ1ZiwgdWludDggZmxhZ3MKIAogCWlmIChtYXBbbWFwQnl0ZV0gJiBtYXNrKQog CXsKKwkJLyoKKwkJICogQXMgcGFydCBvZiB2YWN1dW0gc3RhdHMsIHRyYWNrIGhvdyBvZnRl biBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuCisJCSAqIGJpdHMgYXJlIGNsZWFyZWQuCisJ CSAqLworCQlpZiAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCAmIGZsYWdzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkKKwkJCXBnc3RhdF9jb3VudF92bV9yZXZfYWxsX3Zpc2li bGUocmVsKTsKKwkJaWYgKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQgJiBmbGFncyAmIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTikKKwkJCXBnc3RhdF9jb3VudF92bV9yZXZfYWxsX2Zy b3plbihyZWwpOworCiAJCW1hcFttYXBCeXRlXSAmPSB+bWFzazsKIAogCQlNYXJrQnVmZmVy RGlydHkodm1idWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA3MzNlZjQwYWU3Yy4u ZDg3NzZmZjE5MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMTYsNiArMTE2LDkg QEAgcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgPSBOVUxMOwog cGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtQWN0aXZlTldvcmtlcnMgPSBOVUxMOwogaW50CQkJ VmFjdXVtQ29zdEJhbGFuY2VMb2NhbCA9IDA7CiAKKy8qIEN1bXVsYXRpdmUgc3RvcmFnZSB0 byByZXBvcnQgdG90YWwgdmFjdXVtIGRlbGF5IHRpbWUuICovCitkb3VibGUgVmFjdXVtRGVs YXlUaW1lID0gMDsgLyogbXNlYy4gKi8KKwogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90 b3R5cGVzICovCiBzdGF0aWMgTGlzdCAqZXhwYW5kX3ZhY3V1bV9yZWwoVmFjdXVtUmVsYXRp b24gKnZyZWwsCiAJCQkJCQkJICAgTWVtb3J5Q29udGV4dCB2YWNfY29udGV4dCwgaW50IG9w dGlvbnMpOwpAQCAtMjUzMyw2ICsyNTM2LDcgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wg aXNfYW5hbHl6ZSkKIAkJCWV4aXQoMSk7CiAKIAkJVmFjdXVtQ29zdEJhbGFuY2UgPSAwOwor CQlWYWN1dW1EZWxheVRpbWUgKz0gbXNlYzsKIAogCQkvKgogCQkgKiBCYWxhbmNlIGFuZCB1 cGRhdGUgbGltaXQgdmFsdWVzIGZvciBhdXRvdmFjdXVtIHdvcmtlcnMuIFdlIG11c3QgZG8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQzMGVj Li5iNTQ2MWVjNjYxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j CkBAIC04NjgsNiArODY4LDggQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4 KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCUluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqaXN0YXQgPSBOVUxMOwogCUluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq aXN0YXRfcmVzOwogCUluZGV4VmFjdXVtSW5mbyBpdmluZm87CisJTFZFeHRTdGF0Q291bnRl cnNJZHggZXh0VmFjQ291bnRlcnM7CisJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzIGV4 dFZhY1JlcG9ydDsKIAogCS8qCiAJICogVXBkYXRlIHRoZSBwb2ludGVyIHRvIHRoZSBjb3Jy ZXNwb25kaW5nIGJ1bGstZGVsZXRpb24gcmVzdWx0IGlmIHNvbWVvbmUKQEAgLTg3Niw2ICs4 NzgsOSBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaWYgKGluZHN0YXRzLT5pc3RhdF91 cGRhdGVkKQogCQlpc3RhdCA9ICYoaW5kc3RhdHMtPmlzdGF0KTsKIAorCS8qIFNldCBpbml0 aWFsIHN0YXRpc3RpY3MgdmFsdWVzIHRvIGdhdGhlciB2YWN1dW0gc3RhdGlzdGljcyBmb3Ig dGhlIGluZGV4ICovCisJZXh0dmFjX3N0YXRzX3N0YXJ0X2lkeChpbmRyZWwsICYoaW5kc3Rh dHMtPmlzdGF0KSwgJmV4dFZhY0NvdW50ZXJzKTsKKwogCWl2aW5mby5pbmRleCA9IGluZHJl bDsKIAlpdmluZm8uaGVhcHJlbCA9IHB2cy0+aGVhcHJlbDsKIAlpdmluZm8uYW5hbHl6ZV9v bmx5ID0gZmFsc2U7CkBAIC05MDQsNiArOTA5LDEyIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJl bCwKIAkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CiAJfQogCisJLyog TWFrZSBleHRlbmRlZCB2YWN1dW0gc3RhdHMgcmVwb3J0IGZvciBpbmRleCAqLworCWV4dHZh Y19zdGF0c19lbmRfaWR4KGluZHJlbCwgaXN0YXRfcmVzLCAmZXh0VmFjQ291bnRlcnMsICZl eHRWYWNSZXBvcnQpOworCXBnc3RhdF9yZXBvcnRfdmFjdXVtKFJlbGF0aW9uR2V0UmVsaWQo aW5kcmVsKSwKKwkJCQkJCQlpbmRyZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQsCisJCQkJCQkJ MCwgMCwgMCwgJmV4dFZhY1JlcG9ydCk7CisKIAkvKgogCSAqIENvcHkgdGhlIGluZGV4IGJ1 bGstZGVsZXRpb24gcmVzdWx0IHJldHVybmVkIGZyb20gYW1idWxrZGVsZXRlIGFuZAogCSAq IGFtdmFjdXVtY2xlYW51cCB0byB0aGUgRFNNIHNlZ21lbnQgaWYgaXQncyB0aGUgZmlyc3Qg Y3ljbGUgYmVjYXVzZSB0aGV5CkBAIC0xMDU0LDYgKzEwNjUsNyBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogU2V0IGNvc3Qt YmFzZWQgdmFjdXVtIGRlbGF5ICovCiAJVmFjdXVtVXBkYXRlQ29zdHMoKTsKIAlWYWN1dW1D b3N0QmFsYW5jZSA9IDA7CisJVmFjdXVtRGVsYXlUaW1lID0gMDsKIAlWYWN1dW1Db3N0QmFs YW5jZUxvY2FsID0gMDsKIAlWYWN1dW1TaGFyZWRDb3N0QmFsYW5jZSA9ICYoc2hhcmVkLT5j b3N0X2JhbGFuY2UpOwogCVZhY3V1bUFjdGl2ZU5Xb3JrZXJzID0gJihzaGFyZWQtPmFjdGl2 ZV9ud29ya2Vycyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9y ZWxhdGlvbi5jCmluZGV4IDY5ZGY3NDFjYmY2Li4zM2E0MDA5Zjc0NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTIwMywxMyAr MjAzLDM5IEBAIHBnc3RhdF9kcm9wX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCkKIAl9CiB9CiAK Ky8qIC0tLS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF92YWN1dW1fZXJyb3IoKSAtCisgKgor ICoJVGVsbCB0aGUgY29sbGVjdG9yIGFib3V0IGFuIChhdXRvKXZhY3V1bSBpbnRlcnJ1cHRp b24uCisgKiAtLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9ydF92YWN1dW1fZXJy b3IoT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwgRXh0VmFjUmVwb3J0VHlwZSBtX3R5cGUp Cit7CisJUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzIHBhcmFtczsKKworCWlmICghcGdz dGF0X3RyYWNrX2NvdW50cykKKwkJcmV0dXJuOworCisJaWYgKHNldF9yZXBvcnRfdmFjdXVt X2hvb2spCisJeworCQltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKFBnU3RhdF9WYWN1dW1S ZWxhdGlvbkNvdW50cykpOworCisJCXBhcmFtcy5jb21tb24uaW50ZXJydXB0c19jb3VudCsr OworCisJCSgqc2V0X3JlcG9ydF92YWN1dW1faG9vaykgKHRhYmxlb2lkLCBzaGFyZWQsICZw YXJhbXMpOworCX0KK30KKworc2V0X3JlcG9ydF92YWN1dW1faG9va190eXBlIHNldF9yZXBv cnRfdmFjdXVtX2hvb2sgPSBOVUxMOworCiAvKgogICogUmVwb3J0IHRoYXQgdGhlIHRhYmxl IHdhcyBqdXN0IHZhY3V1bWVkIGFuZCBmbHVzaCBJTyBzdGF0aXN0aWNzLgogICovCiB2b2lk CiBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLAogCQkJ CQkgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywgUGdTdGF0X0NvdW50ZXIgZGVhZHR1cGxl cywKLQkJCQkJIFRpbWVzdGFtcFR6IHN0YXJ0dGltZSkKKwkJCQkJIFRpbWVzdGFtcFR6IHN0 YXJ0dGltZSwgUGdTdGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICpwYXJhbXMpCiB7CiAJUGdT dGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CiAJUGdTdGF0U2hhcmVkX1JlbGF0aW9uICpzaHRh YmVudHJ5OwpAQCAtMjM1LDYgKzI2MSwxMSBAQCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQg dGFibGVvaWQsIGJvb2wgc2hhcmVkLAogCXRhYmVudHJ5LT5saXZlX3R1cGxlcyA9IGxpdmV0 dXBsZXM7CiAJdGFiZW50cnktPmRlYWRfdHVwbGVzID0gZGVhZHR1cGxlczsKIAorCWlmIChz ZXRfcmVwb3J0X3ZhY3V1bV9ob29rKQorCXsKKwkJKCpzZXRfcmVwb3J0X3ZhY3V1bV9ob29r KSAodGFibGVvaWQsIHNoYXJlZCwgcGFyYW1zKTsKKwl9CisKIAkvKgogCSAqIEl0IGlzIHF1 aXRlIHBvc3NpYmxlIHRoYXQgYSBub24tYWdncmVzc2l2ZSBWQUNVVU0gZW5kZWQgdXAgc2tp cHBpbmcKIAkgKiB2YXJpb3VzIHBhZ2VzLCBob3dldmVyLCB3ZSdsbCB6ZXJvIHRoZSBpbnNl cnQgY291bnRlciBoZXJlIHJlZ2FyZGxlc3MuCkBAIC04ODEsNiArOTEyLDkgQEAgcGdzdGF0 X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5v d2FpdCkKIAl0YWJlbnRyeS0+YmxvY2tzX2ZldGNoZWQgKz0gbHN0YXRzLT5jb3VudHMuYmxv Y2tzX2ZldGNoZWQ7CiAJdGFiZW50cnktPmJsb2Nrc19oaXQgKz0gbHN0YXRzLT5jb3VudHMu YmxvY2tzX2hpdDsKIAorCXRhYmVudHJ5LT5yZXZfYWxsX2Zyb3plbl9wYWdlcyArPSBsc3Rh dHMtPmNvdW50cy5yZXZfYWxsX2Zyb3plbl9wYWdlczsKKwl0YWJlbnRyeS0+cmV2X2FsbF92 aXNpYmxlX3BhZ2VzICs9IGxzdGF0cy0+Y291bnRzLnJldl9hbGxfdmlzaWJsZV9wYWdlczsK KwogCS8qIENsYW1wIGxpdmVfdHVwbGVzIGluIGNhc2Ugb2YgbmVnYXRpdmUgZGVsdGFfbGl2 ZV90dXBsZXMgKi8KIAl0YWJlbnRyeS0+bGl2ZV90dXBsZXMgPSBNYXgodGFiZW50cnktPmxp dmVfdHVwbGVzLCAwKTsKIAkvKiBMaWtld2lzZSBmb3IgZGVhZF90dXBsZXMgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggYzc1NmMyYmViYWEuLjk0ODJiZjgw NzIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMTA2LDYgKzEw NiwxMiBAQCBQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfdXBkYXRlZCkKIC8q IHBnX3N0YXRfZ2V0X3ZhY3V1bV9jb3VudCAqLwogUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5U NjQodmFjdXVtX2NvdW50KQogCisvKiBwZ19zdGF0X2dldF9yZXZfZnJvemVuX3BhZ2VzICov CitQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NChyZXZfYWxsX2Zyb3plbl9wYWdlcykKKwor LyogcGdfc3RhdF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzICovCitQR19TVEFUX0dFVF9S RUxFTlRSWV9JTlQ2NChyZXZfYWxsX3Zpc2libGVfcGFnZXMpCisKICNkZWZpbmUgUEdfU1RB VF9HRVRfUkVMRU5UUllfRkxPQVQ4KHN0YXQpCQkJCQkJXAogRGF0dW0JCQkJCQkJCQkJCQkJ CQlcCiBDcHBDb25jYXQocGdfc3RhdF9nZXRfLHN0YXQpKFBHX0ZVTkNUSU9OX0FSR1MpCQkJ CQlcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgYi9zcmMv YmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggYjdiOTY5MmY4YzguLmYwZWNmODZl NTE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCkBAIC0xNjI3LDYgKzE2MjcsMTkgQEAg Z2V0aW50ZXJuYWxlcnJwb3NpdGlvbih2b2lkKQogCXJldHVybiBlZGF0YS0+aW50ZXJuYWxw b3M7CiB9CiAKKy8qCisgKiBSZXR1cm4gZWxldmVsIG9mIGVycm9ycworICovCitpbnQKK2dl dGVycmVsZXZlbCh2b2lkKQoreworCUVycm9yRGF0YSAgKmVkYXRhID0gJmVycm9yZGF0YVtl cnJvcmRhdGFfc3RhY2tfZGVwdGhdOworCisJLyogd2UgZG9uJ3QgYm90aGVyIGluY3JlbWVu dGluZyByZWN1cnNpb25fZGVwdGggKi8KKwlDSEVDS19TVEFDS19ERVBUSCgpOworCisJcmV0 dXJuIGVkYXRhLT5lbGV2ZWw7Cit9CiAKIC8qCiAgKiBGdW5jdGlvbnMgdG8gYWxsb3cgY29u c3RydWN0aW9uIG9mIGVycm9yIG1lc3NhZ2Ugc3RyaW5ncyBzZXBhcmF0ZWx5IGZyb20KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDExOGQ2ZGExYWNlLi5lMGM3Y2YyOWIzYSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjU3Niw0ICsxMjU3NiwxMiBAQAog ICBwcm9hcmduYW1lcyA9PiAne3BpZCxpb19pZCxpb19nZW5lcmF0aW9uLHN0YXRlLG9wZXJh dGlvbixvZmYsbGVuZ3RoLHRhcmdldCxoYW5kbGVfZGF0YV9sZW4scmF3X3Jlc3VsdCxyZXN1 bHQsdGFyZ2V0X2Rlc2MsZl9zeW5jLGZfbG9jYWxtZW0sZl9idWZmZXJlZH0nLAogICBwcm9z cmMgPT4gJ3BnX2dldF9haW9zJyB9LAogCisgIHsgb2lkID0+ICc4MDAyJywgZGVzY3IgPT4g J3N0YXRpc3RpY3M6IG51bWJlciBvZiB0aW1lcyB0aGUgYWxsLXZpc2libGUgcGFnZXMgaW4g dGhlIHZpc2liaWxpdHkgbWFwIHdhcyByZW1vdmVkIGZvciBwYWdlcyBvZiB0YWJsZScsCisg IHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3Jldl9hbGxfdmlzaWJsZV9wYWdlcycsIHByb3Zv bGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRf cmV2X2FsbF92aXNpYmxlX3BhZ2VzJyB9LAorICB7IG9pZCA9PiAnODAwMycsIGRlc2NyID0+ ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdGltZXMgdGhlIGFsbC1mcm96ZW4gcGFnZXMgaW4g dGhlIHZpc2liaWxpdHkgbWFwIHdhcyByZW1vdmVkIGZvciBwYWdlcyBvZiB0YWJsZScsCisg IHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3Jldl9hbGxfZnJvemVuX3BhZ2VzJywgcHJvdm9s YXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2lu dDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9y ZXZfYWxsX2Zyb3plbl9wYWdlcycgfSwKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXgg MTRlZWNjYmQ3MTguLmJjOWRmMTQzM2MyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAt MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKIAogLyoKICAqIEZsYWdzIGZvciBhbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyB0 byBjb250cm9sIHRoZSBwYXJ0aWNpcGF0aW9uIG9mIGJ1bGtkZWxldGUKQEAgLTI5NSw2ICsy OTYsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0ZW1zSW5mbwogCWludDY0CQludW1f aXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmllcyAqLwogfSBWYWNEZWFkSXRlbXNJbmZv OwogCisvKgorICogQ291bnRlcnMgYW5kIHVzYWdlIGRhdGEgZm9yIGV4dGVuZGVkIHN0YXRz IHRyYWNraW5nLgorICovCit0eXBlZGVmIHN0cnVjdCBMVkV4dFN0YXRDb3VudGVycworewor CVRpbWVzdGFtcFR6IHN0YXJ0dGltZTsKKwlXYWxVc2FnZQl3YWx1c2FnZTsKKwlCdWZmZXJV c2FnZSBidWZ1c2FnZTsKKwlkb3VibGUJCVZhY3V1bURlbGF5VGltZTsKKwlQZ1N0YXRfQ291 bnRlciBibG9ja3NfZmV0Y2hlZDsKKwlQZ1N0YXRfQ291bnRlciBibG9ja3NfaGl0OworfSBM VkV4dFN0YXRDb3VudGVyczsKKwordHlwZWRlZiBzdHJ1Y3QgTFZFeHRTdGF0Q291bnRlcnNJ ZHgKK3sKKwlMVkV4dFN0YXRDb3VudGVycyBjb21tb247CisJaW50NjQJCXBhZ2VzX2RlbGV0 ZWQ7CisJaW50NjQJCXR1cGxlc19yZW1vdmVkOworfSBMVkV4dFN0YXRDb3VudGVyc0lkeDsK KwogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVmYXVs dF9zdGF0aXN0aWNzX3RhcmdldDsJLyogUEdETExJTVBPUlQgZm9yIFBvc3RHSVMgKi8KIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlOwpAQCAtMzI3LDYg KzM0OCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBkb3VibGUgdmFjdXVtX21heF9lYWdlcl9m cmVlemVfZmFpbHVyZV9yYXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50 MzIgKlZhY3V1bVNoYXJlZENvc3RCYWxhbmNlOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0 b21pY191aW50MzIgKlZhY3V1bUFjdGl2ZU5Xb3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCBWYWN1dW1Db3N0QmFsYW5jZUxvY2FsOworZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJs ZSBWYWN1dW1EZWxheVRpbWU7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIFZhY3V1bUZh aWxzYWZlQWN0aXZlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJsZSB2YWN1dW1fY29zdF9k ZWxheTsKQEAgLTQwNyw0ICs0MjksOCBAQCBleHRlcm4gZG91YmxlIGFubF9yYW5kb21fZnJh Y3Qodm9pZCk7CiBleHRlcm4gZG91YmxlIGFubF9pbml0X3NlbGVjdGlvbl9zdGF0ZShpbnQg bik7CiBleHRlcm4gZG91YmxlIGFubF9nZXRfbmV4dF9TKGRvdWJsZSB0LCBpbnQgbiwgZG91 YmxlICpzdGF0ZXB0cik7CiAKK2V4dGVybiB2b2lkIGV4dHZhY19zdGF0c19zdGFydF9pZHgo UmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCQkgICBM VkV4dFN0YXRDb3VudGVyc0lkeCAqY291bnRlcnMpOworZXh0ZXJuIHZvaWQgZXh0dmFjX3N0 YXRzX2VuZF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz LAorCQkJCQkgTFZFeHRTdGF0Q291bnRlcnNJZHggKmNvdW50ZXJzLCBQZ1N0YXRfVmFjdXVt UmVsYXRpb25Db3VudHMgKnJlcG9ydCk7CiAjZW5kaWYJCQkJCQkJLyogVkFDVVVNX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKaW5kZXggZjQwMmIxNzI5NWMuLmVkNmIzZGMxZDZmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtMTAwLDYgKzEw MCw5OCBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfRnVuY3Rpb25DYWxsVXNhZ2UKIAlpbnN0 cl90aW1lCXN0YXJ0OwogfSBQZ1N0YXRfRnVuY3Rpb25DYWxsVXNhZ2U7CiAKKworLyogVHlw ZSBvZiBFeHRWYWNSZXBvcnQgKi8KK3R5cGVkZWYgZW51bSBFeHRWYWNSZXBvcnRUeXBlCit7 CisJUEdTVEFUX0VYVFZBQ19JTlZBTElEID0gMCwKKwlQR1NUQVRfRVhUVkFDX1RBQkxFID0g MSwKKwlQR1NUQVRfRVhUVkFDX0lOREVYID0gMiwKKwlQR1NUQVRfRVhUVkFDX0RCID0gMywK K30gRXh0VmFjUmVwb3J0VHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0NvbW1vbkNv dW50cworeworCS8qIGJsb2NrcyAqLworCWludDY0IHRvdGFsX2Jsa3NfcmVhZDsKKwlpbnQ2 NCB0b3RhbF9ibGtzX2hpdDsKKwlpbnQ2NCB0b3RhbF9ibGtzX2RpcnRpZWQ7CisJaW50NjQg dG90YWxfYmxrc193cml0dGVuOworCisJLyogaGVhcCBibG9ja3MgKi8KKwlpbnQ2NCBibGtz X2ZldGNoZWQ7CisJaW50NjQgYmxrc19oaXQ7CisKKwkvKiBXQUwgKi8KKwlpbnQ2NCB3YWxf cmVjb3JkczsKKwlpbnQ2NCB3YWxfZnBpOworCXVpbnQ2NCB3YWxfYnl0ZXM7CisKKwkvKiBU aW1lICovCisJZG91YmxlIGJsa19yZWFkX3RpbWU7CisJZG91YmxlIGJsa193cml0ZV90aW1l OworCWRvdWJsZSBkZWxheV90aW1lOworCWRvdWJsZSB0b3RhbF90aW1lOworCisJLyogZmFp bHNhZmUgKi8KKwlpbnQzMiB3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OworCWludDMyIGlu dGVycnVwdHNfY291bnQ7Cit9IFBnU3RhdF9Db21tb25Db3VudHM7CisKKy8qIC0tLS0tLS0t LS0KKyAqCisgKiBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMKKyAqCisgKiBBZGRpdGlv bmFsIHN0YXRpc3RpY3Mgb2YgdmFjdXVtIHByb2Nlc3Npbmcgb3ZlciBhIHJlbGF0aW9uLgor ICogcGFnZXNfcmVtb3ZlZCBpcyB0aGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBwaHlzaWNhbGx5 IHNocmFuaywKKyAqIGlmIGFueSAoaWUgdGhlIGNoYW5nZSBpbiBpdHMgdG90YWwgc2l6ZSBv biBkaXNrKQorICogcGFnZXNfZGVsZXRlZCByZWZlciB0byBmcmVlIHNwYWNlIHdpdGhpbiB0 aGUgaW5kZXggZmlsZQorICogLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBQZ1N0 YXRfVmFjdXVtUmVsYXRpb25Db3VudHMKK3sKKwlQZ1N0YXRfQ29tbW9uQ291bnRzIGNvbW1v bjsKKworCUV4dFZhY1JlcG9ydFR5cGUgdHlwZTsJCS8qIGhlYXAsIGluZGV4LCBldGMuICov CisKKwkvKiAtLS0tLS0tLS0tCisJICoKKwkgKiBUaGVyZSBhcmUgc2VwYXJhdGUgbWV0cmlj cyBvZiBzdGF0aXN0aWMgZm9yIHRhYmxlcyBhbmQgaW5kZXhlcywKKwkgKiB3aGljaCBjb2xs ZWN0IGR1cmluZyB2YWN1dW0uCisJICogVGhlIHVuaW9uIG9wZXJhdG9yIGFsbG93cyB0byBj b21iaW5lIHRoZXNlIHN0YXRpc3RpY3MKKwkgKiBzbyB0aGF0IGVhY2ggbWV0cmljIGlzIGFz c2lnbmVkIHRvIGEgc3BlY2lmaWMgY2xhc3Mgb2YgY29sbGVjdGVkIHN0YXRpc3RpY3MuCisJ ICogU3VjaCBhIGNvbWJpbmVkIHN0cnVjdHVyZSB3YXMgY2FsbGVkIHBlcl90eXBlX3N0YXRz LgorCSAqIFRoZSBuYW1lIG9mIHRoZSBzdHJ1Y3R1cmUgaXRzZWxmIGlzIG5vdCB1c2VkIGFu eXdoZXJlLAorCSAqIGl0IGV4aXN0cyBvbmx5IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb2Rl LgorCSAqIC0tLS0tLS0tLS0KKwkqLworCXVuaW9uCisJeworCQlzdHJ1Y3QKKwkJeworCQkJ aW50NjQJCXR1cGxlc19mcm96ZW47CQkvKiB0dXBsZXMgZnJvemVuIHVwIGJ5IHZhY3V1bSAq LworCQkJaW50NjQJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwkvKiBkZWxldGVkIHR1cGxlcyB0 aGF0IGFyZSBzdGlsbCB2aXNpYmxlIHRvIHNvbWUgdHJhbnNhY3Rpb24gKi8KKwkJCWludDY0 CQltaXNzZWRfZGVhZF90dXBsZXM7CQkvKiB0dXBsZXMgbm90IHBydW5lZCBieSB2YWN1dW0g ZHVlIHRvIGZhaWx1cmUgdG8gZ2V0IGEgY2xlYW51cCBsb2NrICovCisJCQlpbnQ2NAkJcGFn ZXNfc2Nhbm5lZDsJCS8qIGhlYXAgcGFnZXMgZXhhbWluZWQgKG5vdCBza2lwcGVkIGJ5IFZN KSAqLworCQkJaW50NjQJCXBhZ2VzX3JlbW92ZWQ7CQkvKiBoZWFwIHBhZ2VzIHJlbW92ZWQg YnkgdmFjdXVtICJ0cnVuY2F0aW9uIiAqLworCQkJaW50NjQJCXBhZ2VzX2Zyb3plbjsJCS8q IHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBmcm96ZW4gKi8KKwkJCWludDY0CQlwYWdlc19hbGxf dmlzaWJsZTsJLyogcGFnZXMgbWFya2VkIGluIFZNIGFzIGFsbC12aXNpYmxlICovCisJCQlp bnQ2NAkJdm1fbmV3X2Zyb3plbl9wYWdlczsJCS8qIHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBm cm96ZW4gKi8KKwkJCWludDY0CQl2bV9uZXdfdmlzaWJsZV9wYWdlczsJLyogcGFnZXMgbWFy a2VkIGluIFZNIGFzIGFsbC12aXNpYmxlICovCisJCQlpbnQ2NAkJdm1fbmV3X3Zpc2libGVf ZnJvemVuX3BhZ2VzOwkvKiBwYWdlcyBtYXJrZWQgaW4gVk0gYXMgYWxsLXZpc2libGUgYW5k IGZyb3plbiAqLworCQkJaW50NjQJCW1pc3NlZF9kZWFkX3BhZ2VzOwkJLyogcGFnZXMgd2l0 aCBtaXNzZWQgZGVhZCB0dXBsZXMgKi8KKwkJCWludDY0CQlpbmRleF92YWN1dW1fY291bnQ7 CS8qIG51bWJlciBvZiBpbmRleCB2YWN1dW1pbmdzICovCisJCQlpbnQ2NCAJCXR1cGxlc19k ZWxldGVkOworCQl9CQkJdGFibGU7CisJCXN0cnVjdAorCQl7CisJCQlpbnQ2NCAJCXR1cGxl c19kZWxldGVkOworCQkJaW50NjQJCXBhZ2VzX2RlbGV0ZWQ7CQkvKiBudW1iZXIgb2YgcGFn ZXMgZGVsZXRlZCBieSB2YWN1dW0gKi8KKwkJfQkJCWluZGV4OworCX0gLyogcGVyX3R5cGVf c3RhdHMgKi87Cit9IFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50czsKKworCiAvKiAtLS0t LS0tLS0tCiAgKiBQZ1N0YXRfQmFja2VuZFN1YkVudHJ5CU5vbi1mbHVzaGVkIHN1YnNjcmlw dGlvbiBzdGF0cy4KICAqIC0tLS0tLS0tLS0KQEAgLTE1Myw2ICsyNDUsOSBAQCB0eXBlZGVm IHN0cnVjdCBQZ1N0YXRfVGFibGVDb3VudHMKIAogCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19m ZXRjaGVkOwogCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19oaXQ7CisKKwlQZ1N0YXRfQ291bnRl ciByZXZfYWxsX3Zpc2libGVfcGFnZXM7CisJUGdTdGF0X0NvdW50ZXIgcmV2X2FsbF9mcm96 ZW5fcGFnZXM7CiB9IFBnU3RhdF9UYWJsZUNvdW50czsKIAogLyogLS0tLS0tLS0tLQpAQCAt MjExLDcgKzMwNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMK ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFB NUJDQjcKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQjgKIAogdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMKIHsKQEAgLTQ1Myw2ICs1NDgsOSBA QCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIg dG90YWxfYXV0b3ZhY3V1bV90aW1lOwogCVBnU3RhdF9Db3VudGVyIHRvdGFsX2FuYWx5emVf dGltZTsKIAlQZ1N0YXRfQ291bnRlciB0b3RhbF9hdXRvYW5hbHl6ZV90aW1lOworCisJUGdT dGF0X0NvdW50ZXIgcmV2X2FsbF92aXNpYmxlX3BhZ2VzOworCVBnU3RhdF9Db3VudGVyIHJl dl9hbGxfZnJvemVuX3BhZ2VzOwogfSBQZ1N0YXRfU3RhdFRhYkVudHJ5OwogCiAvKiAtLS0t LS0KQEAgLTY2MCwxMCArNzU4LDExIEBAIGV4dGVybiB2b2lkIHBnc3RhdF91bmxpbmtfcmVs YXRpb24oUmVsYXRpb24gcmVsKTsKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF92YWN1 dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwKIAkJCQkJCQkJIFBnU3RhdF9Db3VudGVy IGxpdmV0dXBsZXMsIFBnU3RhdF9Db3VudGVyIGRlYWR0dXBsZXMsCi0JCQkJCQkJCSBUaW1l c3RhbXBUeiBzdGFydHRpbWUpOworCQkJCQkJCQkgVGltZXN0YW1wVHogc3RhcnR0aW1lLCBQ Z1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKnBhcmFtcyk7CiBleHRlcm4gdm9pZCBwZ3N0 YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkgIFBnU3RhdF9Db3Vu dGVyIGxpdmV0dXBsZXMsIFBnU3RhdF9Db3VudGVyIGRlYWR0dXBsZXMsCiAJCQkJCQkJCSAg Ym9vbCByZXNldGNvdW50ZXIsIFRpbWVzdGFtcFR6IHN0YXJ0dGltZSk7CitleHRlcm4gdm9p ZCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVk LCBFeHRWYWNSZXBvcnRUeXBlIG1fdHlwZSk7CiAKIC8qCiAgKiBJZiBzdGF0cyBhcmUgZW5h YmxlZCwgYnV0IHBlbmRpbmcgZGF0YSBoYXNuJ3QgYmVlbiBwcmVwYXJlZCB5ZXQsIGNhbGwK QEAgLTcxMSw2ICs4MTAsMTcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hbmFseXpl KFJlbGF0aW9uIHJlbCwKIAkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVs KSkJCQkJCQlcCiAJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3NfaGl0Kys7 CQkJCVwKIAl9IHdoaWxlICgwKQorLyogYWNjdW11bGF0ZSB1bmZyb3plbiBhbGwtdmlzaWJs ZSBhbmQgYWxsLWZyb3plbiBwYWdlcyAqLworI2RlZmluZSBwZ3N0YXRfY291bnRfdm1fcmV2 X2FsbF92aXNpYmxlKHJlbCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYg KHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+ cGdzdGF0X2luZm8tPmNvdW50cy5yZXZfYWxsX3Zpc2libGVfcGFnZXMrKzsJXAorCX0gd2hp bGUgKDApCisjZGVmaW5lIHBnc3RhdF9jb3VudF92bV9yZXZfYWxsX2Zyb3plbihyZWwpCQkJ CQkJXAorCWRvIHsJCQkJCQkJCQkJCQkJCQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50 X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3VudHMu cmV2X2FsbF9mcm96ZW5fcGFnZXMrKzsJXAorCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lk IHBnc3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVy IG4pOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bCwgYm9vbCBob3QsIGJvb2wgbmV3cGFnZSk7CkBAIC04MzgsNCArOTQ4LDkgQEAgZXh0ZXJu IFBHRExMSU1QT1JUIFBnU3RhdF9Db3VudGVyIHBnU3RhdFRyYW5zYWN0aW9uSWRsZVRpbWU7 CiAvKiB1cGRhdGVkIGJ5IHRoZSB0cmFmZmljIGNvcCBhbmQgaW4gZXJyZmluaXNoKCkgKi8K IGV4dGVybiBQR0RMTElNUE9SVCBTZXNzaW9uRW5kVHlwZSBwZ1N0YXRTZXNzaW9uRW5kQ2F1 c2U7CiAKKy8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gc2V0X3JlbF9w YXRobGlzdCgpICovCit0eXBlZGVmIHZvaWQgKCpzZXRfcmVwb3J0X3ZhY3V1bV9ob29rX3R5 cGUpIChPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLCBQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMgKnBhcmFtcyk7CitleHRlcm4gUEdETExJTVBPUlQgc2V0X3JlcG9ydF92YWN1dW1f aG9va190eXBlIHNldF9yZXBvcnRfdmFjdXVtX2hvb2s7CisKKwogI2VuZGlmCQkJCQkJCS8q IFBHU1RBVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmggYi9z cmMvaW5jbHVkZS91dGlscy9lbG9nLmgKaW5kZXggNjc1ZjRmNWY0NjkuLjM1NmRhZGQ2YjBh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvZWxvZy5oCkBAIC0yMzAsNiArMjMwLDcgQEAgZXh0ZXJuIGludAlnZXRlcnJj b2RlKHZvaWQpOwogZXh0ZXJuIGludAlnZXRlcnJwb3NpdGlvbih2b2lkKTsKIGV4dGVybiBp bnQJZ2V0aW50ZXJuYWxlcnJwb3NpdGlvbih2b2lkKTsKIAorZXh0ZXJuIGludAlnZXRlcnJl bGV2ZWwodm9pZCk7CiAKIC8qLS0tLS0tLS0tLQogICogT2xkLXN0eWxlIGVycm9yIHJlcG9y dGluZyBBUEk6IHRvIGJlIHVzZWQgaW4gdGhpcyB3YXk6CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CmluZGV4IDM1ZThhYWQ3NzAxLi40NzMxY2EyMTIxZSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4MzMsNyArMTgzMyw5IEBAIHBnX3N0 YXRfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRfZ2V0 X3RvdGFsX3ZhY3V1bV90aW1lKGMub2lkKSBBUyB0b3RhbF92YWN1dW1fdGltZSwKICAgICBw Z19zdGF0X2dldF90b3RhbF9hdXRvdmFjdXVtX3RpbWUoYy5vaWQpIEFTIHRvdGFsX2F1dG92 YWN1dW1fdGltZSwKICAgICBwZ19zdGF0X2dldF90b3RhbF9hbmFseXplX3RpbWUoYy5vaWQp IEFTIHRvdGFsX2FuYWx5emVfdGltZSwKLSAgICBwZ19zdGF0X2dldF90b3RhbF9hdXRvYW5h bHl6ZV90aW1lKGMub2lkKSBBUyB0b3RhbF9hdXRvYW5hbHl6ZV90aW1lCisgICAgcGdfc3Rh dF9nZXRfdG90YWxfYXV0b2FuYWx5emVfdGltZShjLm9pZCkgQVMgdG90YWxfYXV0b2FuYWx5 emVfdGltZSwKKyAgICBwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcyhjLm9pZCkg QVMgcmV2X2FsbF9mcm96ZW5fcGFnZXMsCisgICAgcGdfc3RhdF9nZXRfcmV2X2FsbF92aXNp YmxlX3BhZ2VzKGMub2lkKSBBUyByZXZfYWxsX3Zpc2libGVfcGFnZXMKICAgIEZST00gKChw Z19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19pbmRleCBpIE9OICgoYy5vaWQgPSBpLmlu ZHJlbGlkKSkpCiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiAoKG4ub2lkID0g Yy5yZWxuYW1lc3BhY2UpKSkKQEAgLTIyMzIsNyArMjIzNCw5IEBAIHBnX3N0YXRfc3lzX3Rh Ymxlc3wgU0VMRUNUIHJlbGlkLAogICAgIHRvdGFsX3ZhY3V1bV90aW1lLAogICAgIHRvdGFs X2F1dG92YWN1dW1fdGltZSwKICAgICB0b3RhbF9hbmFseXplX3RpbWUsCi0gICAgdG90YWxf YXV0b2FuYWx5emVfdGltZQorICAgIHRvdGFsX2F1dG9hbmFseXplX3RpbWUsCisgICAgcmV2 X2FsbF9mcm96ZW5fcGFnZXMsCisgICAgcmV2X2FsbF92aXNpYmxlX3BhZ2VzCiAgICBGUk9N IHBnX3N0YXRfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNjaGVtYW5hbWUgPSBBTlkgKEFSUkFZ WydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5hbWVdKSkgT1Ig KHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOwogcGdfc3RhdF91c2VyX2Z1bmN0 aW9uc3wgU0VMRUNUIHAub2lkIEFTIGZ1bmNpZCwKQEAgLTIyODQsNyArMjI4OCw5IEBAIHBn X3N0YXRfdXNlcl90YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICB0b3RhbF92YWN1dW1fdGlt ZSwKICAgICB0b3RhbF9hdXRvdmFjdXVtX3RpbWUsCiAgICAgdG90YWxfYW5hbHl6ZV90aW1l LAotICAgIHRvdGFsX2F1dG9hbmFseXplX3RpbWUKKyAgICB0b3RhbF9hdXRvYW5hbHl6ZV90 aW1lLAorICAgIHJldl9hbGxfZnJvemVuX3BhZ2VzLAorICAgIHJldl9hbGxfdmlzaWJsZV9w YWdlcwogICAgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1l IDw+IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1h Jzo6bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKIHBn X3N0YXRfd2FsfCBTRUxFQ1Qgd2FsX3JlY29yZHMsCi0tIAoyLjM0LjEKCg== --------------kHlD7chBUGN7diVaEI00tqIQ Content-Type: text/x-patch; charset=UTF-8; name="0001-Create-vacuum-extension-statistics.patch" Content-Disposition: attachment; filename="0001-Create-vacuum-extension-statistics.patch" Content-Transfer-Encoding: base64 RnJvbSA5YjRkZDJlODQ1Y2I4ZmRjOWMxY2VlMDlkYTg2NjVkYTJiY2NmZDQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCA0IFNlcCAyMDI1IDE4OjI0OjQ2ICswMzAwClN1Ympl Y3Q6IFtQQVRDSF0gQ3JlYXRlIHZhY3V1bSBleHRlbnNpb24gc3RhdGlzdGljcwoKLS0tCiBN YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjEgKwog Li4uL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQub3V0ICAgIHwgIDUzICsr CiBleHBlY3RlZC92YWN1dW1faW5kZXhfc3RhdGlzdGljcy5vdXQgICAgICAgICAgfCAxODMg KysrKysKIGV4cGVjdGVkL3ZhY3V1bV90YWJsZXNfYW5kX2RiX3N0YXRpc3RpY3Mub3V0ICB8 IDI5NiArKysrKysrKwogc3BlYy92YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJsZS1yZWFk LnNwZWMgIHwgMTczICsrKysrCiBzcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsICAg ICAgICAgICAgICAgfCAxMzggKysrKwogc3FsL3ZhY3V1bV90YWJsZXNfYW5kX2RiX3N0YXRp c3RpY3Muc3FsICAgICAgIHwgMjI0ICsrKysrKwogdmFjdXVtX3N0YXRpc3RpY3MtLTEuMC5z cWwgICAgICAgICAgICAgICAgICAgIHwgMTkxICsrKysrKwogdmFjdXVtX3N0YXRpc3RpY3Mu YyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjM2ICsrKysrKysrKysrKysrKysrKwog dmFjdXVtX3N0YXRpc3RpY3MuY29udHJvbCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsK IDEwIGZpbGVzIGNoYW5nZWQsIDE5MTkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IE1ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwZWN0ZWQvdmFjdXVtLWV4dGVu ZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBlY3Rl ZC92YWN1dW1faW5kZXhfc3RhdGlzdGljcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBl Y3RlZC92YWN1dW1fdGFibGVzX2FuZF9kYl9zdGF0aXN0aWNzLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNwZWMvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5zcGVjCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3FsL3ZhY3V1bV9pbmRleF9zdGF0aXN0aWNzLnNxbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNxbC92YWN1dW1fdGFibGVzX2FuZF9kYl9zdGF0aXN0aWNzLnNx bAogY3JlYXRlIG1vZGUgMTAwNjQ0IHZhY3V1bV9zdGF0aXN0aWNzLS0xLjAuc3FsCiBjcmVh dGUgbW9kZSAxMDA2NDQgdmFjdXVtX3N0YXRpc3RpY3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHZhY3V1bV9zdGF0aXN0aWNzLmNvbnRyb2wKCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01h a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZDg3NWUKLS0t IC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZQpAQCAtMCwwICsxLDIxIEBACitFWFRFTlNJT04g PSB2YWN1dW1fc3RhdGlzdGljcworRVhUVkVSU0lPTiA9IDEuMAorTU9EVUxFX2JpZyA9IHZh Y3V1bV9zdGF0aXN0aWNzCitQR0ZJTEVERVNDID0gIlZhY3V1bSBTdGF0aXN0aWNzIC0gZXh0 ZW5zaW9uIGZvciBzdG9yYWdlIHN0YXRpc3RpY3Mgb2YgdmFjdXVtIHdvcmtsb2FkIgorT0JK UyA9IHZhY3V1bV9zdGF0aXN0aWNzLm8KKworREFUQSA9IHZhY3V1bV9zdGF0aXN0aWNzLS0x LjAuc3FsCisKK1JFR1JFU1MgPSB2YWN1dW1faW5kZXhfc3RhdGlzdGljcyB2YWN1dW1fdGFi bGVzX2FuZF9kYl9zdGF0aXN0aWNzCitJU09MQVRJT04gPSB2YWN1dW0tZXh0ZW5kaW5nLWlu LXJlcGV0YWJsZS1yZWFkCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25m aWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBH WFMpCitlbHNlCitzdWJkaXIgPSBjb250cmliL3ZhY3V1bV9zdGF0aXN0aWNzCit0b3BfYnVp bGRkaXIgPSAuLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsK K2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZXhwZWN0 ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQgYi9leHBlY3RlZC92 YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJsZS1yZWFkLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42ZDk2MDQyCi0tLSAvZGV2L251bGwKKysrIGIvZXhwZWN0 ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKQEAgLTAsMCArMSw1 MyBAQAordW51c2VkIHN0ZXAgbmFtZTogczJfZGVsZXRlCitQYXJzZWQgdGVzdCBzcGVjIHdp dGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJfaW5zZXJ0IHMyX3By aW50X3ZhY3V1bV9zdGF0c190YWJsZSBzMV9iZWdpbl9yZXBlYXRhYmxlX3JlYWQgczJfdXBk YXRlIHMyX2luc2VydF9pbnRlcnJ1cHQgczJfdmFjdXVtIHMyX3ByaW50X3ZhY3V1bV9zdGF0 c190YWJsZSBzMV9jb21taXQgczJfY2hlY2twb2ludCBzMl92YWN1dW0gczJfcHJpbnRfdmFj dXVtX3N0YXRzX3RhYmxlCitzdGVwIHMyX2luc2VydDogSU5TRVJUIElOVE8gdGVzdF92YWN1 dW1fc3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFsLCBpdmFsJTEwIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsKK3N0ZXAgczJfcHJpbnRfdmFjdXVt X3N0YXRzX3RhYmxlOiAKKyAgICBTRUxFQ1QKKyAgICB2dC5yZWxuYW1lLCB2dC50dXBsZXNf ZGVsZXRlZCwgdnQucmVjZW50bHlfZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3R1cGxl cywgdnQubWlzc2VkX2RlYWRfcGFnZXMsIHZ0LnR1cGxlc19mcm96ZW4KKyAgICBGUk9NIHBn X3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5h bWUgPSAndGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lk OworCityZWxuYW1lICAgICAgICAgICAgICAgICAgIHx0dXBsZXNfZGVsZXRlZHxyZWNlbnRs eV9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRfcGFnZXN8dHVw bGVzX2Zyb3plbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KK3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9ufCAgICAgICAg ICAgICAwfCAgICAgICAgICAgICAgICAgICAwfCAgICAgICAgICAgICAgICAgMHwgICAgICAg ICAgICAgICAgMHwgICAgICAgICAgICAwCisoMSByb3cpCisKK3N0ZXAgczFfYmVnaW5fcmVw ZWF0YWJsZV9yZWFkOiAKKyAgQkVHSU4gdHJhbnNhY3Rpb24gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKKyAgc2VsZWN0IGNvdW50KGl2YWwpIGZyb20gdGVzdF92YWN1dW1f c3RhdF9pc29sYXRpb24gd2hlcmUgaWQ+OTAwOworCitjb3VudAorLS0tLS0KKyAgMTAwCiso MSByb3cpCisKK3N0ZXAgczJfdXBkYXRlOiBVUERBVEUgdGVzdF92YWN1dW1fc3RhdF9pc29s YXRpb24gU0VUIGl2YWwgPSBpdmFsICsgMiB3aGVyZSBpZCA+IDkwMDsKK3N0ZXAgczJfaW5z ZXJ0X2ludGVycnVwdDogSU5TRVJUIElOVE8gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24g dmFsdWVzICgxLDEpOworc3RlcCBzMl92YWN1dW06IFZBQ1VVTSB0ZXN0X3ZhY3V1bV9zdGF0 X2lzb2xhdGlvbjsKK3N0ZXAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlOiAKKyAgICBT RUxFQ1QKKyAgICB2dC5yZWxuYW1lLCB2dC50dXBsZXNfZGVsZXRlZCwgdnQucmVjZW50bHlf ZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRfcGFn ZXMsIHZ0LnR1cGxlc19mcm96ZW4KKyAgICBGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2 dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1fc3Rh dF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lICAgICAgICAg ICAgICAgICAgIHx0dXBsZXNfZGVsZXRlZHxyZWNlbnRseV9kZWFkX3R1cGxlc3xtaXNzZWRf ZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRfcGFnZXN8dHVwbGVzX2Zyb3plbgorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3Rl c3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9ufCAgICAgICAgICAgICAwfCAgICAgICAgICAgICAg ICAgNjAwfCAgICAgICAgICAgICAgICAgMHwgICAgICAgICAgICAgICAgMHwgICAgICAgICAg ICAwCisoMSByb3cpCisKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2NoZWNr cG9pbnQ6IENIRUNLUE9JTlQ7CitzdGVwIHMyX3ZhY3V1bTogVkFDVVVNIHRlc3RfdmFjdXVt X3N0YXRfaXNvbGF0aW9uOworc3RlcCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6IAor ICAgIFNFTEVDVAorICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5yZWNl bnRseV9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRfdHVwbGVzLCB2dC5taXNzZWRfZGVh ZF9wYWdlcywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZST00gcGdfc3RhdF92YWN1dW1fdGFi bGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd0ZXN0X3ZhY3V1 bV9zdGF0X2lzb2xhdGlvbicgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5hbWUgICAg ICAgICAgICAgICAgICAgfHR1cGxlc19kZWxldGVkfHJlY2VudGx5X2RlYWRfdHVwbGVzfG1p c3NlZF9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF9wYWdlc3x0dXBsZXNfZnJvemVuCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQordGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb258ICAgICAgICAgICAzMDB8ICAgICAgICAg ICAgICAgICA2MDB8ICAgICAgICAgICAgICAgICAwfCAgICAgICAgICAgICAgICAwfCAgICAg ICAgICAzMDMKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvZXhwZWN0ZWQvdmFjdXVtX2luZGV4 X3N0YXRpc3RpY3Mub3V0IGIvZXhwZWN0ZWQvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Mub3V0 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTRhNTMKLS0tIC9kZXYv bnVsbAorKysgYi9leHBlY3RlZC92YWN1dW1faW5kZXhfc3RhdGlzdGljcy5vdXQKQEAgLTAs MCArMSwxODMgQEAKKy0tCistLSBUZXN0IGN1bXVsYXRpdmUgdmFjdXVtIHN0YXRzIHN5c3Rl bQorLS0KKy0tIENoZWNrIHRoZSB3YWxsIHN0YXRpc3RpY3MgY29sbGVjdGVkIGR1cmluZyB2 YWN1dW0gb3BlcmF0aW9uOgorLS0gbnVtYmVyIG9mIGZyb3plbiBhbmQgdmlzaWJsZSBwYWdl cyBzZXQgYnkgdmFjdXVtOworLS0gbnVtYmVyIG9mIGZyb3plbiBhbmQgdmlzaWJsZSBwYWdl cyByZW1vdmVkIGJ5IGJhY2tlbmQuCistLSBTdGF0aXN0aWMgd2FsX2ZwaSBpcyBub3QgZGlz cGxheWVkIGluIHRoaXMgdGVzdCBiZWNhdXNlIGl0cyBiZWhhdmlvciBpcyB1bnN0YWJsZS4K Ky0tCistLSBjb25kaXRpbyBzaW5lIHF1YSBub24KK1NIT1cgdHJhY2tfY291bnRzOyAgLS0g bXVzdCBiZSBvbgorIHRyYWNrX2NvdW50cyAKKy0tLS0tLS0tLS0tLS0tCisgb24KKygxIHJv dykKKworXHNldCBzYW1wbGVfc2l6ZSAxMDAwMAorLS0gbm90IGVuYWJsZWQgYnkgZGVmYXVs dCwgYnV0IHdlIHdhbnQgdG8gdGVzdCBpdC4uLgorU0VUIHRyYWNrX2Z1bmN0aW9ucyBUTyAn YWxsJzsKK1NIT1cgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3M7ICAtLSBtdXN0IGJlIG9mZgor IHRyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IG9mZgorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElOVE8g dmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBh cyB4OworQU5BTFlaRSB2ZXN0YXQ7CitERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCAlIDIg PSAwOworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0VfTElNSVQgMTI4KSB2ZXN0 YXQ7CistLSBNdXN0IGJlIGVtcHR5LgorU0VMRUNUICoKK0ZST00gcGdfc3RhdF92YWN1dW1f aW5kZXhlcyB2dAorV0hFUkUgdnQuaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdCc7CisgcmVsaWQg fCBpbmRleHJlbGlkIHwgc2NoZW1hbmFtZSB8IHJlbG5hbWUgfCBpbmRleHJlbG5hbWUgfCB0 b3RhbF9ibGtzX3JlYWQgfCB0b3RhbF9ibGtzX2hpdCB8IHRvdGFsX2Jsa3NfZGlydGllZCB8 IHRvdGFsX2Jsa3Nfd3JpdHRlbiB8IHJlbF9ibGtzX3JlYWQgfCByZWxfYmxrc19oaXQgfCBw YWdlc19kZWxldGVkIHwgdHVwbGVzX2RlbGV0ZWQgfCB3YWxfcmVjb3JkcyB8IHdhbF9mcGkg fCB3YWxfYnl0ZXMgfCBibGtfcmVhZF90aW1lIHwgYmxrX3dyaXRlX3RpbWUgfCBkZWxheV90 aW1lIHwgdG90YWxfdGltZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorKDAgcm93cykK KworUkVTRVQgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3M7CitEUk9QIFRBQkxFIHZlc3RhdCBD QVNDQURFOworU0VUIHRyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzIFRPICdvbic7CistLSBlbnN1 cmUgcGVuZGluZyBzdGF0cyBhcmUgZmx1c2hlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1xzZXQgc2FtcGxlX3NpemUgMTAwMDAKK1NF VCB2YWN1dW1fZnJlZXplX21pbl9hZ2UgPSAwOworU0VUIHZhY3V1bV9mcmVlemVfdGFibGVf YWdlID0gMDsKKy0tU0VUIHN0YXRzX2ZldGNoX2NvbnNpc3RlbmN5ID0gc25hcHNob3Q7CitD UkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCBwcmltYXJ5IGtleSkgV0lUSCAoYXV0b3ZhY3V1 bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElOVE8gdmVzdGF0 IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBhcyB4Owor QU5BTFlaRSB2ZXN0YXQ7CitTRUxFQ1Qgb2lkIEFTIGlvaWQgZnJvbSBwZ19jbGFzcyB3aGVy ZSByZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorREVMRVRFIEZST00gdmVzdGF0IFdI RVJFIHggJSAyID0gMDsKKy0tIEJlZm9yZSB0aGUgZmlyc3QgdmFjdXVtIGV4ZWN1dGlvbiBl eHRlbmRlZCBzdGF0cyB2aWV3IGlzIGVtcHR5LgorU0VMRUNUIHZ0LmluZGV4cmVsbmFtZSxy ZWxwYWdlcyxwYWdlc19kZWxldGVkLHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0YXRfdmFj dXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LmluZGV4cmVsbmFtZSA9ICd2 ZXN0YXRfcGtleScgQU5EIHZ0LmluZGV4cmVsaWQgPSBjLm9pZDsKKyBpbmRleHJlbG5hbWUg fCByZWxwYWdlcyB8IHBhZ2VzX2RlbGV0ZWQgfCB0dXBsZXNfZGVsZXRlZCAKKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB2 ZXN0YXRfcGtleSAgfCAgICAgICAzMCB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAg MAorKDEgcm93KQorCitTRUxFQ1QgcmVscGFnZXMgQVMgaXJwCitGUk9NIHBnX2NsYXNzIGMK K1dIRVJFIHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CitWQUNVVU0gKFBBUkFMTEVM IDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgsIElOREVYX0NMRUFOVVAgT04pIHZlc3RhdDsK Ky0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNL UE9JTlQ7CistLSBUaGUgdGFibGUgYW5kIGluZGV4IGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0 aWNzIHNob3VsZCBzaG93IHVzIHRoYXQKKy0tIHZhY3V1bSBmcm96ZWQgcGFnZXMgYW5kIGNs ZWFuIHVwIHBhZ2VzLCBidXQgcGFnZXNfcmVtb3ZlZCBzdGF5ZWQgdGhlIHNhbWUKKy0tIGJl Y2F1c2Ugb2Ygbm90IGZ1bGwgdGFibGUgaGF2ZSBjbGVhbmVkIHVwCitTRUxFQ1QgdnQuaW5k ZXhyZWxuYW1lLHJlbHBhZ2VzLTppcnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX2RlbGV0ZWQg PSAwIEFTIHBhZ2VzX2RlbGV0ZWQsdHVwbGVzX2RlbGV0ZWQgPiAwIEFTIHR1cGxlc19kZWxl dGVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJF IHZ0LmluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgQU5EIHZ0LmluZGV4cmVsaWQgPSBj Lm9pZDsKKyBpbmRleHJlbG5hbWUgfCByZWxwYWdlcyB8IHBhZ2VzX2RlbGV0ZWQgfCB0dXBs ZXNfZGVsZXRlZCAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0KKyB2ZXN0YXRfcGtleSAgfCB0ICAgICAgICB8IHQgICAgICAg ICAgICAgfCB0CisoMSByb3cpCisKK1NFTEVDVCB2dC5pbmRleHJlbG5hbWUscmVscGFnZXMg QVMgaXJwLHBhZ2VzX2RlbGV0ZWQgQVMgaXBkLHR1cGxlc19kZWxldGVkIEFTIGl0ZAorRlJP TSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5pbmRl eHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5pbmRleHJlbGlkID0gYy5vaWQgXGdz ZXQKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9y ZWNvcmRzIEFTIGl3cix3YWxfYnl0ZXMgQVMgaXdiLHdhbF9mcGkgQVMgaWZwaSBGUk9NIHBn X3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5 JyBcZ3NldAorLS0gTG9vayBpbnRvIFdBTCByZWNvcmRzIGRlbHRhcy4KK1NFTEVDVCB3YWxf cmVjb3JkcyA+IDAgQVMgZGlXUiwgd2FsX2J5dGVzID4gMCBBUyBkaVdCCitGUk9NIHBnX3N0 YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JzsK KyBkaXdyIHwgZGl3YiAKKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdAorKDEgcm93KQorCitE RUxFVEUgRlJPTSB2ZXN0YXQ7OworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0Vf TElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9OKSB2ZXN0YXQ7CistLSBpdCBpcyBuZWNlc3Nh cnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5UOworLS0gcGFnZXNf cmVtb3ZlZCBtdXN0IGJlIGluY3JlYXNlZAorU0VMRUNUIHZ0LmluZGV4cmVsbmFtZSxyZWxw YWdlcy06aXJwID0gMCBBUyByZWxwYWdlcyxwYWdlc19kZWxldGVkLTppcGQgPiAwIEFTIHBh Z2VzX2RlbGV0ZWQsdHVwbGVzX2RlbGV0ZWQtOml0ZCA+IDAgQVMgdHVwbGVzX2RlbGV0ZWQK K0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQu aW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5kZXhyZWxpZCA9IGMub2lk OworIGluZGV4cmVsbmFtZSB8IHJlbHBhZ2VzIHwgcGFnZXNfZGVsZXRlZCB8IHR1cGxlc19k ZWxldGVkIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLQorIHZlc3RhdF9wa2V5ICB8IHQgICAgICAgIHwgdCAgICAgICAgICAg ICB8IHQKKygxIHJvdykKKworU0VMRUNUIHZ0LmluZGV4cmVsbmFtZSxyZWxwYWdlcyBBUyBp cnAscGFnZXNfZGVsZXRlZCBBUyBpcGQsdHVwbGVzX2RlbGV0ZWQgQVMgaXRkCitGUk9NIHBn X3N0YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LmluZGV4cmVs bmFtZSA9ICd2ZXN0YXRfcGtleScgQU5EIHZ0LmluZGV4cmVsaWQgPSBjLm9pZCBcZ3NldAor LS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29y ZHMtOml3ciBBUyBkaXdyLCB3YWxfYnl0ZXMtOml3YiBBUyBkaXdiLCB3YWxfZnBpLTppZnBp IEFTIGRpZnBpCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgaW5kZXhyZWxu YW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorLS0gV0FMIGFkdmFuY2Ugc2hvdWxkIGJlIGRl dGVjdGVkLgorU0VMRUNUIDpkaXdyID4gMCBBUyBkaVdSLCA6ZGl3YiA+IDAgQVMgZGlXQjsK KyBkaXdyIHwgZGl3YiAKKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdAorKDEgcm93KQorCist LSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJsZXMKK1NFTEVDVCB3YWxfcmVjb3Jk cyBBUyBpd3Isd2FsX2J5dGVzIEFTIGl3Yix3YWxfZnBpIEFTIGlmcGkgRlJPTSBwZ19zdGF0 X3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgXGdz ZXQKK0lOU0VSVCBJTlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDpzYW1wbGVfc2l6ZSkgYXMgeDsKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9 IDA7CistLSBWQUNVVU0gRlVMTCBkb2Vzbid0IHJlcG9ydCB0byBzdGF0IGNvbGxlY3Rvci4g U28sIG5vIGFueSBhZHZhbmNlbWVudHMgb2Ygc3RhdGlzdGljcworLS0gYXJlIGRldGVjdGVk IGhlcmUuCitWQUNVVU0gRlVMTCB2ZXN0YXQ7CistLSBJdCBpcyBuZWNlc3NhcnkgdG8gY2hl Y2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5UOworLS0gU3RvcmUgV0FMIGFkdmFu Y2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3ciBBUyBkaXdyMiwg d2FsX2J5dGVzLTppd2IgQVMgZGl3YjIsIHdhbF9mcGktOmlmcGkgQVMgZGlmcGkyCitGUk9N IHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9w a2V5JyBcZ3NldAorLS0gV0FMIGFuZCBvdGhlciBzdGF0aXN0aWNzIGFkdmFuY2Ugc2hvdWxk IG5vdCBiZSBkZXRlY3RlZC4KK1NFTEVDVCA6ZGl3cjI9MCBBUyBkaVdSLCA6ZGlmcGkyPTAg QVMgaUZQSSwgOmRpd2IyPTAgQVMgZGlXQjsKKyBkaXdyIHwgaWZwaSB8IGRpd2IgCistLS0t LS0rLS0tLS0tKy0tLS0tLQorIHQgICAgfCB0ICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1Qg dnQuaW5kZXhyZWxuYW1lLHJlbHBhZ2VzLTppcnAgPCAwIEFTIHJlbHBhZ2VzLHBhZ2VzX2Rl bGV0ZWQtOmlwZCA9IDAgQVMgcGFnZXNfZGVsZXRlZCx0dXBsZXNfZGVsZXRlZC06aXRkID0g MCBBUyB0dXBsZXNfZGVsZXRlZAorRlJPTSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBw Z19jbGFzcyBjCitXSEVSRSB2dC5pbmRleHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2 dC5pbmRleHJlbGlkID0gYy5vaWQ7CisgaW5kZXhyZWxuYW1lIHwgcmVscGFnZXMgfCBwYWdl c19kZWxldGVkIHwgdHVwbGVzX2RlbGV0ZWQgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdmVzdGF0X3BrZXkgIHwgdCAg ICAgICAgfCB0ICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1QgdnQuaW5kZXhy ZWxuYW1lLHJlbHBhZ2VzIEFTIGlycCxwYWdlc19kZWxldGVkIEFTIGlwZCx0dXBsZXNfZGVs ZXRlZCBBUyBpdGQKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3Mg YworV0hFUkUgdnQuaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5kZXhy ZWxpZCA9IGMub2lkIFxnc2V0CistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJs ZXMKK1NFTEVDVCB3YWxfcmVjb3JkcyBBUyBpd3Isd2FsX2J5dGVzIEFTIGl3Yix3YWxfZnBp IEFTIGlmcGkgRlJPTSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4cmVsbmFt ZSA9ICd2ZXN0YXRfcGtleScgXGdzZXQKK0RFTEVURSBGUk9NIHZlc3RhdDsKK1RSVU5DQVRF IHZlc3RhdDsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwg SU5ERVhfQ0xFQU5VUCBPTikgdmVzdGF0OworLS0gaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNr IHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKy0tIFN0b3JlIFdBTCBhZHZhbmNl cyBpbnRvIHZhcmlhYmxlcyBhZnRlciByZW1vdmluZyBhbGwgdHVwbGVzIGZyb20gdGhlIHRh YmxlCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3ciBBUyBkaXdyMywgd2FsX2J5dGVzLTppd2Ig QVMgZGl3YjMsIHdhbF9mcGktOmlmcGkgQVMgZGlmcGkzCitGUk9NIHBnX3N0YXRfdmFjdXVt X2luZGV4ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorLS1U aGVyZSBhcmUgbm90aGluZyBjaGFuZ2VkCitTRUxFQ1QgOmRpd3IzPTAgQVMgZGlXUiwgOmRp ZnBpMz0wIEFTIGlGUEksIDpkaXdiMz0wIEFTIGRpV0I7CisgZGl3ciB8IGlmcGkgfCBkaXdi IAorLS0tLS0tKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdCAgICB8IHQKKygxIHJvdykKKwor LS0KKy0tIE5vdywgdGhlIHRhYmxlIGFuZCBpbmRleCBpcyBjb21wcmVzc2VkIGludG8gemVy byBudW1iZXIgb2YgcGFnZXMuIENoZWNrIGl0CistLSBpbiB2YWN1dW0gZXh0ZW5kZWQgc3Rh dGlzdGljcy4KKy0tIFRoZSBwYWdlc19mcm96ZW4sIHBhZ2VzX3NjYW5uZWQgdmFsdWVzIHNo b3VsZG4ndCBiZSBjaGFuZ2VkCistLQorU0VMRUNUIHZ0LmluZGV4cmVsbmFtZSxyZWxwYWdl cy06aXJwID0gMCBBUyByZWxwYWdlcyxwYWdlc19kZWxldGVkLTppcGQgPSAwIEFTIHBhZ2Vz X2RlbGV0ZWQsdHVwbGVzX2RlbGV0ZWQtOml0ZCA9IDAgQVMgdHVwbGVzX2RlbGV0ZWQKK0ZS T00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQuaW5k ZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5kZXhyZWxpZCA9IGMub2lkOwor IGluZGV4cmVsbmFtZSB8IHJlbHBhZ2VzIHwgcGFnZXNfZGVsZXRlZCB8IHR1cGxlc19kZWxl dGVkIAorLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLQorIHZlc3RhdF9wa2V5ICB8IGYgICAgICAgIHwgdCAgICAgICAgICAgICB8 IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB2ZXN0YXQ7CitSRVNFVCB0cmFja192YWN1dW1f c3RhdGlzdGljczsKZGlmZiAtLWdpdCBhL2V4cGVjdGVkL3ZhY3V1bV90YWJsZXNfYW5kX2Ri X3N0YXRpc3RpY3Mub3V0IGIvZXhwZWN0ZWQvdmFjdXVtX3RhYmxlc19hbmRfZGJfc3RhdGlz dGljcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMwMGU3Ygot LS0gL2Rldi9udWxsCisrKyBiL2V4cGVjdGVkL3ZhY3V1bV90YWJsZXNfYW5kX2RiX3N0YXRp c3RpY3Mub3V0CkBAIC0wLDAgKzEsMjk2IEBACistLQorLS0gVGVzdCBjdW11bGF0aXZlIHZh Y3V1bSBzdGF0cyBzeXN0ZW0KKy0tCistLSBDaGVjayB0aGUgd2FsbCBzdGF0aXN0aWNzIGNv bGxlY3RlZCBkdXJpbmcgdmFjdXVtIG9wZXJhdGlvbjoKKy0tIG51bWJlciBvZiBmcm96ZW4g YW5kIHZpc2libGUgcGFnZXMgc2V0IGJ5IHZhY3V1bTsKKy0tIG51bWJlciBvZiBmcm96ZW4g YW5kIHZpc2libGUgcGFnZXMgcmVtb3ZlZCBieSBiYWNrZW5kLgorLS0gU3RhdGlzdGljIHdh bF9mcGkgaXMgbm90IGRpc3BsYXllZCBpbiB0aGlzIHRlc3QgYmVjYXVzZSBpdHMgYmVoYXZp b3IgaXMgdW5zdGFibGUuCistLQorU0hPVyB0cmFja19jb3VudHM7ICAtLSBtdXN0IGJlIG9u CisgdHJhY2tfY291bnRzIAorLS0tLS0tLS0tLS0tLS0KKyBvbgorKDEgcm93KQorCitcc2V0 IHNhbXBsZV9zaXplIDEwMDAwCistLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgd2Ug d2FudCB0byB0ZXN0IGl0Li4uCitTRVQgdHJhY2tfZnVuY3Rpb25zIFRPICdhbGwnOworU0hP VyB0cmFja192YWN1dW1fc3RhdGlzdGljczsgIC0tIG11c3QgYmUgb2ZmCisgdHJhY2tfdmFj dXVtX3N0YXRpc3RpY3MgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgb2ZmCisoMSBy b3cpCisKK0NSRUFURSBUQUJMRSB2ZXN0YXQgKHggaW50KSBXSVRIIChhdXRvdmFjdXVtX2Vu YWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSAxMCk7CitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VM RUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6c2FtcGxlX3NpemUpIGFzIHg7CitBTkFM WVpFIHZlc3RhdDsKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CitWQUNV VU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgpIHZlc3RhdDsKKy0tIE11 c3QgYmUgZW1wdHkuCitTRUxFQ1QgcmVsbmFtZSx0b3RhbF9ibGtzX3JlYWQsIHRvdGFsX2Js a3NfaGl0LCB0b3RhbF9ibGtzX2RpcnRpZWQsIHRvdGFsX2Jsa3Nfd3JpdHRlbixyZWxfYmxr c19yZWFkLCByZWxfYmxrc19oaXQsCitwYWdlc19zY2FubmVkLCBwYWdlc19yZW1vdmVkLCB2 bV9uZXdfZnJvemVuX3BhZ2VzLCB2bV9uZXdfdmlzaWJsZV9wYWdlcywgdm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzLCBtaXNzZWRfZGVhZF9wYWdlcywKK3R1cGxlc19kZWxldGVkLCB0 dXBsZXNfZnJvemVuLCByZWNlbnRseV9kZWFkX3R1cGxlcywgbWlzc2VkX2RlYWRfdHVwbGVz LCBpbmRleF92YWN1dW1fY291bnQsCit3YWxfcmVjb3Jkcywgd2FsX2ZwaSwgd2FsX2J5dGVz LCBibGtfcmVhZF90aW1lLCBibGtfd3JpdGVfdGltZSxkZWxheV90aW1lLCB0b3RhbF90aW1l CitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dAorV0hFUkUgdnQucmVsbmFtZSA9ICd2 ZXN0YXQnOworIHJlbG5hbWUgfCB0b3RhbF9ibGtzX3JlYWQgfCB0b3RhbF9ibGtzX2hpdCB8 IHRvdGFsX2Jsa3NfZGlydGllZCB8IHRvdGFsX2Jsa3Nfd3JpdHRlbiB8IHJlbF9ibGtzX3Jl YWQgfCByZWxfYmxrc19oaXQgfCBwYWdlc19zY2FubmVkIHwgcGFnZXNfcmVtb3ZlZCB8IHZt X25ld19mcm96ZW5fcGFnZXMgfCB2bV9uZXdfdmlzaWJsZV9wYWdlcyB8IHZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcyB8IG1pc3NlZF9kZWFkX3BhZ2VzIHwgdHVwbGVzX2RlbGV0ZWQg fCB0dXBsZXNfZnJvemVuIHwgcmVjZW50bHlfZGVhZF90dXBsZXMgfCBtaXNzZWRfZGVhZF90 dXBsZXMgfCBpbmRleF92YWN1dW1fY291bnQgfCB3YWxfcmVjb3JkcyB8IHdhbF9mcGkgfCB3 YWxfYnl0ZXMgfCBibGtfcmVhZF90aW1lIHwgYmxrX3dyaXRlX3RpbWUgfCBkZWxheV90aW1l IHwgdG90YWxfdGltZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgdmVzdGF0ICB8ICAgICAgICAgICAgICAgMCB8ICAg ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAw IHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgMCB8ICAgICAgICAgICAgIDAgfCAgICAg ICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgICAw IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgIDAgfCAg ICAgICAgICAgICAgMCB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAgMCB8 ICAgICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAw IHwgICAgICAgMCB8ICAgICAgICAgMCB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAg MCB8ICAgICAgICAgIDAgfCAgICAgICAgICAwCisoMSByb3cpCisKK1JFU0VUIHRyYWNrX3Zh Y3V1bV9zdGF0aXN0aWNzOworRFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsKK0NSRUFURSBE QVRBQkFTRSByZWdyZXNzaW9uX3N0YXRpc3RpY192YWN1dW1fZGI7CitDUkVBVEUgREFUQUJB U0UgcmVncmVzc2lvbl9zdGF0aXN0aWNfdmFjdXVtX2RiMTsKK1xjIHJlZ3Jlc3Npb25fc3Rh dGlzdGljX3ZhY3V1bV9kYjsKK1NFVCB0cmFja192YWN1dW1fc3RhdGlzdGljcyBUTyBvbjsK Ky0tIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCB3ZSB3YW50IHRvIHRlc3QgaXQuLi4K K1NFVCB0cmFja19mdW5jdGlvbnMgVE8gJ2FsbCc7CistLSBlbnN1cmUgcGVuZGluZyBzdGF0 cyBhcmUgZmx1c2hlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKy0tU0VUIHN0YXRzX2ZldGNoX2NvbnNpc3RlbmN5ID0gc25hcHNob3Q7 CitDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5BTFlaRSB2 ZXN0YXQ7CitTRUxFQ1Qgb2lkIEFTIHJvaWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1l ID0gJ3Zlc3RhdCcgXGdzZXQKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7 CistLSBCZWZvcmUgdGhlIGZpcnN0IHZhY3V1bSBleGVjdXRpb24gZXh0ZW5kZWQgc3RhdHMg dmlldyBpcyBlbXB0eS4KK1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMs dHVwbGVzX2RlbGV0ZWQscmVscGFnZXMscGFnZXNfc2Nhbm5lZCxwYWdlc19yZW1vdmVkCitG Uk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVs bmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkOworIHJlbG5hbWUgfCB2bV9u ZXdfZnJvemVuX3BhZ2VzIHwgdHVwbGVzX2RlbGV0ZWQgfCByZWxwYWdlcyB8IHBhZ2VzX3Nj YW5uZWQgfCBwYWdlc19yZW1vdmVkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorIHZlc3RhdCAgfCAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAg IDAgfCAgICAgIDQ1NSB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAwCisoMSByb3cp CisKK1NFTEVDVCByZWxwYWdlcyBBUyBycAorRlJPTSBwZ19jbGFzcyBjCitXSEVSRSByZWxu YW1lID0gJ3Zlc3RhdCcgXGdzZXQKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdF X0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5VUCBPRkYpIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vz c2FyeSB0byBjaGVjayB0aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CistLSBUaGUg dGFibGUgYW5kIGluZGV4IGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHNob3VsZCBzaG93 IHVzIHRoYXQKKy0tIHZhY3V1bSBmcm96ZWQgcGFnZXMgYW5kIGNsZWFuIHVwIHBhZ2VzLCBi dXQgcGFnZXNfcmVtb3ZlZCBzdGF5ZWQgdGhlIHNhbWUKKy0tIGJlY2F1c2Ugb2Ygbm90IGZ1 bGwgdGFibGUgaGF2ZSBjbGVhbmVkIHVwCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdfZnJv emVuX3BhZ2VzID4gMCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkID4g MCBBUyB0dXBsZXNfZGVsZXRlZCxyZWxwYWdlcy06cnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2Vz X3NjYW5uZWQgPiAwIEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZCA9IDAgQVMgcGFn ZXNfcmVtb3ZlZAorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMK K1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKyBy ZWxuYW1lIHwgdm1fbmV3X2Zyb3plbl9wYWdlcyB8IHR1cGxlc19kZWxldGVkIHwgcmVscGFn ZXMgfCBwYWdlc19zY2FubmVkIHwgcGFnZXNfcmVtb3ZlZCAKKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0KKyB2ZXN0YXQgIHwgZiAgICAgICAgICAgICAgICAgICB8 IHQgICAgICAgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdAorKDEgcm93 KQorCitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdlcyBBUyBmcCx0dXBsZXNfZGVsZXRlZCBB UyB0ZCxyZWxwYWdlcyBBUyBycCwgcGFnZXNfc2Nhbm5lZCBBUyBwcywgcGFnZXNfcmVtb3Zl ZCBBUyBwcgorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKK1dI RVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQgdnQucmVsaWQgPSBjLm9pZCBcZ3NldAor LS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29y ZHMgQVMgaHdyLHdhbF9ieXRlcyBBUyBod2Isd2FsX2ZwaSBBUyBoZnBpIEZST00gcGdfc3Rh dF92YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0JyBcZ3NldAorLS0gTG9v ayBpbnRvIFdBTCByZWNvcmRzIGRlbHRhcy4KK1NFTEVDVCB3YWxfcmVjb3JkcyA+IDAgQVMg ZFdSLCB3YWxfYnl0ZXMgPiAwIEFTIGRXQgorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMg V0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnOworIGR3ciB8IGR3YiAKKy0tLS0tKy0tLS0tCisg dCAgIHwgdAorKDEgcm93KQorCitERUxFVEUgRlJPTSB2ZXN0YXQ7OworVkFDVVVNIChQQVJB TExFTCAwLCBCVUZGRVJfVVNBR0VfTElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9GRikgdmVz dGF0OworLS0gaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcwor Q0hFQ0tQT0lOVDsKKy0tIHBhZ2VzX3JlbW92ZWQgbXVzdCBiZSBpbmNyZWFzZWQKK1NFTEVD VCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMtOmZwID4gMCBBUyB2bV9uZXdfZnJv emVuX3BhZ2VzLHR1cGxlc19kZWxldGVkLTp0ZCA+IDAgQVMgdHVwbGVzX2RlbGV0ZWQscmVs cGFnZXMgLTpycCA9IDAgQVMgcmVscGFnZXMscGFnZXNfc2Nhbm5lZC06cHMgPiAwIEFTIHBh Z2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZC06cHIgPiAwIEFTIHBhZ2VzX3JlbW92ZWQKK0ZS T00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxu YW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7CisgcmVsbmFtZSB8IHZtX25l d19mcm96ZW5fcGFnZXMgfCB0dXBsZXNfZGVsZXRlZCB8IHJlbHBhZ2VzIHwgcGFnZXNfc2Nh bm5lZCB8IHBhZ2VzX3JlbW92ZWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgdmVzdGF0ICB8IGYgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIHZt X25ld19mcm96ZW5fcGFnZXMgQVMgZnAsdHVwbGVzX2RlbGV0ZWQgQVMgdGQscmVscGFnZXMg QVMgcnAsIHBhZ2VzX3NjYW5uZWQgQVMgcHMsIHBhZ2VzX3JlbW92ZWQgQVMgcHIKK0ZST00g cGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1l ID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQgXGdzZXQKKy0tIFN0b3JlIFdBTCBh ZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzLTpod3IgQVMgZHdy LCB3YWxfYnl0ZXMtOmh3YiBBUyBkd2IsIHdhbF9mcGktOmhmcGkgQVMgZGZwaQorRlJPTSBw Z19zdGF0X3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnIFxnc2V0Cist LSBXQUwgYWR2YW5jZSBzaG91bGQgYmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmR3ciA+IDAgQVMg ZFdSLCA6ZHdiID4gMCBBUyBkV0I7CisgZHdyIHwgZHdiIAorLS0tLS0rLS0tLS0KKyB0ICAg fCB0CisoMSByb3cpCisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcwor U0VMRUNUIHdhbF9yZWNvcmRzIEFTIGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkgQVMg aGZwaSBGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3Rh dCcgXGdzZXQKK0lOU0VSVCBJTlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDpzYW1wbGVfc2l6ZSkgYXMgeDsKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4 ICUgMiA9IDA7CistLSBWQUNVVU0gRlVMTCBkb2Vzbid0IHJlcG9ydCB0byBzdGF0IGNvbGxl Y3Rvci4gU28sIG5vIGFueSBhZHZhbmNlbWVudHMgb2Ygc3RhdGlzdGljcworLS0gYXJlIGRl dGVjdGVkIGhlcmUuCitWQUNVVU0gRlVMTCB2ZXN0YXQ7CistLSBJdCBpcyBuZWNlc3Nhcnkg dG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5UOworLS0gU3RvcmUgV0FM IGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOmh3ciBBUyBk d3IyLCB3YWxfYnl0ZXMtOmh3YiBBUyBkd2IyLCB3YWxfZnBpLTpoZnBpIEFTIGRmcGkyCitG Uk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdz ZXQKKy0tIFdBTCBhbmQgb3RoZXIgc3RhdGlzdGljcyBhZHZhbmNlIHNob3VsZCBub3QgYmUg ZGV0ZWN0ZWQuCitTRUxFQ1QgOmR3cjI9MCBBUyBkV1IsIDpkZnBpMj0wIEFTIGRGUEksIDpk d2IyPTAgQVMgZFdCOworIGR3ciB8IGRmcGkgfCBkd2IgCistLS0tLSstLS0tLS0rLS0tLS0K KyB0ICAgfCB0ICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdf ZnJvemVuX3BhZ2VzLTpmcCA9IDAgQVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx0dXBsZXNfZGVs ZXRlZC06dGQgPSAwIEFTIHR1cGxlc19kZWxldGVkLHJlbHBhZ2VzIC06cnAgPCAwIEFTIHJl bHBhZ2VzLHBhZ2VzX3NjYW5uZWQtOnBzID0gMCBBUyBwYWdlc19zY2FubmVkLHBhZ2VzX3Jl bW92ZWQtOnByID0gMCBBUyBwYWdlc19yZW1vdmVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2 dC5yZWxpZCA9IGMub2lkOworIHJlbG5hbWUgfCB2bV9uZXdfZnJvemVuX3BhZ2VzIHwgdHVw bGVzX2RlbGV0ZWQgfCByZWxwYWdlcyB8IHBhZ2VzX3NjYW5uZWQgfCBwYWdlc19yZW1vdmVk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIHZlc3RhdCAgfCB0 ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgICAgICAgfCB0CisoMSByb3cpCisKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzIEFT IGZwLHR1cGxlc19kZWxldGVkIEFTIHRkLHJlbHBhZ2VzIEFTIHJwLCBwYWdlc19zY2FubmVk IEFTIHBzLHBhZ2VzX3JlbW92ZWQgQVMgcHIKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVz IHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJl bGlkID0gYy5vaWQgXGdzZXQKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxl cworU0VMRUNUIHdhbF9yZWNvcmRzIEFTIGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkg QVMgaGZwaSBGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zl c3RhdCcgXGdzZXQKK0RFTEVURSBGUk9NIHZlc3RhdDsKK1RSVU5DQVRFIHZlc3RhdDsKK1ZB Q1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5V UCBPRkYpIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2FsIHN0 YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJp YWJsZXMgYWZ0ZXIgcmVtb3ZpbmcgYWxsIHR1cGxlcyBmcm9tIHRoZSB0YWJsZQorU0VMRUNU IHdhbF9yZWNvcmRzLTpod3IgQVMgZHdyMywgd2FsX2J5dGVzLTpod2IgQVMgZHdiMywgd2Fs X2ZwaS06aGZwaSBBUyBkZnBpMworRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgV0hFUkUg cmVsbmFtZSA9ICd2ZXN0YXQnIFxnc2V0CistLVRoZXJlIGFyZSBub3RoaW5nIGNoYW5nZWQK K1NFTEVDVCA6ZHdyMz4wIEFTIGRXUiwgOmRmcGkzPTAgQVMgZEZQSSwgOmR3YjM+MCBBUyBk V0I7CisgZHdyIHwgZGZwaSB8IGR3YiAKKy0tLS0tKy0tLS0tLSstLS0tLQorIHQgICB8IHQg ICAgfCB0CisoMSByb3cpCisKKy0tCistLSBOb3csIHRoZSB0YWJsZSBhbmQgaW5kZXggaXMg Y29tcHJlc3NlZCBpbnRvIHplcm8gbnVtYmVyIG9mIHBhZ2VzLiBDaGVjayBpdAorLS0gaW4g dmFjdXVtIGV4dGVuZGVkIHN0YXRpc3RpY3MuCistLSBUaGUgdm1fbmV3X2Zyb3plbl9wYWdl cywgcGFnZXNfc2Nhbm5lZCB2YWx1ZXMgc2hvdWxkbid0IGJlIGNoYW5nZWQKKy0tCitTRUxF Q1QgdnQucmVsbmFtZSx2bV9uZXdfZnJvemVuX3BhZ2VzLTpmcCA9IDAgQVMgdm1fbmV3X2Zy b3plbl9wYWdlcyx0dXBsZXNfZGVsZXRlZC06dGQgPSAwIEFTIHR1cGxlc19kZWxldGVkLHJl bHBhZ2VzIC06cnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX3NjYW5uZWQtOnBzID0gMCBBUyBw YWdlc19zY2FubmVkLHBhZ2VzX3JlbW92ZWQtOnByID0gMCBBUyBwYWdlc19yZW1vdmVkCitG Uk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVs bmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkOworIHJlbG5hbWUgfCB2bV9u ZXdfZnJvemVuX3BhZ2VzIHwgdHVwbGVzX2RlbGV0ZWQgfCByZWxwYWdlcyB8IHBhZ2VzX3Nj YW5uZWQgfCBwYWdlc19yZW1vdmVkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorIHZlc3RhdCAgfCB0ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAg ICAgfCBmICAgICAgICB8IHQgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFC TEUgdmVzdGF0IENBU0NBREU7CitDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAo YXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElO VE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXpl KSBhcyB4OworQU5BTFlaRSB2ZXN0YXQ7CistLSBtdXN0IGJlIGVtcHR5CitTRUxFQ1Qgdm1f bmV3X2Zyb3plbl9wYWdlcywgdm1fbmV3X3Zpc2libGVfcGFnZXMsIHJldl9hbGxfZnJvemVu X3BhZ2VzLHJldl9hbGxfdmlzaWJsZV9wYWdlcyx2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFn ZXMKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzLCBwZ19zdGF0X2FsbF90YWJsZXMgV0hF UkUgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3Rh dF92YWN1dW1fdGFibGVzLnJlbGlkID0gcGdfc3RhdF9hbGxfdGFibGVzLnJlbGlkOworIHZt X25ld19mcm96ZW5fcGFnZXMgfCB2bV9uZXdfdmlzaWJsZV9wYWdlcyB8IHJldl9hbGxfZnJv emVuX3BhZ2VzIHwgcmV2X2FsbF92aXNpYmxlX3BhZ2VzIHwgdm1fbmV3X3Zpc2libGVfZnJv emVuX3BhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgIDAgfCAgICAg ICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAg ICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1ZB Q1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworLS0g YmFja2VuZCBkZWZyZWV6ZWQgcGFnZXMKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzID4g MCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHZtX25ld192aXNpYmxlX3BhZ2VzID4gMCBBUyB2 bV9uZXdfdmlzaWJsZV9wYWdlcyx2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiAwIEFT IHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyxyZXZfYWxsX2Zyb3plbl9wYWdlcyA9IDAg QVMgcmV2X2FsbF9mcm96ZW5fcGFnZXMscmV2X2FsbF92aXNpYmxlX3BhZ2VzID0gMCBBUyBy ZXZfYWxsX3Zpc2libGVfcGFnZXMKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzLCBwZ19z dGF0X2FsbF90YWJsZXMgV0hFUkUgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbG5hbWUgPSAn dmVzdGF0JyBhbmQgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbGlkID0gcGdfc3RhdF9hbGxf dGFibGVzLnJlbGlkOworIHZtX25ld19mcm96ZW5fcGFnZXMgfCB2bV9uZXdfdmlzaWJsZV9w YWdlcyB8IHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyB8IHJldl9hbGxfZnJvemVuX3Bh Z2VzIHwgcmV2X2FsbF92aXNpYmxlX3BhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAg ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxF Q1Qgdm1fbmV3X2Zyb3plbl9wYWdlcyBBUyBwZiwgdm1fbmV3X3Zpc2libGVfcGFnZXMgQVMg cHYsdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIEFTIHB2ZiwgcmV2X2FsbF9mcm96ZW5f cGFnZXMgQVMgaGFmcCxyZXZfYWxsX3Zpc2libGVfcGFnZXMgQVMgaGF2cAorRlJPTSBwZ19z dGF0X3ZhY3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3Zh Y3V1bV90YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJs ZXMucmVsaWQgPSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQgXGdzZXQKK1VQREFURSB2ZXN0 YXQgU0VUIHggPSB4ICsgMTAwMTsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdF X0xJTUlUIDEyOCkgdmVzdGF0OworU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgPiA6cGYg QVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx2bV9uZXdfdmlzaWJsZV9wYWdlcyA+IDpwdiBBUyB2 bV9uZXdfdmlzaWJsZV9wYWdlcyx2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiA6cHZm IEFTIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyxyZXZfYWxsX2Zyb3plbl9wYWdlcyA+ IDpoYWZwIEFTIHJldl9hbGxfZnJvemVuX3BhZ2VzLHJldl9hbGxfdmlzaWJsZV9wYWdlcyA+ IDpoYXZwIEFTIHJldl9hbGxfdmlzaWJsZV9wYWdlcworRlJPTSBwZ19zdGF0X3ZhY3V1bV90 YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMu cmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsaWQgPSBw Z19zdGF0X2FsbF90YWJsZXMucmVsaWQ7Cisgdm1fbmV3X2Zyb3plbl9wYWdlcyB8IHZtX25l d192aXNpYmxlX3BhZ2VzIHwgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIHwgcmV2X2Fs bF9mcm96ZW5fcGFnZXMgfCByZXZfYWxsX3Zpc2libGVfcGFnZXMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgZiAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgICAgfCBmCisoMSBy b3cpCisKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzIEFTIHBmLCB2bV9uZXdfdmlzaWJs ZV9wYWdlcyBBUyBwdiwgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIEFTIHB2ZiwgcmV2 X2FsbF9mcm96ZW5fcGFnZXMgQVMgaGFmcCxyZXZfYWxsX3Zpc2libGVfcGFnZXMgQVMgaGF2 cAorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVS RSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0 X3ZhY3V1bV90YWJsZXMucmVsaWQgPSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQgXGdzZXQK K1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0Owor LS0gdmFjdXVtIGZyZWV6ZWQgcGFnZXMKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzID0g OnBmIEFTIHZtX25ld19mcm96ZW5fcGFnZXMsdm1fbmV3X3Zpc2libGVfcGFnZXMgPSA6cHYg QVMgdm1fbmV3X3Zpc2libGVfcGFnZXMsdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID0g OnB2ZiBBUyB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMsIHJldl9hbGxfZnJvemVuX3Bh Z2VzID0gOmhhZnAgQVMgcmV2X2FsbF9mcm96ZW5fcGFnZXMscmV2X2FsbF92aXNpYmxlX3Bh Z2VzID0gOmhhdnAgQVMgcmV2X2FsbF92aXNpYmxlX3BhZ2VzCitGUk9NIHBnX3N0YXRfdmFj dXVtX3RhYmxlcywgcGdfc3RhdF9hbGxfdGFibGVzIFdIRVJFIHBnX3N0YXRfdmFjdXVtX3Rh Ymxlcy5yZWxuYW1lID0gJ3Zlc3RhdCcgYW5kIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxp ZCA9IHBnX3N0YXRfYWxsX3RhYmxlcy5yZWxpZDsKKyB2bV9uZXdfZnJvemVuX3BhZ2VzIHwg dm1fbmV3X3Zpc2libGVfcGFnZXMgfCB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgfCBy ZXZfYWxsX2Zyb3plbl9wYWdlcyB8IHJldl9hbGxfdmlzaWJsZV9wYWdlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyB0ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgfCB0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICB8IHQK KygxIHJvdykKKworRFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsKKy0tIE5vdyBjaGVjayB2 YWN1dW0gc3RhdGlzdGljcyBmb3IgY3VycmVudCBkYXRhYmFzZQorU0VMRUNUIGRibmFtZSwK KyAgICAgICBkYl9ibGtzX2hpdCA+IDAgQVMgZGJfYmxrc19oaXQsCisgICAgICAgdG90YWxf Ymxrc19kaXJ0aWVkID4gMCBBUyB0b3RhbF9ibGtzX2RpcnRpZWQsCisgICAgICAgdG90YWxf Ymxrc193cml0dGVuID4gMCBBUyB0b3RhbF9ibGtzX3dyaXR0ZW4sCisgICAgICAgd2FsX3Jl Y29yZHMgPiAwIEFTIHdhbF9yZWNvcmRzLAorICAgICAgIHdhbF9mcGkgPiAwIEFTIHdhbF9m cGksCisgICAgICAgd2FsX2J5dGVzID4gMCBBUyB3YWxfYnl0ZXMsCisgICAgICAgdG90YWxf dGltZSA+IDAgQVMgdG90YWxfdGltZQorRlJPTQorcGdfc3RhdF92YWN1dW1fZGF0YWJhc2UK K1dIRVJFIGRibmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKTsKKyAgICAgICAgICAgICBkYm5h bWUgICAgICAgICAgICAgfCBkYl9ibGtzX2hpdCB8IHRvdGFsX2Jsa3NfZGlydGllZCB8IHRv dGFsX2Jsa3Nfd3JpdHRlbiB8IHdhbF9yZWNvcmRzIHwgd2FsX2ZwaSB8IHdhbF9ieXRlcyB8 IHRvdGFsX3RpbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Np b25fc3RhdGlzdGljX3ZhY3V1bV9kYiB8IHQgICAgICAgICAgIHwgdCAgICAgICAgICAgICAg ICAgIHwgdCAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdAorKDEgcm93KQorCistLSBlbnN1cmUgcGVuZGluZyBzdGF0cyBhcmUgZmx1 c2hlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK0NSRUFURSBUQUJMRSB2ZXN0YXQgKHggaW50KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJs ZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSAxMCk7CitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNU IHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6c2FtcGxlX3NpemUpIGFzIHg7CitBTkFMWVpF IHZlc3RhdDsKK1VQREFURSB2ZXN0YXQgU0VUIHggPSAxMDAwMTsKK1ZBQ1VVTSAoUEFSQUxM RUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworXGMgcmVncmVzc2lvbl9z dGF0aXN0aWNfdmFjdXVtX2RiMTsKK1NFVCB0cmFja192YWN1dW1fc3RhdGlzdGljcyBUTyBv bjsKKy0tIE5vdyBjaGVjayB2YWN1dW0gc3RhdGlzdGljcyBmb3IgcG9zdGdyZXMgZGF0YWJh c2UgZnJvbSBhbm90aGVyIGRhdGFiYXNlCitTRUxFQ1QgZGJuYW1lLAorICAgICAgIGRiX2Js a3NfaGl0ID4gMCBBUyBkYl9ibGtzX2hpdCwKKyAgICAgICB0b3RhbF9ibGtzX2RpcnRpZWQg PiAwIEFTIHRvdGFsX2Jsa3NfZGlydGllZCwKKyAgICAgICB0b3RhbF9ibGtzX3dyaXR0ZW4g PiAwIEFTIHRvdGFsX2Jsa3Nfd3JpdHRlbiwKKyAgICAgICB3YWxfcmVjb3JkcyA+IDAgQVMg d2FsX3JlY29yZHMsCisgICAgICAgd2FsX2ZwaSA+IDAgQVMgd2FsX2ZwaSwKKyAgICAgICB3 YWxfYnl0ZXMgPiAwIEFTIHdhbF9ieXRlcywKKyAgICAgICB0b3RhbF90aW1lID4gMCBBUyB0 b3RhbF90aW1lCitGUk9NCitwZ19zdGF0X3ZhY3V1bV9kYXRhYmFzZQorV0hFUkUgZGJuYW1l ID0gJ3JlZ3Jlc3Npb25fc3RhdGlzdGljX3ZhY3V1bV9kYic7CisgICAgICAgICAgICAgZGJu YW1lICAgICAgICAgICAgIHwgZGJfYmxrc19oaXQgfCB0b3RhbF9ibGtzX2RpcnRpZWQgfCB0 b3RhbF9ibGtzX3dyaXR0ZW4gfCB3YWxfcmVjb3JkcyB8IHdhbF9mcGkgfCB3YWxfYnl0ZXMg fCB0b3RhbF90aW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyByZWdyZXNz aW9uX3N0YXRpc3RpY192YWN1dW1fZGIgfCB0ICAgICAgICAgICB8IHQgICAgICAgICAgICAg ICAgICB8IHQgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IHQKKygxIHJvdykKKworXGMgcmVncmVzc2lvbl9zdGF0aXN0aWNfdmFjdXVt X2RiCitTRVQgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3MgVE8gb247CitEUk9QIFRBQkxFIHZl c3RhdCBDQVNDQURFOworXGMgcmVncmVzc2lvbl9zdGF0aXN0aWNfdmFjdXVtX2RiMTsKK1NF VCB0cmFja192YWN1dW1fc3RhdGlzdGljcyBUTyBvbjsKK1NFTEVDVCBjb3VudCgqKQorRlJP TSBwZ19kYXRhYmFzZSBkCitDUk9TUyBKT0lOIHBnX3N0YXRfZ2V0X3ZhY3V1bV90YWJsZXMo MCkKK1dIRVJFIG9pZCA9IDA7IC0tIG11c3QgYmUgMAorIGNvdW50IAorLS0tLS0tLQorICAg ICAwCisoMSByb3cpCisKK1xjIHBvc3RncmVzCitEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25f c3RhdGlzdGljX3ZhY3V1bV9kYjE7CitEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25fc3RhdGlz dGljX3ZhY3V1bV9kYjsKK1JFU0VUIHRyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzOwpkaWZmIC0t Z2l0IGEvc3BlYy92YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJsZS1yZWFkLnNwZWMgYi9z cGVjL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2I2YzkxCi0tLSAvZGV2L251bGwKKysrIGIv c3BlYy92YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJsZS1yZWFkLnNwZWMKQEAgLTAsMCAr MSwxNzMgQEAKKyMgQSBudW1iZXIgb2YgdGVzdHMgZGVkaWNhdGVkIHRvIHZlcmlmaWNhdGlv biBvZiB0aGUgJ0V4dGVuZGVkIFZhY3V1bSBTdGF0aXN0aWNzJworIyBmZWF0dXJlLgorIyBC eSBkZWZhdWx0LCBzdGF0aXN0aWNzIGhhcyBhIHZvbGF0aWxlIG5hdHVyZS4gU28sIHNlbGVj dGlvbiByZXN1bHQgY2FuIGRlcGVuZAorIyBvbiBhIGJ1bmNoIG9mIHRoaW5ncy4gSGVyZSBz b21lIHRyaXZpYWwgdGVzdHMgYXJlIHBlcmZvcm1lZCB0aGF0IHNob3VsZCB3b3JrCisjIGlu IHRoZSBtb3N0IGNhc2VzLgorIyBUZXN0IGZvciBjaGVja2luZyBwYWdlczogZnJvemVuLCBz Y2FubmVkLCByZW1vdmVkLCBudW1iZXIgb2YgdHVwbGVfZGVsZXRlZCBpbiBwZ3Byb19zdGF0 c192YWN1dW1fdGFibGVzLgorIyBCZXNpZGVzLCB0aGlzIHRlc3QgY2hlY2sgcGFnZXMgc2Nh bm5lZCwgcGFnZXMgcmVtb3ZlZCwgdHVwbGVzX2RlbGV0ZWQgaW4gcGdwcm9fc3RhdHNfdmFj dXVtX3RhYmxlcyBhbmQKKyMgd2FsIHZhbHVlcyBzdGF0aXN0aWMgY29sbGVjdGVkIG92ZXIg dmFjdXVtIG9wZXJhdGlvbiBhcyBmb3IgdGFibGVzIGFzIGZvciBpbmRleGVzLgorCitzZXR1 cAoreworICAgIENSRUFURSBUQUJMRSB2ZXN0YXQgKHggaW50IHByaW1hcnkga2V5KSBXSVRI IChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOworCisgICAgQ1JFQVRFIEVYVEVOU0lPTiB2 YWN1dW1fc3RhdGlzdGljczsKKworICAgIENSRUFURSBUQUJMRSB2YWN1dW1fd2FsX3N0YXRz X3RhYmxlCisgICAgKHJlbGlkIGludCwgd2FsX3JlY29yZHMgaW50LCB3YWxfZnBpIGludCwg d2FsX2J5dGVzIGludCk7CisgICAgaW5zZXJ0IGludG8gdmFjdXVtX3dhbF9zdGF0c190YWJs ZSAocmVsaWQpCisgICAgc2VsZWN0IG9pZCBmcm9tIHBnX2NsYXNzIGMKKyAgICBXSEVSRSBy ZWxuYW1lID0gJ3Zlc3RhdCc7CisgICAgVVBEQVRFIHZhY3V1bV93YWxfc3RhdHNfdGFibGUg U0VUCisgICAgd2FsX3JlY29yZHMgPSAwLCB3YWxfZnBpID0gMCwgd2FsX2J5dGVzID0gMDsK KworICAgIENSRUFURSBUQUJMRSB2YWN1dW1fd2FsX3N0YXRzX2luZGV4CisgICAgKHJlbGlk IGludCwgd2FsX3JlY29yZHMgaW50LCB3YWxfZnBpIGludCwgd2FsX2J5dGVzIGludCk7Cisg ICAgaW5zZXJ0IGludG8gdmFjdXVtX3dhbF9zdGF0c19pbmRleCAocmVsaWQpCisgICAgc2Vs ZWN0IG9pZCBmcm9tIHBnX2NsYXNzIGMKKyAgICBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdF9w a2V5JzsKKyAgICBVUERBVEUgdmFjdXVtX3dhbF9zdGF0c19pbmRleCBTRVQKKyAgICB3YWxf cmVjb3JkcyA9IDAsIHdhbF9mcGkgPSAwLCB3YWxfYnl0ZXMgPSAwOworCisgICAgU0VUIHRy YWNrX2lvX3RpbWluZyA9IG9uOworICAgIFNIT1cgdHJhY2tfY291bnRzOyAgLS0gbXVzdCBi ZSBvbgorICAgIFNFVCB0cmFja19mdW5jdGlvbnMgVE8gJ2FsbCc7CisKK30KKwordGVhcmRv d24KK3sKKyAgICBSRVNFVCB2YWN1dW1fZnJlZXplX21pbl9hZ2U7CisgICAgUkVTRVQgdmFj dXVtX2ZyZWV6ZV90YWJsZV9hZ2U7CisgICAgRFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsK KyAgICBEUk9QIFRBQkxFIHZhY3V1bV93YWxfc3RhdHNfaW5kZXg7CisgICAgRFJPUCBUQUJM RSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlOworICAgIERST1AgRVhURU5TSU9OIHZhY3V1bV9z dGF0aXN0aWNzOworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxX3NldF9hZ3Jlc3NpdmVfdmFj dXVtICAgIHsgU0VUIHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDA7IH0KK3N0ZXAgczFfaW5z ZXJ0ICAgICAgICAgICAgICAgICAgeyBJTlNFUlQgSU5UTyB2ZXN0YXQoeCkgU0VMRUNUIGlk IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNzcwKSBBcyBpZDsgfQorc3RlcCBzMV91cGRhdGUg ICAgICAgICAgICAgICAgICB7IFVQREFURSB2ZXN0YXQgU0VUIHggPSB4KzE7IH0KK3N0ZXAg czFfZGVsZXRlX2hhbGZfdGFibGUgICAgICAgeyBERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUg eCAlIDIgPSAwOyB9CitzdGVwIHMxX2RlbGV0ZV9mdWxsX3RhYmxlICAgICAgIHsgREVMRVRF IEZST00gdmVzdGF0OyB9CitzdGVwIHMxX3ZhY3V1bSAgICAgICAgICAgICAgICAgIHsgVkFD VVVNIHZlc3RhdDsgfQorc3RlcCBzMV92YWN1dW1fZnVsbCAgICAgICAgICAgICB7IFZBQ1VV TSBGVUxMIHZlc3RhdDsgfQorc3RlcCBzMV92YWN1dW1fcGFyYWxsZWwgICAgICAgICB7IFZB Q1VVTSAoUEFSQUxMRUwgMiwgSU5ERVhfQ0xFQU5VUCBPTikgdmVzdGF0OyB9CitzdGVwIHMx X2FuYWx5emUgICAgICAgICAgICAgICAgIHsgQU5BTFlaRSB2ZXN0YXQ7IH0KK3N0ZXAgczFf dHJhbmNhdGUgICAgICAgICAgICAgICAgeyBUUlVOQ0FURSB2ZXN0YXQ7IH0KK3N0ZXAgczFf Y2hlY2twb2ludCAgICAgICAgICAgICAgeyBDSEVDS1BPSU5UOyB9CitzdGVwIHMxX3ByaW50 X3ZhY3V1bV9zdGF0c190YWJsZXMKK3sKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAgICAg ICAgICAgcGFnZXNfZnJvemVuLAorICAgICAgICAgICB0dXBsZXNfZGVsZXRlZCwKKyAgICAg ICAgICAgcGFnZXNfc2Nhbm5lZCwKKyAgICAgICAgICAgcGFnZXNfcmVtb3ZlZAorICAgIEZS T00gcGdwcm9fc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJF IHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lk OworfQorCitzdGVwIHMxX3ByaW50X3ZhY3V1bV9zdGF0c19pbmRleGVzCit7CisgICAgU0VM RUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2VzX2RlbGV0ZWQsCisgICAgICAgICAg IHR1cGxlc19kZWxldGVkCisgICAgRlJPTSBwZ3Byb19zdGF0c192YWN1dW1faW5kZXhlcyB2 dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFO RAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7Cit9CisKK3N0ZXAgczFfc2F2ZV93YWxs cworeworICAgIFVQREFURSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIFNFVAorICAgIHdhbF9y ZWNvcmRzID0gZFdSLCB3YWxfZnBpID0gZEZQSSwgd2FsX2J5dGVzID0gZFdCCisgICAgRlJP TSAoU0VMRUNUIHJlbGlkLCB3YWxfcmVjb3JkcyBBUyBkV1IsIHdhbF9mcGkgQVMgZEZQSSwg d2FsX2J5dGVzIEFTIGRXQgorICAgIEZST00gcGdwcm9fc3RhdHNfdmFjdXVtX3RhYmxlcyB2 dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQKKyAg ICAgICAgICB2dC5yZWxpZCA9IGMub2lkKSB0CisgICAgV0hFUkUKKyAgICAgICAgICB0LnJl bGlkID0gdC5yZWxpZDsKKworICAgVVBEQVRFIHZhY3V1bV93YWxfc3RhdHNfaW5kZXggU0VU CisgICAgd2FsX3JlY29yZHMgPSBpV1IsIHdhbF9mcGkgPSBpRlBJLCB3YWxfYnl0ZXMgPSBp V0IKKyAgICBGUk9NIChTRUxFQ1QgcmVsaWQsIHdhbF9yZWNvcmRzIEFTIGlXUiwgd2FsX2Zw aSBBUyBpRlBJLCB3YWxfYnl0ZXMgQVMgaVdCCisgICAgRlJPTSBwZ3Byb19zdGF0c192YWN1 dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQpIHQKKyAgICBXSEVS RQorICAgICAgICAgIHQucmVsaWQgPSB0LnJlbGlkOworfQorCitzdGVwIHMxX2RpZmZlcmVu Y2UKK3sKKyAgICBTRUxFQ1QgdDEud2FsX3JlY29yZHMgLSB0MC53YWxfcmVjb3JkcyA+IDAg QVMgZFdSLAorICAgICAgICAgICB0MS53YWxfZnBpIC0gdDAud2FsX2ZwaSA+IDAgQVMgZEZQ SSwKKyAgICAgICAgICAgdDEud2FsX2J5dGVzIC0gdDAud2FsX2J5dGVzID4gMCBBUyBkV0IK KyAgICBGUk9NIHZhY3V1bV93YWxfc3RhdHNfdGFibGUgdDAsIHBncHJvX3N0YXRzX3ZhY3V1 bV90YWJsZXMgdDEKKyAgICBXSEVSRSB0MC5yZWxpZCA9IHQxLnJlbGlkOworCisgICAgU0VM RUNUIHQxLndhbF9yZWNvcmRzIC0gdDAud2FsX3JlY29yZHMgPiAwIEFTIGlXUiwKKyAgICAg ICAgICAgdDEud2FsX2ZwaSAtIHQwLndhbF9mcGkgPiAwIEFTIGlGUEksCisgICAgICAgICAg IHQxLndhbF9ieXRlcyAtIHQwLndhbF9ieXRlcyA+IDAgQVMgaVdCCisgICAgRlJPTSB2YWN1 dW1fd2FsX3N0YXRzX3RhYmxlIHQwLCBwZ3Byb19zdGF0c192YWN1dW1fdGFibGVzIHQxCisg ICAgV0hFUkUgdDAucmVsaWQgPSB0MS5yZWxpZDsKK30KKworcGVybXV0YXRpb24KKyAgICBz MV9pbnNlcnQKKyAgICBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzCisgICAgczFfcHJp bnRfdmFjdXVtX3N0YXRzX2luZGV4ZXMKKyAgICBzMV9zZXRfYWdyZXNzaXZlX3ZhY3V1bQor ICAgIHMxX2FuYWx5emUKKyAgICBzMV9kZWxldGVfaGFsZl90YWJsZQorICAgIHMxX3ByaW50 X3ZhY3V1bV9zdGF0c190YWJsZXMKKyAgICBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhl cworICAgIHMxX3ZhY3V1bQorICAgIHMxX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZXMKKyAg ICBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhlcworICAgIHMxX2RlbGV0ZV9mdWxsX3Rh YmxlCisgICAgczFfdmFjdXVtX3BhcmFsbGVsCisgICAgczFfcHJpbnRfdmFjdXVtX3N0YXRz X3RhYmxlcworICAgIHMxX3ByaW50X3ZhY3V1bV9zdGF0c19pbmRleGVzCisgICAgczFfaW5z ZXJ0CisgICAgczFfdXBkYXRlCisgICAgczFfdmFjdXVtX2Z1bGwKKyAgICBzMV9wcmludF92 YWN1dW1fc3RhdHNfdGFibGVzCisgICAgczFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4ZXMK KyAgICBzMV9kZWxldGVfZnVsbF90YWJsZQorICAgIHMxX3RyYW5jYXRlCisgICAgczFfdmFj dXVtCisgICAgczFfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlcworICAgIHMxX3ByaW50X3Zh Y3V1bV9zdGF0c19pbmRleGVzCisKK3Blcm11dGF0aW9uCisgICAgczFfaW5zZXJ0CisgICAg czFfc2V0X2FncmVzc2l2ZV92YWN1dW0KKyAgICBzMV9hbmFseXplCisgICAgczFfZGVsZXRl X2hhbGZfdGFibGUKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFfZGlmZmVyZW5jZQorICAg IHMxX3NhdmVfd2FsbHMKKyAgICBzMV92YWN1dW0KKyAgICBzMV9jaGVja3BvaW50CisgICAg czFfZGlmZmVyZW5jZQorICAgIHMxX3NhdmVfd2FsbHMKKyAgICBzMV9kZWxldGVfZnVsbF90 YWJsZQorICAgIHMxX3ZhY3V1bV9wYXJhbGxlbAorICAgIHMxX2NoZWNrcG9pbnQKKyAgICBz MV9kaWZmZXJlbmNlCisgICAgczFfc2F2ZV93YWxscworICAgIHMxX2luc2VydAorICAgIHMx X3VwZGF0ZQorICAgIHMxX3ZhY3V1bV9mdWxsCisgICAgczFfY2hlY2twb2ludAorICAgIHMx X2RpZmZlcmVuY2UKKyAgICBzMV9zYXZlX3dhbGxzCisgICAgczFfZGVsZXRlX2Z1bGxfdGFi bGUKKyAgICBzMV90cmFuY2F0ZQorICAgIHMxX3ZhY3V1bQorICAgIHMxX2NoZWNrcG9pbnQK KyAgICBzMV9kaWZmZXJlbmNlCisgICAgczFfc2F2ZV93YWxscwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NxbC92YWN1dW1faW5kZXhfc3RhdGlzdGljcy5z cWwgYi9zcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjk5NmVhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcWwvdmFj dXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsCkBAIC0wLDAgKzEsMTM4IEBACistLQorLS0gVGVz dCBjdW11bGF0aXZlIHZhY3V1bSBzdGF0cyBzeXN0ZW0KKy0tCistLSBDaGVjayB0aGUgd2Fs bCBzdGF0aXN0aWNzIGNvbGxlY3RlZCBkdXJpbmcgdmFjdXVtIG9wZXJhdGlvbjoKKy0tIG51 bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFnZXMgc2V0IGJ5IHZhY3V1bTsKKy0tIG51 bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFnZXMgcmVtb3ZlZCBieSBiYWNrZW5kLgor LS0gU3RhdGlzdGljIHdhbF9mcGkgaXMgbm90IGRpc3BsYXllZCBpbiB0aGlzIHRlc3QgYmVj YXVzZSBpdHMgYmVoYXZpb3IgaXMgdW5zdGFibGUuCistLQorLS0gY29uZGl0aW8gc2luZSBx dWEgbm9uCitTSE9XIHRyYWNrX2NvdW50czsgIC0tIG11c3QgYmUgb24KKworXHNldCBzYW1w bGVfc2l6ZSAxMDAwMAorCistLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgd2Ugd2Fu dCB0byB0ZXN0IGl0Li4uCitTRVQgdHJhY2tfZnVuY3Rpb25zIFRPICdhbGwnOworCitDUkVB VEUgRVhURU5TSU9OIHZhY3V1bV9zdGF0aXN0aWNzOworCitTSE9XIHZhY3V1bV9zdGF0aXN0 aWNzLmVuYWJsZWQ7ICAtLSBtdXN0IGJlIG9uCisKK0NSRUFURSBUQUJMRSB2ZXN0YXQgKHgg aW50KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSAxMCk7 CitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6 c2FtcGxlX3NpemUpIGFzIHg7CitBTkFMWVpFIHZlc3RhdDsKKworREVMRVRFIEZST00gdmVz dGF0IFdIRVJFIHggJSAyID0gMDsKKworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNB R0VfTElNSVQgMTI4KSB2ZXN0YXQ7CisKKy0tIE11c3QgYmUgZW1wdHkuCitTRUxFQ1QgKgor RlJPTSBwZ19zdGF0c192YWN1dW1faW5kZXhlcyB2dAorV0hFUkUgdnQuaW5kZXhyZWxuYW1l ID0gJ3Zlc3RhdCc7CisKK1NFTEVDVCBvaWQgQVMgaW9pZCBmcm9tIHBnX2NsYXNzIHdoZXJl IHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CisKK0RFTEVURSBGUk9NIHZlc3RhdCBX SEVSRSB4ICUgMiA9IDA7CistLSBCZWZvcmUgdGhlIGZpcnN0IHZhY3V1bSBleGVjdXRpb24g ZXh0ZW5kZWQgc3RhdHMgdmlldyBpcyBlbXB0eS4KK1NFTEVDVCB2dC5pbmRleHJlbG5hbWUs cmVscGFnZXMscGFnZXNfZGVsZXRlZCx0dXBsZXNfZGVsZXRlZAorRlJPTSBwZ19zdGF0c192 YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQuaW5kZXhyZWxuYW1lID0g J3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5kZXhyZWxpZCA9IGMub2lkOworU0VMRUNUIHJlbHBh Z2VzIEFTIGlycAorRlJPTSBwZ19jbGFzcyBjCitXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdF9w a2V5JyBcZ3NldAorCitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAx MjgsIElOREVYX0NMRUFOVVAgT04pIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBj aGVjayB0aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CisKKy0tIFRoZSB0YWJsZSBh bmQgaW5kZXggZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3Mgc2hvdWxkIHNob3cgdXMgdGhh dAorLS0gdmFjdXVtIGZyb3plZCBwYWdlcyBhbmQgY2xlYW4gdXAgcGFnZXMsIGJ1dCBwYWdl c19yZW1vdmVkIHN0YXllZCB0aGUgc2FtZQorLS0gYmVjYXVzZSBvZiBub3QgZnVsbCB0YWJs ZSBoYXZlIGNsZWFuZWQgdXAKK1NFTEVDVCB2dC5pbmRleHJlbG5hbWUscmVscGFnZXMtOmly cCA9IDAgQVMgcmVscGFnZXMscGFnZXNfZGVsZXRlZCA9IDAgQVMgcGFnZXNfZGVsZXRlZCx0 dXBsZXNfZGVsZXRlZCA+IDAgQVMgdHVwbGVzX2RlbGV0ZWQKK0ZST00gcGdfc3RhdHNfdmFj dXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LmluZGV4cmVsbmFtZSA9ICd2 ZXN0YXRfcGtleScgQU5EIHZ0LmluZGV4cmVsaWQgPSBjLm9pZDsKK1NFTEVDVCB2dC5pbmRl eHJlbG5hbWUscmVscGFnZXMgQVMgaXJwLHBhZ2VzX2RlbGV0ZWQgQVMgaXBkLHR1cGxlc19k ZWxldGVkIEFTIGl0ZAorRlJPTSBwZ19zdGF0c192YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xh c3MgYworV0hFUkUgdnQuaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5k ZXhyZWxpZCA9IGMub2lkIFxnc2V0CisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZh cmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzIEFTIGl3cix3YWxfYnl0ZXMgQVMgaXdiLHdh bF9mcGkgQVMgaWZwaSBGUk9NIHBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4 cmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgXGdzZXQKKworLS0gTG9vayBpbnRvIFdBTCByZWNv cmRzIGRlbHRhcy4KK1NFTEVDVCB3YWxfcmVjb3JkcyA+IDAgQVMgZGlXUiwgd2FsX2J5dGVz ID4gMCBBUyBkaVdCCitGUk9NIHBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4 cmVsbmFtZSA9ICd2ZXN0YXRfcGtleSc7CisKK0RFTEVURSBGUk9NIHZlc3RhdDs7CitWQUNV VU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgsIElOREVYX0NMRUFOVVAg T04pIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2FsIHN0YXRp c3RpY3MKK0NIRUNLUE9JTlQ7CisKKy0tIHBhZ2VzX3JlbW92ZWQgbXVzdCBiZSBpbmNyZWFz ZWQKK1NFTEVDVCB2dC5pbmRleHJlbG5hbWUscmVscGFnZXMtOmlycCA9IDAgQVMgcmVscGFn ZXMscGFnZXNfZGVsZXRlZC06aXBkID4gMCBBUyBwYWdlc19kZWxldGVkLHR1cGxlc19kZWxl dGVkLTppdGQgPiAwIEFTIHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0YXRzX3ZhY3V1bV9p bmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5pbmRleHJlbG5hbWUgPSAndmVzdGF0 X3BrZXknIEFORCB2dC5pbmRleHJlbGlkID0gYy5vaWQ7CitTRUxFQ1QgdnQuaW5kZXhyZWxu YW1lLHJlbHBhZ2VzIEFTIGlycCxwYWdlc19kZWxldGVkIEFTIGlwZCx0dXBsZXNfZGVsZXRl ZCBBUyBpdGQKK0ZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMK K1dIRVJFIHZ0LmluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgQU5EIHZ0LmluZGV4cmVs aWQgPSBjLm9pZCBcZ3NldAorCistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJs ZXMKK1NFTEVDVCB3YWxfcmVjb3Jkcy06aXdyIEFTIGRpd3IsIHdhbF9ieXRlcy06aXdiIEFT IGRpd2IsIHdhbF9mcGktOmlmcGkgQVMgZGlmcGkKK0ZST00gcGdfc3RhdHNfdmFjdXVtX2lu ZGV4ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorCistLSBX QUwgYWR2YW5jZSBzaG91bGQgYmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmRpd3IgPiAwIEFTIGRp V1IsIDpkaXdiID4gMCBBUyBkaVdCOworCistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2 YXJpYWJsZXMKK1NFTEVDVCB3YWxfcmVjb3JkcyBBUyBpd3Isd2FsX2J5dGVzIEFTIGl3Yix3 YWxfZnBpIEFTIGlmcGkgRlJPTSBwZ19zdGF0c192YWN1dW1faW5kZXhlcyBXSEVSRSBpbmRl eHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CisKK0lOU0VSVCBJTlRPIHZlc3RhdCBT RUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6ZSkgYXMgeDsKK0RF TEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBWQUNVVU0gRlVMTCBkb2Vz bid0IHJlcG9ydCB0byBzdGF0IGNvbGxlY3Rvci4gU28sIG5vIGFueSBhZHZhbmNlbWVudHMg b2Ygc3RhdGlzdGljcworLS0gYXJlIGRldGVjdGVkIGhlcmUuCitWQUNVVU0gRlVMTCB2ZXN0 YXQ7CistLSBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitD SEVDS1BPSU5UOworCistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJsZXMKK1NF TEVDVCB3YWxfcmVjb3Jkcy06aXdyIEFTIGRpd3IyLCB3YWxfYnl0ZXMtOml3YiBBUyBkaXdi Miwgd2FsX2ZwaS06aWZwaSBBUyBkaWZwaTIKK0ZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4 ZXMgV0hFUkUgaW5kZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorCistLSBXQUwg YW5kIG90aGVyIHN0YXRpc3RpY3MgYWR2YW5jZSBzaG91bGQgbm90IGJlIGRldGVjdGVkLgor U0VMRUNUIDpkaXdyMj0wIEFTIGRpV1IsIDpkaWZwaTI9MCBBUyBpRlBJLCA6ZGl3YjI9MCBB UyBkaVdCOworCitTRUxFQ1QgdnQuaW5kZXhyZWxuYW1lLHJlbHBhZ2VzLTppcnAgPCAwIEFT IHJlbHBhZ2VzLHBhZ2VzX2RlbGV0ZWQtOmlwZCA9IDAgQVMgcGFnZXNfZGVsZXRlZCx0dXBs ZXNfZGVsZXRlZC06aXRkID0gMCBBUyB0dXBsZXNfZGVsZXRlZAorRlJPTSBwZ19zdGF0c192 YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQuaW5kZXhyZWxuYW1lID0g J3Zlc3RhdF9wa2V5JyBBTkQgdnQuaW5kZXhyZWxpZCA9IGMub2lkOworU0VMRUNUIHZ0Lmlu ZGV4cmVsbmFtZSxyZWxwYWdlcyBBUyBpcnAscGFnZXNfZGVsZXRlZCBBUyBpcGQsdHVwbGVz X2RlbGV0ZWQgQVMgaXRkCitGUk9NIHBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19j bGFzcyBjCitXSEVSRSB2dC5pbmRleHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5p bmRleHJlbGlkID0gYy5vaWQgXGdzZXQKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8g dmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMgQVMgaXdyLHdhbF9ieXRlcyBBUyBpd2Is d2FsX2ZwaSBBUyBpZnBpIEZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgV0hFUkUgaW5k ZXhyZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorCitERUxFVEUgRlJPTSB2ZXN0YXQ7 CitUUlVOQ0FURSB2ZXN0YXQ7CitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9M SU1JVCAxMjgsIElOREVYX0NMRUFOVVAgT04pIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2Fy eSB0byBjaGVjayB0aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CisKKy0tIFN0b3Jl IFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcyBhZnRlciByZW1vdmluZyBhbGwgdHVwbGVz IGZyb20gdGhlIHRhYmxlCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3ciBBUyBkaXdyMywgd2Fs X2J5dGVzLTppd2IgQVMgZGl3YjMsIHdhbF9mcGktOmlmcGkgQVMgZGlmcGkzCitGUk9NIHBn X3N0YXRzX3ZhY3V1bV9pbmRleGVzIFdIRVJFIGluZGV4cmVsbmFtZSA9ICd2ZXN0YXRfcGtl eScgXGdzZXQKKworLS1UaGVyZSBhcmUgbm90aGluZyBjaGFuZ2VkCitTRUxFQ1QgOmRpd3Iz PTAgQVMgZGlXUiwgOmRpZnBpMz0wIEFTIGlGUEksIDpkaXdiMz0wIEFTIGRpV0I7CisKKy0t CistLSBOb3csIHRoZSB0YWJsZSBhbmQgaW5kZXggaXMgY29tcHJlc3NlZCBpbnRvIHplcm8g bnVtYmVyIG9mIHBhZ2VzLiBDaGVjayBpdAorLS0gaW4gdmFjdXVtIGV4dGVuZGVkIHN0YXRp c3RpY3MuCistLSBUaGUgcGFnZXNfZnJvemVuLCBwYWdlc19zY2FubmVkIHZhbHVlcyBzaG91 bGRuJ3QgYmUgY2hhbmdlZAorLS0KK1NFTEVDVCB2dC5pbmRleHJlbG5hbWUscmVscGFnZXMt OmlycCA9IDAgQVMgcmVscGFnZXMscGFnZXNfZGVsZXRlZC06aXBkID0gMCBBUyBwYWdlc19k ZWxldGVkLHR1cGxlc19kZWxldGVkLTppdGQgPSAwIEFTIHR1cGxlc19kZWxldGVkCitGUk9N IHBnX3N0YXRzX3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5pbmRl eHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5pbmRleHJlbGlkID0gYy5vaWQ7CisK K0RST1AgVEFCTEUgdmVzdGF0OworCitEUk9QIEVYVEVOU0lPTiB2YWN1dW1fc3RhdGlzdGlj czsKZGlmZiAtLWdpdCBhL3NxbC92YWN1dW1fdGFibGVzX2FuZF9kYl9zdGF0aXN0aWNzLnNx bCBiL3NxbC92YWN1dW1fdGFibGVzX2FuZF9kYl9zdGF0aXN0aWNzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTgxYTgyCi0tLSAvZGV2L251bGwKKysrIGIv c3FsL3ZhY3V1bV90YWJsZXNfYW5kX2RiX3N0YXRpc3RpY3Muc3FsCkBAIC0wLDAgKzEsMjI0 IEBACistLQorLS0gVGVzdCBjdW11bGF0aXZlIHZhY3V1bSBzdGF0cyBzeXN0ZW0KKy0tCist LSBDaGVjayB0aGUgd2FsbCBzdGF0aXN0aWNzIGNvbGxlY3RlZCBkdXJpbmcgdmFjdXVtIG9w ZXJhdGlvbjoKKy0tIG51bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFnZXMgc2V0IGJ5 IHZhY3V1bTsKKy0tIG51bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFnZXMgcmVtb3Zl ZCBieSBiYWNrZW5kLgorLS0gU3RhdGlzdGljIHdhbF9mcGkgaXMgbm90IGRpc3BsYXllZCBp biB0aGlzIHRlc3QgYmVjYXVzZSBpdHMgYmVoYXZpb3IgaXMgdW5zdGFibGUuCistLQorCitT SE9XIHRyYWNrX2NvdW50czsgIC0tIG11c3QgYmUgb24KK1xzZXQgc2FtcGxlX3NpemUgMTAw MDAKKworLS0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IHdlIHdhbnQgdG8gdGVzdCBp dC4uLgorU0VUIHRyYWNrX2Z1bmN0aW9ucyBUTyAnYWxsJzsKKworQ1JFQVRFIEVYVEVOU0lP TiB2YWN1dW1fc3RhdGlzdGljczsKKworU0hPVyB2YWN1dW1fc3RhdGlzdGljcy5lbmFibGVk OyAgLS0gbXVzdCBiZSBvbgorCitDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lvbl9zdGF0aXN0 aWNfdmFjdXVtX2RiOworQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25fc3RhdGlzdGljX3Zh Y3V1bV9kYjE7CitcYyByZWdyZXNzaW9uX3N0YXRpc3RpY192YWN1dW1fZGI7CitDUkVBVEUg RVhURU5TSU9OIHZhY3V1bV9zdGF0aXN0aWNzOworCistLSBub3QgZW5hYmxlZCBieSBkZWZh dWx0LCBidXQgd2Ugd2FudCB0byB0ZXN0IGl0Li4uCitTRVQgdHJhY2tfZnVuY3Rpb25zIFRP ICdhbGwnOworCistLSBlbnN1cmUgcGVuZGluZyBzdGF0cyBhcmUgZmx1c2hlZAorU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCistLVNFVCBzdGF0c19mZXRjaF9jb25z aXN0ZW5jeSA9IHNuYXBzaG90OworQ1JFQVRFIFRBQkxFIHZlc3RhdCAoeCBpbnQpIFdJVEgg KGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDEwKTsKK0lOU0VSVCBJ TlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6 ZSkgYXMgeDsKK0FOQUxZWkUgdmVzdGF0OworCitTRUxFQ1Qgb2lkIEFTIHJvaWQgZnJvbSBw Z19jbGFzcyB3aGVyZSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKworREVMRVRFIEZST00g dmVzdGF0IFdIRVJFIHggJSAyID0gMDsKKy0tIEJlZm9yZSB0aGUgZmlyc3QgdmFjdXVtIGV4 ZWN1dGlvbiBleHRlbmRlZCBzdGF0cyB2aWV3IGlzIGVtcHR5LgorU0VMRUNUIHZ0LnJlbG5h bWUsdm1fbmV3X2Zyb3plbl9wYWdlcyx0dXBsZXNfZGVsZXRlZCxyZWxwYWdlcyxwYWdlc19z Y2FubmVkLHBhZ2VzX3JlbW92ZWQKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwg cGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9 IGMub2lkOworU0VMRUNUIHJlbHBhZ2VzIEFTIHJwCitGUk9NIHBnX2NsYXNzIGMKK1dIRVJF IHJlbG5hbWUgPSAndmVzdGF0JyBcZ3NldAorCitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZF Ul9VU0FHRV9MSU1JVCAxMjgsIElOREVYX0NMRUFOVVAgT0ZGKSB2ZXN0YXQ7CistLSBpdCBp cyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5UOwor CistLSBUaGUgdGFibGUgYW5kIGluZGV4IGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHNo b3VsZCBzaG93IHVzIHRoYXQKKy0tIHZhY3V1bSBmcm96ZWQgcGFnZXMgYW5kIGNsZWFuIHVw IHBhZ2VzLCBidXQgcGFnZXNfcmVtb3ZlZCBzdGF5ZWQgdGhlIHNhbWUKKy0tIGJlY2F1c2Ug b2Ygbm90IGZ1bGwgdGFibGUgaGF2ZSBjbGVhbmVkIHVwCitTRUxFQ1QgdnQucmVsbmFtZSx2 bV9uZXdfZnJvemVuX3BhZ2VzID4gMCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19k ZWxldGVkID4gMCBBUyB0dXBsZXNfZGVsZXRlZCxyZWxwYWdlcy06cnAgPSAwIEFTIHJlbHBh Z2VzLHBhZ2VzX3NjYW5uZWQgPiAwIEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZCA9 IDAgQVMgcGFnZXNfcmVtb3ZlZAorRlJPTSBwZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBw Z19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0g Yy5vaWQ7CitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdlcyBBUyBmcCx0dXBsZXNfZGVsZXRl ZCBBUyB0ZCxyZWxwYWdlcyBBUyBycCwgcGFnZXNfc2Nhbm5lZCBBUyBwcywgcGFnZXNfcmVt b3ZlZCBBUyBwcgorRlJPTSBwZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBj CitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQgXGdz ZXQKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2Fs X3JlY29yZHMgQVMgaHdyLHdhbF9ieXRlcyBBUyBod2Isd2FsX2ZwaSBBUyBoZnBpIEZST00g cGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQK KworLS0gTG9vayBpbnRvIFdBTCByZWNvcmRzIGRlbHRhcy4KK1NFTEVDVCB3YWxfcmVjb3Jk cyA+IDAgQVMgZFdSLCB3YWxfYnl0ZXMgPiAwIEFTIGRXQgorRlJPTSBwZ19zdGF0c192YWN1 dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0JzsKKworREVMRVRFIEZST00gdmVz dGF0OzsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwgSU5E RVhfQ0xFQU5VUCBPRkYpIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0 aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CisKKy0tIHBhZ2VzX3JlbW92ZWQgbXVz dCBiZSBpbmNyZWFzZWQKK1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMt OmZwID4gMCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkLTp0ZCA+IDAg QVMgdHVwbGVzX2RlbGV0ZWQscmVscGFnZXMgLTpycCA9IDAgQVMgcmVscGFnZXMscGFnZXNf c2Nhbm5lZC06cHMgPiAwIEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZC06cHIgPiAw IEFTIHBhZ2VzX3JlbW92ZWQKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdf Y2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMu b2lkOworU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgQVMgZnAsdHVwbGVzX2RlbGV0ZWQg QVMgdGQscmVscGFnZXMgQVMgcnAsIHBhZ2VzX3NjYW5uZWQgQVMgcHMsIHBhZ2VzX3JlbW92 ZWQgQVMgcHIKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYwor V0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkIFxnc2V0 CisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9y ZWNvcmRzLTpod3IgQVMgZHdyLCB3YWxfYnl0ZXMtOmh3YiBBUyBkd2IsIHdhbF9mcGktOmhm cGkgQVMgZGZwaQorRlJPTSBwZ19zdGF0c192YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUg PSAndmVzdGF0JyBcZ3NldAorCistLSBXQUwgYWR2YW5jZSBzaG91bGQgYmUgZGV0ZWN0ZWQu CitTRUxFQ1QgOmR3ciA+IDAgQVMgZFdSLCA6ZHdiID4gMCBBUyBkV0I7CisKKy0tIFN0b3Jl IFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzIEFTIGh3 cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkgQVMgaGZwaSBGUk9NIHBnX3N0YXRzX3ZhY3V1 bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnIFxnc2V0CisKK0lOU0VSVCBJTlRP IHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6ZSkg YXMgeDsKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBWQUNVVU0g RlVMTCBkb2Vzbid0IHJlcG9ydCB0byBzdGF0IGNvbGxlY3Rvci4gU28sIG5vIGFueSBhZHZh bmNlbWVudHMgb2Ygc3RhdGlzdGljcworLS0gYXJlIGRldGVjdGVkIGhlcmUuCitWQUNVVU0g RlVMTCB2ZXN0YXQ7CistLSBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0 aXN0aWNzCitDSEVDS1BPSU5UOworCistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJp YWJsZXMKK1NFTEVDVCB3YWxfcmVjb3Jkcy06aHdyIEFTIGR3cjIsIHdhbF9ieXRlcy06aHdi IEFTIGR3YjIsIHdhbF9mcGktOmhmcGkgQVMgZGZwaTIKK0ZST00gcGdfc3RhdHNfdmFjdXVt X3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKworLS0gV0FMIGFuZCBv dGhlciBzdGF0aXN0aWNzIGFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBkZXRlY3RlZC4KK1NFTEVD VCA6ZHdyMj0wIEFTIGRXUiwgOmRmcGkyPTAgQVMgZEZQSSwgOmR3YjI9MCBBUyBkV0I7CisK K1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMtOmZwID0gMCBBUyB2bV9u ZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkLTp0ZCA9IDAgQVMgdHVwbGVzX2RlbGV0 ZWQscmVscGFnZXMgLTpycCA8IDAgQVMgcmVscGFnZXMscGFnZXNfc2Nhbm5lZC06cHMgPSAw IEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZC06cHIgPSAwIEFTIHBhZ2VzX3JlbW92 ZWQKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUg dnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkOworU0VMRUNUIHZt X25ld19mcm96ZW5fcGFnZXMgQVMgZnAsdHVwbGVzX2RlbGV0ZWQgQVMgdGQscmVscGFnZXMg QVMgcnAsIHBhZ2VzX3NjYW5uZWQgQVMgcHMscGFnZXNfcmVtb3ZlZCBBUyBwcgorRlJPTSBw Z19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1l ID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQgXGdzZXQKKworLS0gU3RvcmUgV0FM IGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMgQVMgaHdyLHdh bF9ieXRlcyBBUyBod2Isd2FsX2ZwaSBBUyBoZnBpIEZST00gcGdfc3RhdHNfdmFjdXVtX3Rh YmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKworREVMRVRFIEZST00gdmVz dGF0OworVFJVTkNBVEUgdmVzdGF0OworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNB R0VfTElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9GRikgdmVzdGF0OworLS0gaXQgaXMgbmVj ZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKworLS0g U3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzIGFmdGVyIHJlbW92aW5nIGFsbCB0 dXBsZXMgZnJvbSB0aGUgdGFibGUKK1NFTEVDVCB3YWxfcmVjb3Jkcy06aHdyIEFTIGR3cjMs IHdhbF9ieXRlcy06aHdiIEFTIGR3YjMsIHdhbF9mcGktOmhmcGkgQVMgZGZwaTMKK0ZST00g cGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQK KworLS1UaGVyZSBhcmUgbm90aGluZyBjaGFuZ2VkCitTRUxFQ1QgOmR3cjM+MCBBUyBkV1Is IDpkZnBpMz0wIEFTIGRGUEksIDpkd2IzPjAgQVMgZFdCOworCistLQorLS0gTm93LCB0aGUg dGFibGUgYW5kIGluZGV4IGlzIGNvbXByZXNzZWQgaW50byB6ZXJvIG51bWJlciBvZiBwYWdl cy4gQ2hlY2sgaXQKKy0tIGluIHZhY3V1bSBleHRlbmRlZCBzdGF0aXN0aWNzLgorLS0gVGhl IHZtX25ld19mcm96ZW5fcGFnZXMsIHBhZ2VzX3NjYW5uZWQgdmFsdWVzIHNob3VsZG4ndCBi ZSBjaGFuZ2VkCistLQorU0VMRUNUIHZ0LnJlbG5hbWUsdm1fbmV3X2Zyb3plbl9wYWdlcy06 ZnAgPSAwIEFTIHZtX25ld19mcm96ZW5fcGFnZXMsdHVwbGVzX2RlbGV0ZWQtOnRkID0gMCBB UyB0dXBsZXNfZGVsZXRlZCxyZWxwYWdlcyAtOnJwID0gMCBBUyByZWxwYWdlcyxwYWdlc19z Y2FubmVkLTpwcyA9IDAgQVMgcGFnZXNfc2Nhbm5lZCxwYWdlc19yZW1vdmVkLTpwciA9IDAg QVMgcGFnZXNfcmVtb3ZlZAorRlJPTSBwZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19j bGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5v aWQ7CisKK0RST1AgVEFCTEUgdmVzdGF0IENBU0NBREU7CitDUkVBVEUgVEFCTEUgdmVzdGF0 ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0g MTApOworCitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSw6c2FtcGxlX3NpemUpIGFzIHg7CitBTkFMWVpFIHZlc3RhdDsKKworLS0gbXVzdCBi ZSBlbXB0eQorU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMsIHZtX25ld192aXNpYmxlX3Bh Z2VzLCByZXZfYWxsX2Zyb3plbl9wYWdlcyxyZXZfYWxsX3Zpc2libGVfcGFnZXMsdm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzCitGUk9NIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMsIHBn X3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0c192YWN1dW1fdGFibGVzLnJlbG5hbWUg PSAndmVzdGF0JyBhbmQgcGdfc3RhdHNfdmFjdXVtX3RhYmxlcy5yZWxpZCA9IHBnX3N0YXRf YWxsX3RhYmxlcy5yZWxpZDsKKworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0Vf TElNSVQgMTI4KSB2ZXN0YXQ7CisKKy0tIGJhY2tlbmQgZGVmcmVlemVkIHBhZ2VzCitTRUxF Q1Qgdm1fbmV3X2Zyb3plbl9wYWdlcyA+IDAgQVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx2bV9u ZXdfdmlzaWJsZV9wYWdlcyA+IDAgQVMgdm1fbmV3X3Zpc2libGVfcGFnZXMsdm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzID4gMCBBUyB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMs cmV2X2FsbF9mcm96ZW5fcGFnZXMgPSAwIEFTIHJldl9hbGxfZnJvemVuX3BhZ2VzLHJldl9h bGxfdmlzaWJsZV9wYWdlcyA9IDAgQVMgcmV2X2FsbF92aXNpYmxlX3BhZ2VzCitGUk9NIHBn X3N0YXRzX3ZhY3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0 c192YWN1dW1fdGFibGVzLnJlbG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3RhdHNfdmFjdXVt X3RhYmxlcy5yZWxpZCA9IHBnX3N0YXRfYWxsX3RhYmxlcy5yZWxpZDsKK1NFTEVDVCB2bV9u ZXdfZnJvemVuX3BhZ2VzIEFTIHBmLCB2bV9uZXdfdmlzaWJsZV9wYWdlcyBBUyBwdix2bV9u ZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgQVMgcHZmLCByZXZfYWxsX2Zyb3plbl9wYWdlcyBB UyBoYWZwLHJldl9hbGxfdmlzaWJsZV9wYWdlcyBBUyBoYXZwCitGUk9NIHBnX3N0YXRzX3Zh Y3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0c192YWN1dW1f dGFibGVzLnJlbG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3RhdHNfdmFjdXVtX3RhYmxlcy5y ZWxpZCA9IHBnX3N0YXRfYWxsX3RhYmxlcy5yZWxpZCBcZ3NldAorCitVUERBVEUgdmVzdGF0 IFNFVCB4ID0geCArIDEwMDE7CitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9M SU1JVCAxMjgpIHZlc3RhdDsKKworU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgPiA6cGYg QVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx2bV9uZXdfdmlzaWJsZV9wYWdlcyA+IDpwdiBBUyB2 bV9uZXdfdmlzaWJsZV9wYWdlcyx2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiA6cHZm IEFTIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyxyZXZfYWxsX2Zyb3plbl9wYWdlcyA+ IDpoYWZwIEFTIHJldl9hbGxfZnJvemVuX3BhZ2VzLHJldl9hbGxfdmlzaWJsZV9wYWdlcyA+ IDpoYXZwIEFTIHJldl9hbGxfdmlzaWJsZV9wYWdlcworRlJPTSBwZ19zdGF0c192YWN1dW1f dGFibGVzLCBwZ19zdGF0X2FsbF90YWJsZXMgV0hFUkUgcGdfc3RhdHNfdmFjdXVtX3RhYmxl cy5yZWxuYW1lID0gJ3Zlc3RhdCcgYW5kIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMucmVsaWQg PSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQ7CitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdl cyBBUyBwZiwgdm1fbmV3X3Zpc2libGVfcGFnZXMgQVMgcHYsIHZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlcyBBUyBwdmYsIHJldl9hbGxfZnJvemVuX3BhZ2VzIEFTIGhhZnAscmV2X2Fs bF92aXNpYmxlX3BhZ2VzIEFTIGhhdnAKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcywg cGdfc3RhdF9hbGxfdGFibGVzIFdIRVJFIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMucmVsbmFt ZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0c192YWN1dW1fdGFibGVzLnJlbGlkID0gcGdfc3Rh dF9hbGxfdGFibGVzLnJlbGlkIFxnc2V0CisKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVS X1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworCistLSB2YWN1dW0gZnJlZXplZCBwYWdlcwor U0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgPSA6cGYgQVMgdm1fbmV3X2Zyb3plbl9wYWdl cyx2bV9uZXdfdmlzaWJsZV9wYWdlcyA9IDpwdiBBUyB2bV9uZXdfdmlzaWJsZV9wYWdlcyx2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPSA6cHZmIEFTIHZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlcywgcmV2X2FsbF9mcm96ZW5fcGFnZXMgPSA6aGFmcCBBUyByZXZfYWxsX2Zy b3plbl9wYWdlcyxyZXZfYWxsX3Zpc2libGVfcGFnZXMgPSA6aGF2cCBBUyByZXZfYWxsX3Zp c2libGVfcGFnZXMKK0ZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcywgcGdfc3RhdF9hbGxf dGFibGVzIFdIRVJFIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQn IGFuZCBwZ19zdGF0c192YWN1dW1fdGFibGVzLnJlbGlkID0gcGdfc3RhdF9hbGxfdGFibGVz LnJlbGlkOworCitEUk9QIFRBQkxFIHZlc3RhdCBDQVNDQURFOworCitzZWxlY3QgY291bnQo KikgZnJvbSBwZ19zdGF0c192YWN1dW1fdGFibGVzIHdoZXJlIHJlbG5hbWUgPSAndmVzdGF0 JzsKKworLS0gLS0gTm93IGNoZWNrIHZhY3V1bSBzdGF0aXN0aWNzIGZvciBjdXJyZW50IGRh dGFiYXNlCistLSBTRUxFQ1QgZGJuYW1lLAorLS0gICAgICAgIGRiX2Jsa3NfaGl0ID4gMCBB UyBkYl9ibGtzX2hpdCwKKy0tICAgICAgICB0b3RhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIHRv dGFsX2Jsa3NfZGlydGllZCwKKy0tICAgICAgICB0b3RhbF9ibGtzX3dyaXR0ZW4gPiAwIEFT IHRvdGFsX2Jsa3Nfd3JpdHRlbiwKKy0tICAgICAgICB3YWxfcmVjb3JkcyA+IDAgQVMgd2Fs X3JlY29yZHMsCistLSAgICAgICAgd2FsX2ZwaSA+IDAgQVMgd2FsX2ZwaSwKKy0tICAgICAg ICB3YWxfYnl0ZXMgPiAwIEFTIHdhbF9ieXRlcywKKy0tICAgICAgICB0b3RhbF90aW1lID4g MCBBUyB0b3RhbF90aW1lCistLSBGUk9NCistLSBwZ19zdGF0X3ZhY3V1bV9kYXRhYmFzZQor LS0gV0hFUkUgZGJuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpOworCistLSAtLSBlbnN1cmUg cGVuZGluZyBzdGF0cyBhcmUgZmx1c2hlZAorLS0gU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOworCistLSBDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworLS0gSU5TRVJUIElO VE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXpl KSBhcyB4OworLS0gQU5BTFlaRSB2ZXN0YXQ7CistLSBVUERBVEUgdmVzdGF0IFNFVCB4ID0g MTAwMDE7CistLSBWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgp IHZlc3RhdDsKKworLS0gXGMgcmVncmVzc2lvbl9zdGF0aXN0aWNfdmFjdXVtX2RiMTsKKy0t IENSRUFURSBFWFRFTlNJT04gdmFjdXVtX3N0YXRpc3RpY3M7CisKKy0tIC0tIE5vdyBjaGVj ayB2YWN1dW0gc3RhdGlzdGljcyBmb3IgcG9zdGdyZXMgZGF0YWJhc2UgZnJvbSBhbm90aGVy IGRhdGFiYXNlCistLSBTRUxFQ1QgZGJuYW1lLAorLS0gICAgICAgIGRiX2Jsa3NfaGl0ID4g MCBBUyBkYl9ibGtzX2hpdCwKKy0tICAgICAgICB0b3RhbF9ibGtzX2RpcnRpZWQgPiAwIEFT IHRvdGFsX2Jsa3NfZGlydGllZCwKKy0tICAgICAgICB0b3RhbF9ibGtzX3dyaXR0ZW4gPiAw IEFTIHRvdGFsX2Jsa3Nfd3JpdHRlbiwKKy0tICAgICAgICB3YWxfcmVjb3JkcyA+IDAgQVMg d2FsX3JlY29yZHMsCistLSAgICAgICAgd2FsX2ZwaSA+IDAgQVMgd2FsX2ZwaSwKKy0tICAg ICAgICB3YWxfYnl0ZXMgPiAwIEFTIHdhbF9ieXRlcywKKy0tICAgICAgICB0b3RhbF90aW1l ID4gMCBBUyB0b3RhbF90aW1lCistLSBGUk9NCistLSBwZ19zdGF0X3ZhY3V1bV9kYXRhYmFz ZQorLS0gV0hFUkUgZGJuYW1lID0gJ3JlZ3Jlc3Npb25fc3RhdGlzdGljX3ZhY3V1bV9kYic7 CisKKy0tIFxjIHJlZ3Jlc3Npb25fc3RhdGlzdGljX3ZhY3V1bV9kYgorCistLSBEUk9QIFRB QkxFIHZlc3RhdCBDQVNDQURFOworCistLSBcYyByZWdyZXNzaW9uX3N0YXRpc3RpY192YWN1 dW1fZGIxOworLS0gU0VMRUNUIGNvdW50KCopCistLSBGUk9NIHBnX2RhdGFiYXNlIGQKKy0t IENST1NTIEpPSU4gcGdfc3RhdF9nZXRfdmFjdXVtX3RhYmxlcygwKQorLS0gV0hFUkUgb2lk ID0gMDsgLS0gbXVzdCBiZSAwCisKK1xjIHBvc3RncmVzCitEUk9QIERBVEFCQVNFIHJlZ3Jl c3Npb25fc3RhdGlzdGljX3ZhY3V1bV9kYjE7CitEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25f c3RhdGlzdGljX3ZhY3V1bV9kYjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS92YWN1dW1fc3RhdGlzdGljcy0tMS4wLnNxbCBiL3ZhY3V1bV9zdGF0aXN0aWNz LS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNzhmM2EK LS0tIC9kZXYvbnVsbAorKysgYi92YWN1dW1fc3RhdGlzdGljcy0tMS4wLnNxbApAQCAtMCww ICsxLDE5MSBAQAorLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwg cmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVY VEVOU0lPTiB2YWN1dW1fc3RhdGlzdGljcyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisK Ky0tIHNjaGVtYTogZXh0dmFjCitDUkVBVEUgU0NIRU1BIElGIE5PVCBFWElTVFMgZXh0dmFj OworCisKKy0tIEluIHlvdXIgZXh0ZW5zaW9uJ3MgLnNxbCBpbnN0YWxsIHNjcmlwdAorQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0dmFjX3Jlc2V0X2VudHJ5KAorICAgIGRib2lk IG9pZCwKKyAgICByZWxpZCBvaWQsCisgICAgdHlwZSAgaW50NAorKQorUkVUVVJOUyB2b2lk CitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2V4dHZhY19yZXNldF9lbnRyeScKK0xBTkdVQUdF IEMKK1NUUklDVAorUEFSQUxMRUwgU0FGRTsKKworLS0KKy0tIFNob3cgZXh0ZW5kZWQgY3Vt dWxhdGl2ZSBzdGF0aXN0aWNzIG9uIGEgdmFjdXVtIG9wZXJhdGlvbiBvdmVyIGFsbCB0YWJs ZXMgYW5kCistLSBkYXRhYmFzZXMgb2YgdGhlIGluc3RhbmNlLgorLS0gVXNlIEludmFsaWQg T2lkICIwIiBhcyBhbiBpbnB1dCByZWxhdGlvbiBpZCB0byBnZXQgc3RhdCBvbiBlYWNoIHRh YmxlIGluIGEKKy0tIGRhdGFiYXNlLgorLS0KK0NSRUFURSBGVU5DVElPTiBwZ19zdGF0c19n ZXRfdmFjdXVtX3RhYmxlcygKKyAgICBJTiAgZGJvaWQgb2lkLAorICAgIElOICByZWxvaWQg b2lkLAorCisgICAgT1VUIHJlbGlkIG9pZCwKKworICAgIE9VVCB0b3RhbF9ibGtzX3JlYWQg YmlnaW50LAorICAgIE9VVCB0b3RhbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHRvdGFs X2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3Nfd3JpdHRlbiBiaWdp bnQsCisKKyAgICBPVVQgd2FsX3JlY29yZHMgYmlnaW50LAorICAgIE9VVCB3YWxfZnBpIGJp Z2ludCwKKyAgICBPVVQgd2FsX2J5dGVzIG51bWVyaWMsCisKKyAgICBPVVQgYmxrX3JlYWRf dGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBibGtfd3JpdGVfdGltZSBkb3VibGUg cHJlY2lzaW9uLAorICAgIE9VVCBkZWxheV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAg T1VUIHRvdGFsX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKworICAgIE9VVCB3cmFwYXJvdW5k X2ZhaWxzYWZlX2NvdW50IGludGVnZXIsCisKKyAgICBPVVQgcmVsX2Jsa3NfcmVhZCBiaWdp bnQsCisgICAgT1VUIHJlbF9ibGtzX2hpdCAgYmlnaW50LAorCisgICAgT1VUIHR1cGxlc19k ZWxldGVkIGJpZ2ludCwKKyAgICBPVVQgcGFnZXNfc2Nhbm5lZCBiaWdpbnQsCisgICAgT1VU IHBhZ2VzX3JlbW92ZWQgYmlnaW50LAorICAgIE9VVCB2bV9uZXdfZnJvemVuX3BhZ2VzIGJp Z2ludCwKKyAgICBPVVQgdm1fbmV3X3Zpc2libGVfcGFnZXMgYmlnaW50LAorICAgIE9VVCB2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgYmlnaW50LAorICAgIE9VVCB0dXBsZXNfZnJv emVuIGJpZ2ludCwKKyAgICBPVVQgcmVjZW50bHlfZGVhZF90dXBsZXMgYmlnaW50LAorICAg IE9VVCBpbmRleF92YWN1dW1fY291bnQgYmlnaW50LAorICAgIE9VVCBtaXNzZWRfZGVhZF9w YWdlcyBiaWdpbnQsCisgICAgT1VUIG1pc3NlZF9kZWFkX3R1cGxlcyBiaWdpbnQKKykKK1JF VFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX3N0YXRzX2dl dF92YWN1dW1fdGFibGVzJworTEFOR1VBR0UgQworU1RSSUNUCitWT0xBVElMRTsKKworR1JB TlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zdGF0c19nZXRfdmFjdXVtX3RhYmxlcyBUTyBQ VUJMSUM7CisKKy0tIFRhYmxlcyB2aWV3CitEUk9QIFZJRVcgSUYgRVhJU1RTIHBnX3N0YXRz X3ZhY3V1bV90YWJsZXM7CisKK0NSRUFURSBWSUVXIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMg QVMKK1NFTEVDVAorICByZWwub2lkICAgICAgICAgICAgICAgICAgICAgICAgIEFTIHJlbGlk LAorICBucy5uc3BuYW1lICAgICAgICAgICAgICAgICAgICAgIEFTICJzY2hlbWEiLAorICBy ZWwucmVsbmFtZSAgICAgICAgICAgICAgICAgICAgIEFTIHJlbG5hbWUsCisKKyAgc3RhdHMu dG90YWxfYmxrc19yZWFkLAorICBzdGF0cy50b3RhbF9ibGtzX2hpdCwKKyAgc3RhdHMudG90 YWxfYmxrc19kaXJ0aWVkLAorICBzdGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4sCisKKyAgc3Rh dHMud2FsX3JlY29yZHMsCisgIHN0YXRzLndhbF9mcGksCisgIHN0YXRzLndhbF9ieXRlcywK KworICBzdGF0cy5ibGtfcmVhZF90aW1lLAorICBzdGF0cy5ibGtfd3JpdGVfdGltZSwKKyAg c3RhdHMuZGVsYXlfdGltZSwKKyAgc3RhdHMudG90YWxfdGltZSwKKworICBzdGF0cy53cmFw YXJvdW5kX2ZhaWxzYWZlX2NvdW50LAorCisgIHN0YXRzLnJlbF9ibGtzX3JlYWQsCisgIHN0 YXRzLnJlbF9ibGtzX2hpdCwKKworICBzdGF0cy50dXBsZXNfZGVsZXRlZCwKKyAgc3RhdHMu cGFnZXNfc2Nhbm5lZCwKKyAgc3RhdHMucGFnZXNfcmVtb3ZlZCwKKyAgc3RhdHMudm1fbmV3 X2Zyb3plbl9wYWdlcywKKyAgc3RhdHMudm1fbmV3X3Zpc2libGVfcGFnZXMsCisgIHN0YXRz LnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcywKKyAgc3RhdHMudHVwbGVzX2Zyb3plbiwK KyAgc3RhdHMucmVjZW50bHlfZGVhZF90dXBsZXMsCisgIHN0YXRzLmluZGV4X3ZhY3V1bV9j b3VudCwKKyAgc3RhdHMubWlzc2VkX2RlYWRfcGFnZXMsCisgIHN0YXRzLm1pc3NlZF9kZWFk X3R1cGxlcworRlJPTSBwZ19jbGFzcyByZWwKK0pPSU4gcGdfbmFtZXNwYWNlIG5zIE9OIG5z Lm9pZCA9IHJlbC5yZWxuYW1lc3BhY2UKK0NST1NTIEpPSU4gTEFURVJBTCBwZ19zdGF0c19n ZXRfdmFjdXVtX3RhYmxlcygKKyAgKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRhYmFzZSBXSEVS RSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSwKKyAgcmVsLm9pZAorKSBBUyBzdGF0 cworV0hFUkUgcmVsLnJlbGtpbmQgPSAncic7CisKKworQ1JFQVRFIEZVTkNUSU9OIHBnX3N0 YXRzX2dldF92YWN1dW1faW5kZXhlcygKKyAgICBJTiAgZGJvaWQgb2lkLAorICAgIElOICBy ZWxvaWQgb2lkLAorCisgICAgT1VUIHJlbGlkIG9pZCwKKworICAgIE9VVCB0b3RhbF9ibGtz X3JlYWQgYmlnaW50LAorICAgIE9VVCB0b3RhbF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VU IHRvdGFsX2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VUIHRvdGFsX2Jsa3Nfd3JpdHRl biBiaWdpbnQsCisKKyAgICBPVVQgd2FsX3JlY29yZHMgYmlnaW50LAorICAgIE9VVCB3YWxf ZnBpIGJpZ2ludCwKKyAgICBPVVQgd2FsX2J5dGVzIG51bWVyaWMsCisKKyAgICBPVVQgYmxr X3JlYWRfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBibGtfd3JpdGVfdGltZSBk b3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBkZWxheV90aW1lIGRvdWJsZSBwcmVjaXNpb24s CisgICAgT1VUIHRvdGFsX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKworICAgIE9VVCB3cmFw YXJvdW5kX2ZhaWxzYWZlX2NvdW50IGludGVnZXIsCisKKyAgICBPVVQgcmVsX2Jsa3NfcmVh ZCBiaWdpbnQsCisgICAgT1VUIHJlbF9ibGtzX2hpdCAgYmlnaW50LAorCisgICAgT1VUIHR1 cGxlc19kZWxldGVkIGJpZ2ludCwKKyAgICBPVVQgcGFnZXNfZGVsZXRlZCBiaWdpbnQKKykK K1JFVFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX3N0YXRz X2dldF92YWN1dW1faW5kZXhlcycKK0xBTkdVQUdFIEMKK1NUUklDVAorVk9MQVRJTEU7CisK K0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRleGVz IFRPIFBVQkxJQzsKKworLS0gSW5kZXhlcyB2aWV3CitEUk9QIFZJRVcgSUYgRVhJU1RTIHBn X3N0YXRzX3ZhY3V1bV9pbmRleGVzOworCitDUkVBVEUgVklFVyBwZ19zdGF0c192YWN1dW1f aW5kZXhlcyBBUworU0VMRUNUCisgIHJlbC5vaWQgICAgICAgICAgICAgICAgICAgICAgICAg QVMgcmVsaWQsCisgIG5zLm5zcG5hbWUgICAgICAgICAgICAgICAgICAgICAgQVMgInNjaGVt YSIsCisgIHJlbC5yZWxuYW1lICAgICAgICAgICAgICAgICAgICAgQVMgcmVsbmFtZSwKKwor ICBzdGF0cy50b3RhbF9ibGtzX3JlYWQsCisgIHN0YXRzLnRvdGFsX2Jsa3NfaGl0LAorICBz dGF0cy50b3RhbF9ibGtzX2RpcnRpZWQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRlbiwK KworICBzdGF0cy53YWxfcmVjb3JkcywKKyAgc3RhdHMud2FsX2ZwaSwKKyAgc3RhdHMud2Fs X2J5dGVzLAorCisgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisgIHN0YXRzLmJsa193cml0ZV90 aW1lLAorICBzdGF0cy5kZWxheV90aW1lLAorICBzdGF0cy50b3RhbF90aW1lLAorCisgIHN0 YXRzLndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQsCisKKyAgc3RhdHMucmVsX2Jsa3NfcmVh ZCwKKyAgc3RhdHMucmVsX2Jsa3NfaGl0LAorCisgIHN0YXRzLnR1cGxlc19kZWxldGVkLAor ICBzdGF0cy5wYWdlc19kZWxldGVkCitGUk9NIHBnX2NsYXNzIHJlbAorSk9JTiBwZ19uYW1l c3BhY2UgbnMgT04gbnMub2lkID0gcmVsLnJlbG5hbWVzcGFjZQorQ1JPU1MgSk9JTiBMQVRF UkFMIHBnX3N0YXRzX2dldF92YWN1dW1faW5kZXhlcygKKyAgKFNFTEVDVCBvaWQgRlJPTSBw Z19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSwKKyAgcmVs Lm9pZAorKSBBUyBzdGF0cworV0hFUkUgcmVsLnJlbGtpbmQgPSAnaSc7ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdmFjdXVtX3N0YXRpc3RpY3MuYyBiL3Zh Y3V1bV9zdGF0aXN0aWNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YmJhNzFmMQotLS0gL2Rldi9udWxsCisrKyBiL3ZhY3V1bV9zdGF0aXN0aWNzLmMKQEAgLTAs MCArMSw2MzYgQEAKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAicGdzdGF0 LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNs dWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVk ZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5j bHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2lu Y2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Ns YXNzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKKy8qIFB1YmxpYyBtb2R1 bGUgaG9va3MgKi8KK3ZvaWQgX1BHX2luaXQodm9pZCk7CisjaWZkZWYgUEdfTU9EVUxFX01B R0lDCitQR19NT0RVTEVfTUFHSUM7CisjZW5kaWYKKworI2RlZmluZSBTSl9OT0RFTkFNRQkJ IlZhY3V1bVN0YXRpc3RpY3MiCisKKy8qIC0tLSBHVUNzIC0tLSAqLworc3RhdGljIGJvb2wg ZXZjX2VuYWJsZWQgPSB0cnVlOworc3RhdGljIGludCAgZXZjX21heF9lbnRyaWVzID0gMTAw MDA7CisKKy8qIC0tLSBIb29rIGNoYWluaW5nIC0tLSAqLworc3RhdGljIHNobWVtX3JlcXVl c3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKK3N0YXRpYyBz aG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7 CitzdGF0aWMgc2V0X3JlcG9ydF92YWN1dW1faG9va190eXBlIHByZXZfcmVwb3J0X3ZhY3V1 bV9ob29rID0gTlVMTDsKK3N0YXRpYyBvYmplY3RfYWNjZXNzX2hvb2tfdHlwZQlwcmV2X29i amVjdF9hY2Nlc3NfaG9vazsKKworLyogLS0tIE5hbWVzIC0tLSAqLworI2RlZmluZSBFVkNf U1RBVEVfTkFNRSAgICAiZXh0dmFjX3NoYXJlZF9zdGF0ZSIKKyNkZWZpbmUgRVZDX0hBU0hf TkFNRSAgICAgImV4dHZhY19oYXNoIgorI2RlZmluZSBFVkNfVFJBTkNIRV9OQU1FICAiZXh0 dmFjX3RyYW5jaGUiCisKKy8qIC0tLSBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtLS0gKi8KK3N0 YXRpYyBTaXplIGV2Y19tZW1zaXplKHZvaWQpOworc3RhdGljIHZvaWQgZXZjX3NobWVtX3Jl cXVlc3Qodm9pZCk7CitzdGF0aWMgdm9pZCBldmNfc2htZW1fc3RhcnR1cCh2b2lkKTsKK3N0 YXRpYyB2b2lkIGV2Y19kcm9wX2FjY2Vzc19ob29rKE9iamVjdEFjY2Vzc1R5cGUgYWNjZXNz LAorCQkJCQkJCQkgT2lkIGNsYXNzSWQsCisJCQkJCQkJCSBPaWQgb2JqZWN0SWQsCisJCQkJ CQkJCSBpbnQgc3ViSWQsCisJCQkJCQkJCSB2b2lkICphcmcpOworCisvKiAtLS0tIEtleSAv IEVudHJ5IC0tLS0gKi8KKwordHlwZWRlZiBzdHJ1Y3QgRXh0VmFjS2V5Cit7CisJT2lkICAg ICBkYm9pZDsgICAgICAvKiBJbnZhbGlkT2lkIGZvciBzaGFyZWQgY2F0YWxvZ3MgKi8KKwlP aWQgICAgIHJlbGlkOyAgICAgIC8qIHJlbGF0aW9uIE9JRCAqLworCXVpbnQ4ICAgdHlwZTsg ICAgICAgLyogRXh0VmFjUmVwb3J0VHlwZSAoaGVhcCAvIGluZGV4IC8g4oCmKSAqLworfSBF eHRWYWNLZXk7CisKK3R5cGVkZWYgc3RydWN0IEV4dFZhY0VudHJ5Cit7CisJLyogaGFzaCBr ZXkgTVVTVCBiZSBmaXJzdCB3aGVuIHVzaW5nIEhBU0hfQkxPQlMgKi8KKwlFeHRWYWNLZXkg ICAgICAgICAgICAgICAgICAgICBrZXk7CisKKwkvKiBzdGF0cyBwYXlsb2FkICovCisJUGdT dGF0X1ZhY3V1bVJlbGF0aW9uQ291bnRzICAgc3RhdHM7CisKKwkvKiBtZXRhZGF0YSAqLwor CVRpbWVzdGFtcFR6ICAgICAgICAgICAgICAgICAgZmlyc3Rfc2VlbjsKKwlUaW1lc3RhbXBU eiAgICAgICAgICAgICAgICAgIHN0YXRzX3Jlc2V0OworfSBFeHRWYWNFbnRyeTsKKwordHlw ZWRlZiBzdHJ1Y3QgRXh0VmFjU2hhcmVkU3RhdGUKK3sKKwlMV0xvY2sgbG9jazsKKwlMV0xv Y2sgZXZjX2xvY2tfaGFzaDsKKworCWRzYV9oYW5kbGUJZXZjX2RzYV9oYW5kbGVyOworCWJv b2wgZXZjX2NoYW5nZWQ7Cit9IEV4dFZhY1NoYXJlZFN0YXRlOworCitzdGF0aWMgSFRBQiAq ZXZjX2hhc2ggPSBOVUxMOworc3RhdGljIEV4dFZhY1NoYXJlZFN0YXRlICpldmMgPSBOVUxM OworCitzdGF0aWMgdm9pZAorcGdzdGF0X3JlcG9ydF92YWN1dW1fZXh0c3RhdHMoT2lkIHRh Ymxlb2lkLCBib29sIHNoYXJlZCwKKwkJCQkJCQkJICBQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMgKnBhcmFtcyk7CisKKyNkZWZpbmUgQUNDVU1VTEFURV9GSUVMRChmaWVsZCkgZHN0 LT5maWVsZCArPSBzcmMtPmZpZWxkOworCisjZGVmaW5lIEFDQ1VNVUxBVEVfU1VCRklFTEQo c3Vic3RydWN0LCBmaWVsZCkgXAorICAgIChkc3QtPnN1YnN0cnVjdC5maWVsZCArPSBzcmMt PnN1YnN0cnVjdC5maWVsZCkKKworc3RhdGljIGlubGluZSB2b2lkCitwZ3N0YXRfYWNjdW11 bGF0ZV9jb21tb24oUGdTdGF0X0NvbW1vbkNvdW50cyAqZHN0LCBjb25zdCBQZ1N0YXRfQ29t bW9uQ291bnRzICpzcmMpCit7CisJQUNDVU1VTEFURV9GSUVMRCh0b3RhbF9ibGtzX3JlYWQp OworCUFDQ1VNVUxBVEVfRklFTEQodG90YWxfYmxrc19oaXQpOworCUFDQ1VNVUxBVEVfRklF TEQodG90YWxfYmxrc19kaXJ0aWVkKTsKKwlBQ0NVTVVMQVRFX0ZJRUxEKHRvdGFsX2Jsa3Nf d3JpdHRlbik7CisKKwlBQ0NVTVVMQVRFX0ZJRUxEKGJsa3NfZmV0Y2hlZCk7CisJQUNDVU1V TEFURV9GSUVMRChibGtzX2hpdCk7CisKKwlBQ0NVTVVMQVRFX0ZJRUxEKHdhbF9yZWNvcmRz KTsKKwlBQ0NVTVVMQVRFX0ZJRUxEKHdhbF9mcGkpOworCUFDQ1VNVUxBVEVfRklFTEQod2Fs X2J5dGVzKTsKKworCUFDQ1VNVUxBVEVfRklFTEQoYmxrX3JlYWRfdGltZSk7CisJQUNDVU1V TEFURV9GSUVMRChibGtfd3JpdGVfdGltZSk7CisJQUNDVU1VTEFURV9GSUVMRChkZWxheV90 aW1lKTsKKwlBQ0NVTVVMQVRFX0ZJRUxEKHRvdGFsX3RpbWUpOworCisJQUNDVU1VTEFURV9G SUVMRCh3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50KTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV9leHR2YWNfc3RhdHNfcmVsYXRpb25zKFBnU3RhdF9W YWN1dW1SZWxhdGlvbkNvdW50cyAqZHN0LCBjb25zdCBQZ1N0YXRfVmFjdXVtUmVsYXRpb25D b3VudHMgKnNyYykKK3sKKyAgICBpZiAoZHN0LT50eXBlID09IFBHU1RBVF9FWFRWQUNfSU5W QUxJRCkKKyAgICAgICAgZHN0LT50eXBlID0gc3JjLT50eXBlOworCisgICAgLy9Bc3NlcnQo c3JjLT50eXBlICE9IFBHU1RBVF9FWFRWQUNfSU5WQUxJRCAmJiBzcmMtPnR5cGUgIT0gUEdT VEFUX0VYVFZBQ19EQiAmJiBzcmMtPnR5cGUgPT0gZHN0LT50eXBlKTsKKworICAgIHBnc3Rh dF9hY2N1bXVsYXRlX2NvbW1vbigmZHN0LT5jb21tb24sICZzcmMtPmNvbW1vbik7CisKKyAg ICBBQ0NVTVVMQVRFX1NVQkZJRUxEKGNvbW1vbiwgYmxrc19mZXRjaGVkKTsKKyAgICBBQ0NV TVVMQVRFX1NVQkZJRUxEKGNvbW1vbiwgYmxrc19oaXQpOworCisgICAgaWYgKGRzdC0+dHlw ZSA9PSBQR1NUQVRfRVhUVkFDX1RBQkxFKQorICAgIHsKKyAgICAgICAgQUNDVU1VTEFURV9T VUJGSUVMRCh0YWJsZSwgdHVwbGVzX2RlbGV0ZWQpOworICAgICAgICBBQ0NVTVVMQVRFX1NV QkZJRUxEKHRhYmxlLCBwYWdlc19zY2FubmVkKTsKKyAgICAgICAgQUNDVU1VTEFURV9TVUJG SUVMRCh0YWJsZSwgcGFnZXNfcmVtb3ZlZCk7CisgICAgICAgIEFDQ1VNVUxBVEVfU1VCRklF TEQodGFibGUsIHZtX25ld19mcm96ZW5fcGFnZXMpOworICAgICAgICBBQ0NVTVVMQVRFX1NV QkZJRUxEKHRhYmxlLCB2bV9uZXdfdmlzaWJsZV9wYWdlcyk7CisgICAgICAgIEFDQ1VNVUxB VEVfU1VCRklFTEQodGFibGUsIHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyk7CisgICAg ICAgIEFDQ1VNVUxBVEVfU1VCRklFTEQodGFibGUsIHR1cGxlc19mcm96ZW4pOworICAgICAg ICBBQ0NVTVVMQVRFX1NVQkZJRUxEKHRhYmxlLCByZWNlbnRseV9kZWFkX3R1cGxlcyk7Cisg ICAgICAgIEFDQ1VNVUxBVEVfU1VCRklFTEQodGFibGUsIGluZGV4X3ZhY3V1bV9jb3VudCk7 CisgICAgICAgIEFDQ1VNVUxBVEVfU1VCRklFTEQodGFibGUsIG1pc3NlZF9kZWFkX3BhZ2Vz KTsKKyAgICAgICAgQUNDVU1VTEFURV9TVUJGSUVMRCh0YWJsZSwgbWlzc2VkX2RlYWRfdHVw bGVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZHN0LT50eXBlID09IFBHU1RBVF9FWFRWQUNf SU5ERVgpCisgICAgeworICAgICAgICBBQ0NVTVVMQVRFX1NVQkZJRUxEKHRhYmxlLCB0dXBs ZXNfZGVsZXRlZCk7CisgICAgICAgIEFDQ1VNVUxBVEVfU1VCRklFTEQoaW5kZXgsIHBhZ2Vz X2RlbGV0ZWQpOworICAgIH0KK30KKwordm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwkvKgor CSAqIEluIG9yZGVyIHRvIGNyZWF0ZSBvdXIgc2hhcmVkIG1lbW9yeSBhcmVhLCB3ZSBoYXZl IHRvIGJlIGxvYWRlZCB2aWEKKwkgKiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMuICBJZiBu b3QsIGZhbGwgb3V0IHdpdGhvdXQgaG9va2luZyBpbnRvIGFueSBvZgorCSAqIHRoZSBtYWlu IHN5c3RlbS4gIChXZSBkb24ndCB0aHJvdyBlcnJvciBoZXJlIGJlY2F1c2UgaXQgc2VlbXMg dXNlZnVsIHRvCisJICogYWxsb3cgdGhlIHZhY3V1bV9zdGF0aXN0aWNzIGZ1bmN0aW9ucyB0 byBiZSBjcmVhdGVkIGV2ZW4gd2hlbiB0aGUKKwkgKiBtb2R1bGUgaXNuJ3QgYWN0aXZlLiAg VGhlIGZ1bmN0aW9ucyBtdXN0IHByb3RlY3QgdGhlbXNlbHZlcyBhZ2FpbnN0CisJICogYmVp bmcgY2FsbGVkIHRoZW4sIGhvd2V2ZXIuKQorCSAqLworCWlmICghcHJvY2Vzc19zaGFyZWRf cHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCisJCXJldHVybjsKKworCisJLyogR1VD cyAqLworCURlZmluZUN1c3RvbUJvb2xWYXJpYWJsZSgidmFjdXVtX3N0YXRpc3RpY3MuZW5h YmxlZCIsCisJCQkJCQkJICJFbmFibGUgZXh0ZW5zaW9uIHZhY3V1bSBzdGF0aXN0aWNzIGNv bGxlY3Rpb24uIiwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgJmV2Y19lbmFibGVkLAorCQkJ CQkJCSB0cnVlLAorCQkJCQkJCSBQR0NfU1VTRVQsIDAsCisJCQkJCQkJIE5VTEwsIE5VTEws IE5VTEwpOworCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoInZhY3V1bV9zdGF0aXN0aWNz Lm1heF9lbnRyaWVzIiwKKwkJCQkJCQkiTWF4aW11bSBudW1iZXIgb2YgaGFzaCB0YWJsZSBl bnRyaWVzLiIsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQkmZXZjX21heF9lbnRyaWVzLAorCQkJ CQkJCTEwMDAwLCAgIC8qIGRlZmF1bHQgKi8KKwkJCQkJCQkxMDAsICAgICAvKiBtaW4gKi8K KwkJCQkJCQlJTlRfTUFYIC8gMiwgLyogbWF4ICovCisJCQkJCQkJUEdDX1BPU1RNQVNURVIs IDAsCisJCQkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CisKKwlNYXJrR1VDUHJlZml4UmVzZXJ2 ZWQoU0pfTk9ERU5BTUUpOworCisJLyogQ2hhaW4gc2htZW0gaG9va3MgKi8KKwlwcmV2X3No bWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKKwlzaG1lbV9yZXF1ZXN0 X2hvb2sgPSBldmNfc2htZW1fcmVxdWVzdDsKKworCXByZXZfc2htZW1fc3RhcnR1cF9ob29r ID0gc2htZW1fc3RhcnR1cF9ob29rOworCXNobWVtX3N0YXJ0dXBfaG9vayA9IGV2Y19zaG1l bV9zdGFydHVwOworCisJLyogSWYgeW91IHBpZ2d5YmFjayBvbiBwZ3N0YXQgdmFjdXVtIHJl cG9ydCBob29rLCBjaGFpbiBpdCBoZXJlICovCisJcHJldl9yZXBvcnRfdmFjdXVtX2hvb2sg PSBzZXRfcmVwb3J0X3ZhY3V1bV9ob29rOworCXNldF9yZXBvcnRfdmFjdXVtX2hvb2sgPSBw Z3N0YXRfcmVwb3J0X3ZhY3V1bV9leHRzdGF0czsKKworCXByZXZfb2JqZWN0X2FjY2Vzc19o b29rCT0gb2JqZWN0X2FjY2Vzc19ob29rOworCW9iamVjdF9hY2Nlc3NfaG9vawk9IGV2Y19k cm9wX2FjY2Vzc19ob29rOworfQorCitzdGF0aWMgU2l6ZQorZXZjX21lbXNpemUodm9pZCkK K3sKKwlTaXplIHN6ID0gMDsKKworCS8qIHNoYXJlZCBzdGF0ZSBoZWFkZXIgKi8KKwlzeiA9 IE1BWEFMSUdOKHNpemVvZihFeHRWYWNTaGFyZWRTdGF0ZSkpOworCisJLyogZHluYWhhc2gg YnVja2V0cyArIGVudHJpZXMgKi8KKwlzeiA9IGFkZF9zaXplKHN6LAorCQloYXNoX2VzdGlt YXRlX3NpemUoZXZjX21heF9lbnRyaWVzLCBzaXplb2YoRXh0VmFjRW50cnkpKSk7CisKKwly ZXR1cm4gc3o7Cit9CisKK3N0YXRpYyB2b2lkCitldmNfc2htZW1fcmVxdWVzdCh2b2lkKQor eworCWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9vaykKKwkJcHJldl9zaG1lbV9yZXF1ZXN0 X2hvb2soKTsKKworCS8qIEFzayBwb3N0bWFzdGVyIGZvciBvdXIgbWVtb3J5IHNsaWNlICov CisJUmVxdWVzdEFkZGluU2htZW1TcGFjZShldmNfbWVtc2l6ZSgpKTsKK30KKworc3RhdGlj IHZvaWQKK2V2Y19zaG1lbV9zdGFydHVwKHZvaWQpCit7CisJSEFTSENUTCBjdGw7CisJYm9v bCBmb3VuZDsKKworCWlmIChwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaykKKwkJcHJldl9zaG1l bV9zdGFydHVwX2hvb2soKTsKKworCWV2YyA9IE5VTEw7CisJZXZjX2hhc2ggPSBOVUxMOwor CisJTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSk7CisK KwkvKiBTaGFyZWQgc3RhdGUgaGVhZGVyICovCisJZXZjID0gU2htZW1Jbml0U3RydWN0KEVW Q19TVEFURV9OQU1FLAorCQkJCQkJICBzaXplb2YoRXh0VmFjU2hhcmVkU3RhdGUpLAorCQkJ CQkJICAmZm91bmQpOworCisJLyogRmlyc3QgdGltZSBvbmx5OiByZXNvbHZlIG91ciB0cmFu Y2hlIHJvb3QgKG9wdGlvbmFsIHRvIHN0b3JlKSAqLworCWlmICghZm91bmQpCisJeworCQll dmMtPmV2Y19kc2FfaGFuZGxlciA9IERTTV9IQU5ETEVfSU5WQUxJRDsKKwkJCisJCWV2Yy0+ ZXZjX2NoYW5nZWQgPSBmYWxzZTsKKworCQlMV0xvY2tJbml0aWFsaXplKCZldmMtPmxvY2ss IExXTG9ja05ld1RyYW5jaGVJZCgpKTsKKwkJTFdMb2NrSW5pdGlhbGl6ZSgmZXZjLT5ldmNf bG9ja19oYXNoLCBMV0xvY2tOZXdUcmFuY2hlSWQoKSk7CisJfQorCisJLyogZHluYWhhc2gg cGFyYW1ldGVycyAqLworCWN0bC5rZXlzaXplID0gc2l6ZW9mKEV4dFZhY0tleSk7CisJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihFeHRWYWNFbnRyeSk7CisJZXZjX2hhc2ggPSBTaG1lbUlu aXRIYXNoKEVWQ19IQVNIX05BTUUsIGV2Y19tYXhfZW50cmllcywgZXZjX21heF9lbnRyaWVz LAorCQkJCQkJCSAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisKKwlMV0xvY2tS ZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CisKKwlMV0xvY2tSZWdpc3RlclRyYW5jaGUo ZXZjLT5sb2NrLnRyYW5jaGUsIEVWQ19UUkFOQ0hFX05BTUUpOworCUxXTG9ja1JlZ2lzdGVy VHJhbmNoZShldmMtPmV2Y19sb2NrX2hhc2gudHJhbmNoZSwgRVZDX1RSQU5DSEVfTkFNRSk7 CisKKwkvL2lmICghSXNVbmRlclBvc3RtYXN0ZXIgJiYgIWZvdW5kKQorfQorCitzdGF0aWMg RXh0VmFjRW50cnkgKgorZXZjX3N0b3JlKE9pZCBkYm9pZCwgT2lkIHJlbGlkLCBib29sIHNo YXJlZCwgdWludDggdHlwZSwKKwkJICBQZ1N0YXRfVmFjdXVtUmVsYXRpb25Db3VudHMgKmNv dW50cykKK3sKKwlib29sCQl0YmxPdmVyZmxvdzsKKwlIQVNIQUNUSU9OCWFjdGlvbjsKKwlF eHRWYWNFbnRyeSAqZTsKKwlib29sIGZvdW5kID0gZmFsc2U7CisJRXh0VmFjS2V5IGtleSA9 IHsgLmRib2lkID0gZGJvaWQsIC5yZWxpZCA9IHJlbGlkLCAudHlwZSA9IHR5cGUgfTsKKwor CWlmICghZXZjX2VuYWJsZWQgfHwgZXZjX2hhc2ggPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7 CisKKwlpZiAoc2hhcmVkKQorCQlkYm9pZCA9IEludmFsaWRPaWQ7CisKKwlBc3NlcnQoIUxX TG9ja0hlbGRCeU1lKCZldmMtPmV2Y19sb2NrX2hhc2gpKTsKKworCUxXTG9ja0FjcXVpcmUo JmV2Yy0+ZXZjX2xvY2tfaGFzaCwgTFdfRVhDTFVTSVZFKTsKKworCXRibE92ZXJmbG93ID0g aGFzaF9nZXRfbnVtX2VudHJpZXMoZXZjX2hhc2gpIDwgZXZjX21heF9lbnRyaWVzID8gZmFs c2UgOiB0cnVlOworCisJaWYgKCF0YmxPdmVyZmxvdykKKwkJYWN0aW9uID0gdGJsT3ZlcmZs b3cgPyBIQVNIX0ZJTkQgOiBIQVNIX0VOVEVSOworCisJZSA9IChFeHRWYWNFbnRyeSAqKSBo YXNoX3NlYXJjaChldmNfaGFzaCwgJmtleSwgYWN0aW9uLCAmZm91bmQpOworCisJaWYgKCFm b3VuZCkKKwl7CisJCWlmIChhY3Rpb24gPT0gSEFTSF9GSU5EKQorCQl7CisJCQkvKgorCQkJ ICogSGFzaCB0YWJsZSBpcyBmdWxsLiBUbyBhdm9pZCBwb3NzaWJsZSBwcm9ibGVtcyAtIGRv bid0IHRyeSB0byBhZGQKKwkJCSAqIG1vcmUsIGp1c3QgZXhpdAorCQkJICovCisJCQlMV0xv Y2tSZWxlYXNlKCZldmMtPmV2Y19sb2NrX2hhc2gpOworCQkJZXJlcG9ydChMT0csCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJbVmFjdXVt IFN0YXRpc3RpY3NdIERhdGEgc3RvcmFnZSBpcyBmdWxsLiBObyBtb3JlIGRhdGEgY2FuIGJl IGFkZGVkLiIpLAorCQkJCSBlcnJoaW50KCJJbmNyZWFzZSB2YWx1ZSBvZiBldmNfbWF4X2Vu dHJpZXMgb24gcmVzdGFydCBvZiB0aGUgaW5zdGFuY2UiKSkpOworCQkJcmV0dXJuIE5VTEw7 CisJCX0KKworCQltZW1zZXQoJmUtPnN0YXRzLCAwLCBzaXplb2YoZS0+c3RhdHMpKTsKKwkJ ZS0+c3RhdHMudHlwZSA9IHR5cGU7CisJCWUtPmZpcnN0X3NlZW4gID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOworCQllLT5zdGF0c19yZXNldCA9IGUtPmZpcnN0X3NlZW47CisJfQorCQor CXBnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19zdGF0c19yZWxhdGlvbnMoJmUtPnN0YXRzLCBj b3VudHMpOworCisJZXZjLT5ldmNfY2hhbmdlZCA9IHRydWU7CisJTFdMb2NrUmVsZWFzZSgm ZXZjLT5ldmNfbG9ja19oYXNoKTsKKworCXJldHVybiBlOworfQorCitzdGF0aWMgdm9pZAor cGdzdGF0X3JlcG9ydF92YWN1dW1fZXh0c3RhdHMoT2lkIHRhYmxlb2lkLCBib29sIHNoYXJl ZCwKKwkJCQkJCQkgIFBnU3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqcGFyYW1zKQorewor CS8qIENhbGwgb3VycyAqLworCU9pZCBkYm9pZCA9IHNoYXJlZCA/IEludmFsaWRPaWQgOiBN eURhdGFiYXNlSWQ7CisJZXZjX3N0b3JlKGRib2lkLCB0YWJsZW9pZCwgc2hhcmVkLCBwYXJh bXMtPnR5cGUsIHBhcmFtcyk7CisKKwkvKiBDaGFpbiB0byBwcmV2aW91cyBpZiBhbnkgKi8K KwlpZiAocHJldl9yZXBvcnRfdmFjdXVtX2hvb2spCisJCXByZXZfcmVwb3J0X3ZhY3V1bV9o b29rKHRhYmxlb2lkLCBzaGFyZWQsIHBhcmFtcyk7Cit9CisKK3N0YXRpYyB2b2lkCitldmNf ZW50cnlfcmVzZXQoRXh0VmFjRW50cnkgKmUpCit7CisgICAgQXNzZXJ0KGUgIT0gTlVMTCk7 CisKKyAgICBMV0xvY2tBY3F1aXJlKCZldmMtPmV2Y19sb2NrX2hhc2gsIExXX0VYQ0xVU0lW RSk7CisKKyAgICAvKiB3aXBlIHN0YXRzLCBidXQgcHJlc2VydmUgdHlwZSBhbmQga2V5IG1l dGFkYXRhICovCisgICAgbWVtc2V0KCZlLT5zdGF0cywgMCwgc2l6ZW9mKGUtPnN0YXRzKSk7 CisgICAgZS0+c3RhdHMudHlwZSAgID0gZS0+a2V5LnR5cGU7ICAgLyogcmVsYXRjaCB0eXBl ICovCisgICAgZS0+c3RhdHNfcmVzZXQgID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisg ICBMV0xvY2tSZWxlYXNlKCZldmMtPmV2Y19sb2NrX2hhc2gpOworfQorCitzdGF0aWMgdm9p ZAorZXZjX3Jlc2V0X2J5X3JlbGlkKE9pZCBkYm9pZCwgT2lkIHJlbGlkLCB1aW50OCB0eXBl KQoreworICAgIEV4dFZhY0tleSBrZXk7CisgICAgRXh0VmFjRW50cnkgKmU7CisKKyAgICBp ZiAoIWV2YyB8fCAhZXZjX2hhc2gpCisgICAgICAgIHJldHVybjsKKworICAgIGtleS5kYm9p ZCA9IGRib2lkOworICAgIGtleS5yZWxpZCA9IHJlbGlkOworICAgIGtleS50eXBlICA9IHR5 cGU7CisKKyAgICBlID0gKEV4dFZhY0VudHJ5ICopIGhhc2hfc2VhcmNoKGV2Y19oYXNoLCAm a2V5LCBIQVNIX0ZJTkQsIE5VTEwpOworICAgIGlmIChlKQorICAgICAgICBldmNfZW50cnlf cmVzZXQoZSk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZXh0dmFjX3Jlc2V0X2VudHJ5 KTsKKworRGF0dW0KK2V4dHZhY19yZXNldF9lbnRyeShQR19GVU5DVElPTl9BUkdTKQorewor ICAgIE9pZCBkYm9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisgICAgT2lkIHJlbGlkID0gUEdf R0VUQVJHX09JRCgxKTsKKyAgICBpbnQzMiB0eXBlID0gUEdfR0VUQVJHX0lOVDMyKDIpOwor CisgICAgZXZjX3Jlc2V0X2J5X3JlbGlkKGRib2lkLCByZWxpZCwgKHVpbnQ4KSB0eXBlKTsK KworICAgIFBHX1JFVFVSTl9WT0lEKCk7Cit9CisKKy8qCisgKiBPYmplY3QgYWNjZXNzIGhv b2sKKyAqLworc3RhdGljIHZvaWQKK2V2Y19kcm9wX2FjY2Vzc19ob29rKE9iamVjdEFjY2Vz c1R5cGUgYWNjZXNzLAorCQkJCQkgT2lkIGNsYXNzSWQsCisJCQkJCSBPaWQgb2JqZWN0SWQs CisJCQkJCSBpbnQgc3ViSWQsCisJCQkJCSB2b2lkICphcmcpCit7CisJaWYgKHByZXZfb2Jq ZWN0X2FjY2Vzc19ob29rKQorCQkoKnByZXZfb2JqZWN0X2FjY2Vzc19ob29rKSAoYWNjZXNz LCBjbGFzc0lkLCBvYmplY3RJZCwgc3ViSWQsIGFyZyk7CisKKwlpZiAoYWNjZXNzID09IE9B VF9EUk9QKQorCXsKKwkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChvYmplY3RJ ZCk7CisKKwkJaWYoY2xhc3NJZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYgc3ViSWQgPT0g MCkKKwkJeworCQkJaWYocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWV2Y19y ZXNldF9ieV9yZWxpZChNeURhdGFiYXNlSWQsIG9iamVjdElkLCBQR1NUQVRfRVhUVkFDX1RB QkxFKTsKKwkJCWVsc2UgaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCkKKwkJCQlldmNf cmVzZXRfYnlfcmVsaWQoTXlEYXRhYmFzZUlkLCBvYmplY3RJZCwgUEdTVEFUX0VYVFZBQ19J TkRFWCk7CisJCX0KKwl9Cit9CisKKworLyogTnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMg KGNvbHVtbnMpIG9mIHZhY3V1bSBzdGF0cyBmb3IgdmFyaW91cyBBUEkgdmVyc2lvbnMgKi8K KyNkZWZpbmUgRVhUVkFDX0NPTU1PTl9TVEFUX0NPTFMgCTEyIC8qIG1heGltdW0gb2YgYWJv dmUgKi8KKworc3RhdGljIHZvaWQKK3R1cGxlc3RvcmVfcHV0X2NvbW1vbihQZ1N0YXRfQ29t bW9uQ291bnRzICp2YWN1dW1fZXh0LAorICAgICAgICAgICAgICAgICAgICAgIERhdHVtICp2 YWx1ZXMsIGJvb2wgKm51bGxzLCBpbnQgKmkpCit7CisgICAgY2hhciBidWZbMjU2XTsKKyAg ICBjb25zdCBpbnQgYmFzZSA9ICppOworCisgICAgdmFsdWVzWygqaSkrK10gPSBJbnQ2NEdl dERhdHVtKHZhY3V1bV9leHQtPnRvdGFsX2Jsa3NfcmVhZCk7CisgICAgdmFsdWVzWygqaSkr K10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRvdGFsX2Jsa3NfaGl0KTsKKyAgICB2 YWx1ZXNbKCppKSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dG90YWxfYmxrc19k aXJ0aWVkKTsKKyAgICB2YWx1ZXNbKCppKSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4 dC0+dG90YWxfYmxrc193cml0dGVuKTsKKyAgICB2YWx1ZXNbKCppKSsrXSA9IEludDY0R2V0 RGF0dW0odmFjdXVtX2V4dC0+d2FsX3JlY29yZHMpOworICAgIHZhbHVlc1soKmkpKytdID0g SW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT53YWxfZnBpKTsKKworICAgIC8qIENvbnZlcnQg dG8gbnVtZXJpYywgbGlrZSBwZ19zdGF0X3N0YXRlbWVudHMgKi8KKyAgICBzbnByaW50Zihi dWYsIHNpemVvZiBidWYsIFVJTlQ2NF9GT1JNQVQsIHZhY3V1bV9leHQtPndhbF9ieXRlcyk7 CisgICAgdmFsdWVzWygqaSkrK10gPSBEaXJlY3RGdW5jdGlvbkNhbGwzKG51bWVyaWNfaW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTdHJpbmdHZXRE YXR1bShidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP YmplY3RJZEdldERhdHVtKDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbnQzMkdldERhdHVtKC0xKSk7CisKKyAgICB2YWx1ZXNbKCppKSsrXSA9IEZs b2F0OEdldERhdHVtKHZhY3V1bV9leHQtPmJsa19yZWFkX3RpbWUpOworICAgIHZhbHVlc1so KmkpKytdID0gRmxvYXQ4R2V0RGF0dW0odmFjdXVtX2V4dC0+YmxrX3dyaXRlX3RpbWUpOwor ICAgIHZhbHVlc1soKmkpKytdID0gRmxvYXQ4R2V0RGF0dW0odmFjdXVtX2V4dC0+ZGVsYXlf dGltZSk7CisgICAgdmFsdWVzWygqaSkrK10gPSBGbG9hdDhHZXREYXR1bSh2YWN1dW1fZXh0 LT50b3RhbF90aW1lKTsKKyAgICB2YWx1ZXNbKCppKSsrXSA9IEludDMyR2V0RGF0dW0odmFj dXVtX2V4dC0+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudCk7CisKKyAgICAvKiBJZiB5b3Ug bWVhbnQgMTIsIGZpeCB0aGUgY29uc3RhbnQuIE90aGVyd2lzZSBhZGQgdGhlIG1pc3Npbmcg ZmllbGQuICovCisgICAgQXNzZXJ0KCgqaSAtIGJhc2UpID09IEVYVFZBQ19DT01NT05fU1RB VF9DT0xTKTsKK30KKworI2RlZmluZSBFWFRWQUNfSEVBUF9TVEFUX0NPTFMJMjYKKyNkZWZp bmUgRVhUVkFDX0lEWF9TVEFUX0NPTFMJMTcKKyNkZWZpbmUgRVhUVkFDX01BWF9TVEFUX0NP TFMgTWF4KEVYVFZBQ19IRUFQX1NUQVRfQ09MUywgRVhUVkFDX0lEWF9TVEFUX0NPTFMpCisK K3N0YXRpYyB2b2lkCit0dXBsZXN0b3JlX3B1dF9mb3JfcmVsYXRpb24oT2lkIHJlbGlkLCBU dXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlLAorCQkJICAgVHVwbGVEZXNjIHR1cGRlc2MsIFBn U3RhdF9WYWN1dW1SZWxhdGlvbkNvdW50cyAqdmFjdXVtX2V4dCkKK3sKKwlEYXR1bSB2YWx1 ZXNbRVhUVkFDX01BWF9TVEFUX0NPTFNdOworCWJvb2wgIG51bGxzW0VYVFZBQ19NQVhfU1RB VF9DT0xTXTsKKwlpbnQgaSA9IDA7CisJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMp KTsKKworCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisKKwl0dXBs ZXN0b3JlX3B1dF9jb21tb24oJnZhY3V1bV9leHQtPmNvbW1vbiwKKwkJCQkJCQl2YWx1ZXMs IG51bGxzLCAmaSk7CisJCisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9l eHQtPmNvbW1vbi5ibGtzX2ZldGNoZWQgLQorCQkJCQkJCQl2YWN1dW1fZXh0LT5jb21tb24u Ymxrc19oaXQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0LT5j b21tb24uYmxrc19oaXQpOworCisJaWYgKHZhY3V1bV9leHQtPnR5cGUgPT0gUEdTVEFUX0VY VFZBQ19UQUJMRSkKKwl7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1f ZXh0LT50YWJsZS50dXBsZXNfZGVsZXRlZCk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXRE YXR1bSh2YWN1dW1fZXh0LT50YWJsZS5wYWdlc19zY2FubmVkKTsKKwkJdmFsdWVzW2krK10g PSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPnRhYmxlLnBhZ2VzX3JlbW92ZWQpOworCQl2 YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFibGUudm1fbmV3X2Zy b3plbl9wYWdlcyk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0 LT50YWJsZS52bV9uZXdfdmlzaWJsZV9wYWdlcyk7CisJCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bSh2YWN1dW1fZXh0LT50YWJsZS52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMp OworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFibGUudHVw bGVzX2Zyb3plbik7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh2YWN1dW1fZXh0 LT50YWJsZS5yZWNlbnRseV9kZWFkX3R1cGxlcyk7CisJCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bSh2YWN1dW1fZXh0LT50YWJsZS5pbmRleF92YWN1dW1fY291bnQpOworCQl2YWx1 ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFibGUubWlzc2VkX2RlYWRf cGFnZXMpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odmFjdXVtX2V4dC0+dGFi bGUubWlzc2VkX2RlYWRfdHVwbGVzKTsKKwl9CisJZWxzZSBpZiAodmFjdXVtX2V4dC0+dHlw ZSA9PSBQR1NUQVRfRVhUVkFDX0lOREVYKQorCXsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdl dERhdHVtKHZhY3V1bV9leHQtPmluZGV4LnR1cGxlc19kZWxldGVkKTsKKwkJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHZhY3V1bV9leHQtPmluZGV4LnBhZ2VzX2RlbGV0ZWQpOwor CX0KKworCUFzc2VydChpID09ICgodmFjdXVtX2V4dC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFD X1RBQkxFKSA/IEVYVFZBQ19IRUFQX1NUQVRfQ09MUyA6IEVYVFZBQ19JRFhfU1RBVF9DT0xT KSk7CisKKwl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVz LCBudWxscyk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0 aGUgaGVhcCB0YWJsZXMgb3IgaW5kZXhlcy4KKyAqIFNlZSBjb21tZW50IHRvIHBncHJvX3N0 YXRzX3N0YXRlbWVudHMoKSBhYm91dCBTUUwgQVBJLgorICovCitzdGF0aWMgRGF0dW0KK3Bn X3N0YXRzX3ZhY3V1bShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgRXh0VmFjUmVwb3J0VHlw ZSB0eXBlKQoreworCVJldHVyblNldEluZm8JCSAgICpyc2luZm8gPSAoUmV0dXJuU2V0SW5m byAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJTWVtb3J5Q29udGV4dAkJCXBlcl9xdWVyeV9j dHg7CisJTWVtb3J5Q29udGV4dAkJCW9sZGNvbnRleHQ7CisJVHVwbGVzdG9yZXN0YXRlCQkg ICAqdHVwc3RvcmU7CisJVHVwbGVEZXNjCQkJCXR1cGRlc2M7CisJT2lkCQkJCQkJZGJpZCA9 IFBHX0dFVEFSR19PSUQoMCk7CisKKwkvKiBDaGVjayBpZiBjYWxsZXIgc3VwcG9ydHMgdXMg cmV0dXJuaW5nIGEgdHVwbGVzdG9yZSAqLworCWlmIChyc2luZm8gPT0gTlVMTCB8fCAhSXNB KHJzaW5mbywgUmV0dXJuU2V0SW5mbykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInZhY3V1 bSBzdGF0aXN0aWNzOiBzZXQtdmFsdWVkIGZ1bmN0aW9uIGNhbGxlZCBpbiBjb250ZXh0IHRo YXQgY2Fubm90IGFjY2VwdCBhIHNldCIpKSk7CisJaWYgKCEocnNpbmZvLT5hbGxvd2VkTW9k ZXMgJiBTRlJNX01hdGVyaWFsaXplKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidmFjdXVt IHN0YXRpc3RpY3M6IG1hdGVyaWFsaXplIG1vZGUgcmVxdWlyZWQsIGJ1dCBpdCBpcyBub3Qg YWxsb3dlZCBpbiB0aGlzIGNvbnRleHQiKSkpOworCisJLyogU3dpdGNoIHRvIGxvbmctbGl2 ZWQgY29udGV4dCB0byBjcmVhdGUgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlcyAqLwor CXBlcl9xdWVyeV9jdHggPSByc2luZm8tPmVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1v cnk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcXVlcnlfY3R4 KTsKKworCS8qIEJ1aWxkIGEgdHVwbGUgZGVzY3JpcHRvciBmb3Igb3VyIHJlc3VsdCB0eXBl ICovCisJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2Mp ICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKKwkJZWxvZyhFUlJPUiwgInZhY3V1bSBzdGF0aXN0 aWNzOiByZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKKworCXR1cHN0b3JlID0g dHVwbGVzdG9yZV9iZWdpbl9oZWFwKHRydWUsIGZhbHNlLCB3b3JrX21lbSk7CisJcnNpbmZv LT5yZXR1cm5Nb2RlID0gU0ZSTV9NYXRlcmlhbGl6ZTsKKwlyc2luZm8tPnNldFJlc3VsdCA9 IHR1cHN0b3JlOworCXJzaW5mby0+c2V0RGVzYyA9IHR1cGRlc2M7CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlpZiAodHlwZSA9PSBQR1NUQVRfRVhUVkFD X0lOREVYIHx8IHR5cGUgPT0gUEdTVEFUX0VYVFZBQ19UQUJMRSkKKwl7CisJCU9pZAlyZWxp ZCA9IFBHX0dFVEFSR19PSUQoMSk7CisJCUV4dFZhY0VudHJ5ICp2YWN1dW1fZXh0OworCisJ CS8qIExvYWQgdGFibGUgc3RhdGlzdGljcyBmb3Igc3BlY2lmaWVkIGRhdGFiYXNlLiAqLwor CisJCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKKwkJeworCQkJRXh0VmFjS2V5IGtleTsKKwor CQkJaWYgKCFldmMgfHwgIWV2Y19oYXNoKQorICAgICAgICAJCXJldHVybiAoRGF0dW0pIDA7 CisKKwkJCWtleS5kYm9pZCA9IGRiaWQ7CisJCQlrZXkucmVsaWQgPSByZWxpZDsKKwkJCWtl eS50eXBlICA9IHR5cGU7CisKKwkJCUxXTG9ja0FjcXVpcmUoJmV2Yy0+ZXZjX2xvY2tfaGFz aCwgTFdfU0hBUkVEKTsKKworCQkJdmFjdXVtX2V4dCA9IChFeHRWYWNFbnRyeSAqKSBoYXNo X3NlYXJjaChldmNfaGFzaCwgJmtleSwgSEFTSF9GSU5ELCBOVUxMKTsKKwkJCQorCQkJaWYg KHZhY3V1bV9leHQgPT0gTlVMTCB8fCB2YWN1dW1fZXh0LT5zdGF0cy50eXBlICE9IHR5cGUp CisJCQl7CQorCQkJCS8qIFRhYmxlIGRvbid0IGV4aXN0cyBvciBpc24ndCBhbiBoZWFwIHJl bGF0aW9uLiAqLworCQkJCUxXTG9ja1JlbGVhc2UoJmV2Yy0+ZXZjX2xvY2tfaGFzaCk7CisJ CQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCX0KKworCQkJTFdMb2NrUmVsZWFzZSgmZXZjLT5l dmNfbG9ja19oYXNoKTsKKworCQkJdHVwbGVzdG9yZV9wdXRfZm9yX3JlbGF0aW9uKHJlbGlk LCB0dXBzdG9yZSwgdHVwZGVzYywgJnZhY3V1bV9leHQtPnN0YXRzKTsKKwkJfQorCX0KKwkv LyBlbHNlIGlmICh0eXBlID09IFBHU1RBVF9FWFRWQUNfREIpCisJLy8geworCS8vIAlQZ1N0 YXRfQ29tbW9uQ291bnRzCSAgICp2YWN1dW1fZXh0OworCisJLy8gCXZhY3V1bV9leHQgPSBm ZXRjaF9kYnN0YXRfZGJlbnRyeShkYmlkKTsKKworCS8vIAlpZiAodmFjdXVtX2V4dCA9PSBO VUxMKQorCS8vIAkJLyogVGFibGUgZG9lc24ndCBleGlzdCBvciBpc24ndCBhIGhlYXAgcmVs YXRpb24gKi8KKwkvLyAJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwkvLyAJRGF0dW0gdmFsdWVz W0VYVFZBQ19DT01NT05fU1RBVF9DT0xTXTsKKwkvLyAJYm9vbCBudWxsc1tFWFRWQUNfQ09N TU9OX1NUQVRfQ09MU107CisJLy8gCWludCBpID0gMDsKKworCS8vIAltZW1zZXQobnVsbHMs IDAsIEVYVFZBQ19DT01NT05fU1RBVF9DT0xTICogc2l6ZW9mKGJvb2wpKTsKKworCS8vIAl2 YWx1ZXNbaSsrXSA9IE9iamVjdElkR2V0RGF0dW0oZGJpZCk7CisKKwkvLyAJdHVwbGVzdG9y ZV9wdXRfY29tbW9uKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWN1dW1fZXh0LAorCS8vIAkJCQkJ CQkJJnZhbHVlcywgJm51bGxzLCAmaSk7CisJCQorCS8vIAl0dXBsZXN0b3JlX3B1dHZhbHVl cyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisKKwkvLyAJcmV0dXJuIChE YXR1bSkgMDsKKwkvLyB9CisKKwlyZXR1cm4gKERhdHVtKSAwOworfQorCitQR19GVU5DVElP Tl9JTkZPX1YxKHBnX3N0YXRzX2dldF92YWN1dW1fdGFibGVzKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEocGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRleGVzKTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEocGdfc3RhdHNfZ2V0X3ZhY3V1bV9kYXRhYmFzZSk7CisKKy8qCisgKiBHZXQgdGhlIHZh Y3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaGVhcCB0YWJsZXMuCisgKi8KK0RhdHVtCitwZ19z dGF0c19nZXRfdmFjdXVtX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBw Z19zdGF0c192YWN1dW0oZmNpbmZvLCBQR1NUQVRfRVhUVkFDX1RBQkxFKTsKKworCVBHX1JF VFVSTl9OVUxMKCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHZhY3V1bSBzdGF0aXN0aWNzIGZv ciB0aGUgaW5kZXhlcy4KKyovCitEYXR1bQorcGdfc3RhdHNfZ2V0X3ZhY3V1bV9pbmRleGVz KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIHBnX3N0YXRzX3ZhY3V1bShmY2luZm8s IFBHU1RBVF9FWFRWQUNfSU5ERVgpOworCisJUEdfUkVUVVJOX05VTEwoKTsKK30KKworLyoK KyAqIEdldCB0aGUgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRoZSBkYXRhYmFzZXMuCisgKi8K K0RhdHVtCitwZ19zdGF0c19nZXRfdmFjdXVtX2RhdGFiYXNlKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJcmV0dXJuIHBnX3N0YXRzX3ZhY3V1bShmY2luZm8sIFBHU1RBVF9FWFRWQUNfREIp OworCisJUEdfUkVUVVJOX05VTEwoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS92YWN1dW1fc3RhdGlzdGljcy5jb250cm9sIGIvdmFjdXVtX3N0YXRp c3RpY3MuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzcy NzU0Ci0tLSAvZGV2L251bGwKKysrIGIvdmFjdXVtX3N0YXRpc3RpY3MuY29udHJvbApAQCAt MCwwICsxLDQgQEAKK2NvbW1lbnQgPSAndmFjdXVtIHN0YXRpc3RpY3MnCitkZWZhdWx0X3Zl cnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdmFjdXVtX3N0YXRp c3RpY3MnCityZWxvY2F0YWJsZSA9IHRydWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl Ci0tIAoyLjM0LjEKCg== --------------kHlD7chBUGN7diVaEI00tqIQ--