Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1xkK-0007Nd-Az for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Jul 2021 21:09:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m1xkJ-0005Ni-7Y for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Jul 2021 21:09:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1xkI-0005Na-Fn for pgsql-hackers@lists.postgresql.org; Fri, 09 Jul 2021 21:09:14 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1xkE-0004PW-7w for pgsql-hackers@postgresql.org; Fri, 09 Jul 2021 21:09:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1625864950; x=1657400950; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=s46AXKQi3OHrPN/OCpZ8A1KdiP4ZDqZNuNAgbj0SdO0=; b=jsc2pV4xUkWBvHyuPr5/86RJ4KXRyNel0KKxXzu9cBtjIEfaVA5R+xJR BIGGbGAP11AWoRV6cAl42GhoB0W+aNmH1HnnhCFGWiNNA/yEg95Tpp9Za 2sk7bwOtitXfzR7ROGYZJU21Vg1dgXYOwkBVsY4VNZnirK/EgRO0fw7ip g=; X-Amazon-filename: v2-0001-wal-segment-pre-allocation.patch X-IronPort-AV: E=Sophos;i="5.84,227,1620691200"; d="scan'208,223";a="124479643" Subject: Re: Pre-allocating WAL files Thread-Topic: Pre-allocating WAL files Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1e-42f764a0.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-6002.iad6.amazon.com with ESMTP; 09 Jul 2021 21:08:30 +0000 Received: from EX13MTAUWB001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1e-42f764a0.us-east-1.amazon.com (Postfix) with ESMTPS id ACBF4AA2C0; Fri, 9 Jul 2021 21:08:28 +0000 (UTC) Received: from EX13D03UWC003.ant.amazon.com (10.43.162.79) by EX13MTAUWB001.ant.amazon.com (10.43.161.249) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 9 Jul 2021 21:08:27 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC003.ant.amazon.com (10.43.162.79) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 9 Jul 2021 21:08:27 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.018; Fri, 9 Jul 2021 21:08:27 +0000 From: "Bossart, Nathan" To: vignesh C CC: Andres Freund , "pgsql-hackers@postgresql.org" Thread-Index: AQHXWav8+6ha4BKnPEG53jEY0XwfWasIN++AgCyQ/oCABhuBgA== Date: Fri, 9 Jul 2021 21:08:27 +0000 Message-ID: <5A67D2E7-AA1B-4020-AB08-CD7C763DAA6A@amazon.com> References: <20201225200953.jjkrytlrzojbndh5@alap3.anarazel.de> <265B06BA-7B16-4C1A-BE1A-1451D22A1F83@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.161.153] Content-Type: multipart/mixed; boundary="_002_5A67D2E7AA1B4020AB08CD7C763DAA6Aamazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_5A67D2E7AA1B4020AB08CD7C763DAA6Aamazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <12D57D0FCA4A284B9B8FB20AE531F265@amazon.com> Content-Transfer-Encoding: base64 T24gNy81LzIxLCA5OjUyIEFNLCAidmlnbmVzaCBDIiA8dmlnbmVzaDIxQGdtYWlsLmNvbT4gd3Jv dGU6DQo+IFRoYW5rcyBmb3IgcG9zdGluZyB0aGUgcGF0Y2gsIHRoZSBwYXRjaCBubyBtb3JlIGFw cGxpZXMgb24gSGVhZDoNCj4gQXBwbHlpbmc6IHdhbCBzZWdtZW50IHByZS1hbGxvY2F0aW9uDQo+ IGVycm9yOiBwYXRjaCBmYWlsZWQ6IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYzoz MjgzDQo+IGVycm9yOiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5DQo+DQo+IENhbiB5b3UgcmViYXNlIHRoZSBwYXRjaCBhbmQgcG9zdCwgaXQg bWlnaHQgaGVscCBpZiBzb21lb25lIGlzIHBpY2tpbmcNCj4gaXQgdXAgZm9yIHJldmlldy4NCg0K SSd2ZSBhdHRhY2hlZCBhIHJlYmFzZWQgdmVyc2lvbiBvZiB0aGUgcGF0Y2guDQoNCk5hdGhhbg0K DQo= --_002_5A67D2E7AA1B4020AB08CD7C763DAA6Aamazoncom_ Content-Type: application/octet-stream; name="v2-0001-wal-segment-pre-allocation.patch" Content-Description: v2-0001-wal-segment-pre-allocation.patch Content-Disposition: attachment; filename="v2-0001-wal-segment-pre-allocation.patch"; size=44713; creation-date="Fri, 09 Jul 2021 21:08:27 GMT"; modification-date="Fri, 09 Jul 2021 21:08:27 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBmMTRjMjM1ZGZiMjMwNTZjMTQ2ZTM5MTI2ZGE5Y2Q1Mzk2N2FkOTEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogRnJpLCA5IEp1bCAyMDIxIDIwOjQ3OjE0ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2MiAx LzFdIHdhbCBzZWdtZW50IHByZS1hbGxvY2F0aW9uCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKwogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgMjI2ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgNDUgKysrKwogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmMgICAgICAgIHwgMzE1ICsrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jICAgICAgICAgICAgICAg ICB8IDExNSArKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMu dHh0ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAg IHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8 ICAgMSArCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyAgICAgICAgIHwgIDE5 ICstCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCAgfCAgIDQg Ky0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyAgICAgICAgICAgICB8ICA0OCAr KysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDUg Kwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oICAgICAgICB8ICAyMSArKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogc3Jj L2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAzICstCiAyNCBm aWxlcyBjaGFuZ2VkLCA3NjUgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmgKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggMzgxZDg2MzZhYi4uZjNiMWViYTM0MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMzE5Nyw2 ICszMTk3LDI5IEBAIGluY2x1ZGVfZGlyICdjb25mLmQnCiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtd2FsLWFsbG9j YXRvci1tYXgtc2l6ZSIgeHJlZmxhYmVsPSJ3YWxfYWxsb2NhdG9yX21heF9zaXplIj4KKyAgICAg IDx0ZXJtPjx2YXJuYW1lPndhbF9hbGxvY2F0b3JfbWF4X3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5p bnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5h bWU+d2FsX2FsbG9jYXRvcl9tYXhfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1heGltdW0gYW1vdW50IG9mIFdB TCB0byBwcmUtYWxsb2NhdGUgZm9yIHVzZSB3aGVuIGEgbmV3IFdBTCBzZWdtZW50CisgICAgICAg IG11c3QgYmUgaW5pdGlhbGl6ZWQuICBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGEgc2l6ZSBs ZXNzIHRoYW4gdGhlIFdBTAorICAgICAgICBzZWdtZW50IHNpemUgZGlzYWJsZXMgdGhpcyBiZWhh dmlvci4gIFRoZSBkZWZhdWx0IHZhbHVlcyBpcyA2NCBtZWdhYnl0ZXMKKyAgICAgICAgKDxsaXRl cmFsPjY0TUI8L2xpdGVyYWw+KS4gIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBh cmE+CisgICAgICAgIFdBTCBwcmUtYWxsb2NhdGlvbiBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSBp biBzY2VuYXJpb3Mgd2hlcmUgbmV3IFdBTAorICAgICAgICBzZWdtZW50cyBtdXN0IGJlIGNyZWF0 ZWQgKGUuZy4sIGR1cmluZyBjaGVja3BvaW50cyB3aGVuIFdBTCBzZWdtZW50cworICAgICAgICBj YW5ub3QgYmUgcmVjeWNsZWQpLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy13YWwtYnVm ZmVycyIgeHJlZmxhYmVsPSJ3YWxfYnVmZmVycyI+CiAgICAgICA8dGVybT48dmFybmFtZT53YWxf YnVmZmVyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAgICAgPGluZGV4dGVy bT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBjN2M5MjhmNTBiLi4xNmUwNjNjYWUx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVk ZSAicG9ydC9wZ19pb3ZlYy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbF9h bGxvY2F0b3IuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs LmgiCkBAIC03NDIsNiArNzQzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFhMb2dDdGxEYXRhCiAJICov CiAJWExvZ1JlY1B0cglsYXN0RnB3RGlzYWJsZVJlY1B0cjsKIAorCS8qCisJICogbnVtYmVyIG9m IHByZS1hbGxvY2F0ZWQgV0FMIHNlZ21lbnRzIGluIHBnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVu dHMKKwkgKgorCSAqIFByb3RlY3RlZCBieSBXQUxQcmVhbGxvY2F0aW9uTG9jay4KKwkgKi8KKwlp bnQgbnVtX3ByZWFsbG9jX3NlZ3M7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNo YXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ0N0bERhdGE7CiAKQEAgLTMyODEs MTEgKzMyODksMTAgQEAgc3RhdGljIGludAogWExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05v IGxvZ3NlZ25vLCBib29sICphZGRlZCwgY2hhciAqcGF0aCkKIHsKIAljaGFyCQl0bXBwYXRoW01B WFBHUEFUSF07Ci0JUEdBbGlnbmVkWExvZ0Jsb2NrIHpidWZmZXI7CiAJWExvZ1NlZ05vCWluc3Rh bGxlZF9zZWdubzsKIAlYTG9nU2VnTm8JbWF4X3NlZ25vOwogCWludAkJCWZkOwotCWludAkJCXNh dmVfZXJybm87CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAogCVhMb2dGaWxlUGF0aChwYXRoLCBU aGlzVGltZUxpbmVJRCwgbG9nc2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOwogCkBAIC0zMzA1LDEx NSArMzMxMiw0NSBAQCBYTG9nRmlsZUluaXRJbnRlcm5hbChYTG9nU2VnTm8gbG9nc2Vnbm8sIGJv b2wgKmFkZGVkLCBjaGFyICpwYXRoKQogCQlyZXR1cm4gZmQ7CiAKIAkvKgotCSAqIEluaXRpYWxp emUgYW4gZW1wdHkgKGFsbCB6ZXJvZXMpIHNlZ21lbnQuICBOT1RFOiBpdCBpcyBwb3NzaWJsZSB0 aGF0Ci0JICogYW5vdGhlciBwcm9jZXNzIGlzIGRvaW5nIHRoZSBzYW1lIHRoaW5nLiAgSWYgc28s IHdlIHdpbGwgZW5kIHVwCi0JICogcHJlLWNyZWF0aW5nIGFuIGV4dHJhIGxvZyBzZWdtZW50LiAg VGhhdCBzZWVtcyBPSywgYW5kIGJldHRlciB0aGFuCi0JICogaG9sZGluZyB0aGUgbG9jayB0aHJv dWdob3V0IHRoaXMgbGVuZ3RoeSBwcm9jZXNzLgorCSAqIFRyeSB0byB1c2UgYSBwcmUtYWxsb2Nh dGVkIHNlZ21lbnQsIGlmIG9uZSBleGlzdHMuICBJZiBub25lIGFyZQorCSAqIGF2YWlsYWJsZSwg d2UgZmFsbCBiYWNrIHRvIGNyZWF0aW5nIGEgbmV3IHNlZ21lbnQgb24gb3VyIG93bi4KKwkgKgor CSAqIE5vdGUgdGhhdCB3ZSBzdGlsbCBsb29rIGZvciBhIHByZS1hbGxvY2F0ZWQgc2VnbWVudCBl dmVuIGlmIHRoZSBwcmUtCisJICogYWxsb2NhdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGRpc2FibGVk IHZpYSB0aGUgR1VDcy4gIFRoaXMgZW5zdXJlcyB0aGF0IGFueQorCSAqIHByZS1hbGxvY2F0ZWQg c2VnbWVudHMgbGVmdCBvdmVyIGFmdGVyIHR1cm5pbmcgb2ZmIHRoZSBwcmUtYWxsb2NhdGlvbgor CSAqIGZ1bmN0aW9uYWxpdHkgYXJlIGV2ZW50dWFsbHkgdXNlZCB1cC4KIAkgKi8KLQllbG9nKERF QlVHMiwgImNyZWF0aW5nIGFuZCBmaWxsaW5nIG5ldyBXQUwgZmlsZSIpOwotCi0Jc25wcmludGYo dG1wcGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIveGxvZ3RlbXAuJWQiLCAoaW50KSBnZXRwaWQo KSk7Ci0KLQl1bmxpbmsodG1wcGF0aCk7Ci0KLQkvKiBkbyBub3QgdXNlIGdldF9zeW5jX2JpdCgp IGhlcmUgLS0tIHdhbnQgdG8gZnN5bmMgb25seSBhdCBlbmQgb2YgZmlsbCAqLwotCWZkID0gQmFz aWNPcGVuRmlsZSh0bXBwYXRoLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19FWENMIHwgUEdfQklOQVJZ KTsKLQlpZiAoZmQgPCAwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxl X2FjY2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVt IiwgdG1wcGF0aCkpKTsKLQotCW1lbXNldCh6YnVmZmVyLmRhdGEsIDAsIFhMT0dfQkxDS1NaKTsK LQotCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1dBTF9JTklUX1dSSVRFKTsK LQlzYXZlX2Vycm5vID0gMDsKLQlpZiAod2FsX2luaXRfemVybykKKwlMV0xvY2tBY3F1aXJlKFdB TFByZWFsbG9jYXRpb25Mb2NrLCBMV19FWENMVVNJVkUpOworCWlmIChYTG9nQ3RsLT5udW1fcHJl YWxsb2Nfc2VncyA+IDApCiAJewotCQlzdHJ1Y3QgaW92ZWMgaW92W1BHX0lPVl9NQVhdOwotCQlp bnQJCQlibG9ja3M7Ci0KLQkJLyoKLQkJICogWmVyby1maWxsIHRoZSBmaWxlLiAgV2l0aCB0aGlz IHNldHRpbmcsIHdlIGRvIHRoaXMgdGhlIGhhcmQgd2F5IHRvCi0JCSAqIGVuc3VyZSB0aGF0IGFs bCB0aGUgZmlsZSBzcGFjZSBoYXMgcmVhbGx5IGJlZW4gYWxsb2NhdGVkLiAgT24KLQkJICogcGxh dGZvcm1zIHRoYXQgYWxsb3cgImhvbGVzIiBpbiBmaWxlcywganVzdCBzZWVraW5nIHRvIHRoZSBl bmQKLQkJICogZG9lc24ndCBhbGxvY2F0ZSBpbnRlcm1lZGlhdGUgc3BhY2UuICBUaGlzIHdheSwg d2Uga25vdyB0aGF0IHdlCi0JCSAqIGhhdmUgYWxsIHRoZSBzcGFjZSBhbmQgKGFmdGVyIHRoZSBm c3luYyBiZWxvdykgdGhhdCBhbGwgdGhlCi0JCSAqIGluZGlyZWN0IGJsb2NrcyBhcmUgZG93biBv biBkaXNrLiAgVGhlcmVmb3JlLCBmZGF0YXN5bmMoMikgb3IKLQkJICogT19EU1lOQyB3aWxsIGJl IHN1ZmZpY2llbnQgdG8gc3luYyBmdXR1cmUgd3JpdGVzIHRvIHRoZSBsb2cgZmlsZS4KLQkJICov Ci0KLQkJLyogUHJlcGFyZSB0byB3cml0ZSBvdXQgYSBsb3Qgb2YgY29waWVzIG9mIG91ciB6ZXJv IGJ1ZmZlciBhdCBvbmNlLiAqLwotCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aG9mKGlvdik7 ICsraSkKLQkJewotCQkJaW92W2ldLmlvdl9iYXNlID0gemJ1ZmZlci5kYXRhOwotCQkJaW92W2ld Lmlvdl9sZW4gPSBYTE9HX0JMQ0tTWjsKLQkJfQotCi0JCS8qIExvb3AsIHdyaXRpbmcgYXMgbWFu eSBibG9ja3MgYXMgd2UgY2FuIGZvciBlYWNoIHN5c3RlbSBjYWxsLiAqLwotCQlibG9ja3MgPSB3 YWxfc2VnbWVudF9zaXplIC8gWExPR19CTENLU1o7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgYmxv Y2tzOykKLQkJewotCQkJaW50CQkJaW92Y250ID0gTWluKGJsb2NrcyAtIGksIGxlbmd0aG9mKGlv dikpOwotCQkJb2ZmX3QJCW9mZnNldCA9IGkgKiBYTE9HX0JMQ0tTWjsKLQotCQkJaWYgKHBnX3B3 cml0ZXZfd2l0aF9yZXRyeShmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCkgPCAwKQotCQkJewotCQkJ CXNhdmVfZXJybm8gPSBlcnJubzsKLQkJCQlicmVhazsKLQkJCX0KKwkJZWxvZyhERUJVRzIsICJ1 c2luZyBwcmUtYWxsb2NhdGVkIFdBTCBmaWxlIik7CiAKLQkJCWkgKz0gaW92Y250OwotCQl9CisJ CWZvdW5kID0gdHJ1ZTsKKwkJWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MtLTsKKwkJc25wcmlu dGYodG1wcGF0aCwgTUFYUEdQQVRILCAiJXMvcHJlYWxsb2NhdGVkX3NlZ21lbnRzL3hsb2d0ZW1w LiVkIiwKKwkJCQkgWExPR0RJUiwgWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MpOwogCX0KLQll bHNlCisKKwlpZiAoIWZvdW5kKQogCXsKIAkJLyoKLQkJICogT3RoZXJ3aXNlLCBzZWVraW5nIHRv IHRoZSBlbmQgYW5kIHdyaXRpbmcgYSBzb2xpdGFyeSBieXRlIGlzCi0JCSAqIGVub3VnaC4KKwkJ ICogV2UncmUgbm90IHVzaW5nIGEgcHJlLWFsbG9jYXRlZCBzZWdtZW50LCBzbyB0aGVyZSdzIG5v IG5lZWQgdG8ga2VlcAorCQkgKiBob2xkaW5nIHRoZSBXQUxQcmVhbGxvY2F0aW9uTG9jay4KIAkJ ICovCi0JCWVycm5vID0gMDsKLQkJaWYgKHBnX3B3cml0ZShmZCwgemJ1ZmZlci5kYXRhLCAxLCB3 YWxfc2VnbWVudF9zaXplIC0gMSkgIT0gMSkKLQkJewotCQkJLyogaWYgd3JpdGUgZGlkbid0IHNl dCBlcnJubywgYXNzdW1lIG5vIGRpc2sgc3BhY2UgKi8KLQkJCXNhdmVfZXJybm8gPSBlcnJubyA/ IGVycm5vIDogRU5PU1BDOwotCQl9Ci0JfQotCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKwkJ TFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7CiAKLQlpZiAoc2F2ZV9lcnJubykK LQl7CiAJCS8qCi0JCSAqIElmIHdlIGZhaWwgdG8gbWFrZSB0aGUgZmlsZSwgZGVsZXRlIGl0IHRv IHJlbGVhc2UgZGlzayBzcGFjZQorCQkgKiBJbml0aWFsaXplIGFuIGVtcHR5IChhbGwgemVyb2Vz KSBzZWdtZW50LiAgTk9URTogaXQgaXMgcG9zc2libGUgdGhhdAorCQkgKiBhbm90aGVyIHByb2Nl c3MgaXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcuICBJZiBzbywgd2Ugd2lsbCBlbmQgdXAKKwkJICog cHJlLWNyZWF0aW5nIGFuIGV4dHJhIGxvZyBzZWdtZW50LiAgVGhhdCBzZWVtcyBPSywgYW5kIGJl dHRlciB0aGFuCisJCSAqIGhvbGRpbmcgdGhlIGxvY2sgdGhyb3VnaG91dCB0aGlzIGxlbmd0aHkg cHJvY2Vzcy4KIAkJICovCi0JCXVubGluayh0bXBwYXRoKTsKLQotCQljbG9zZShmZCk7CisJCWVs b2coREVCVUcyLCAiY3JlYXRpbmcgYW5kIGZpbGxpbmcgbmV3IFdBTCBmaWxlIik7CiAKLQkJZXJy bm8gPSBzYXZlX2Vycm5vOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2Zp bGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wi OiAlbSIsIHRtcHBhdGgpKSk7CisJCXNucHJpbnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgWExPR0RJ UiAiL3hsb2d0ZW1wLiVkIiwgKGludCkgZ2V0cGlkKCkpOworCQlDcmVhdGVFbXB0eVdhbFNlZ21l bnQodG1wcGF0aCk7CiAJfQogCi0JcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRf V0FMX0lOSVRfU1lOQyk7Ci0JaWYgKHBnX2ZzeW5jKGZkKSAhPSAwKQotCXsKLQkJaW50CQkJc2F2 ZV9lcnJubyA9IGVycm5vOwotCi0JCWNsb3NlKGZkKTsKLQkJZXJybm8gPSBzYXZlX2Vycm5vOwot CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCSBl cnJtc2coImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJW0iLCB0bXBwYXRoKSkpOwotCX0K LQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7Ci0KLQlpZiAoY2xvc2UoZmQpICE9IDApCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJIGVycm1z ZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsIHRtcHBhdGgpKSk7Ci0KIAkvKgog CSAqIE5vdyBtb3ZlIHRoZSBzZWdtZW50IGludG8gcGxhY2Ugd2l0aCBpdHMgZmluYWwgbmFtZS4g IENvcGUgd2l0aAogCSAqIHBvc3NpYmlsaXR5IHRoYXQgc29tZW9uZSBlbHNlIGhhcyBjcmVhdGVk IHRoZSBmaWxlIHdoaWxlIHdlIHdlcmUKQEAgLTM0MzQsNyArMzM3MSw3IEBAIFhMb2dGaWxlSW5p dEludGVybmFsKFhMb2dTZWdObyBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBhdGgpCiAJ aWYgKEluc3RhbGxYTG9nRmlsZVNlZ21lbnQoJmluc3RhbGxlZF9zZWdubywgdG1wcGF0aCwgdHJ1 ZSwgbWF4X3NlZ25vKSkKIAl7CiAJCSphZGRlZCA9IHRydWU7Ci0JCWVsb2coREVCVUcyLCAiZG9u ZSBjcmVhdGluZyBhbmQgZmlsbGluZyBuZXcgV0FMIGZpbGUiKTsKKwkJZWxvZyhERUJVRzIsICJk b25lIGluc3RhbGxpbmcgbmV3IFdBTCBmaWxlIik7CiAJfQogCWVsc2UKIAl7CkBAIC0zNDQ3LDYg KzMzODQsMTggQEAgWExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05vIGxvZ3NlZ25vLCBib29s ICphZGRlZCwgY2hhciAqcGF0aCkKIAkJZWxvZyhERUJVRzIsICJhYmFuZG9uZWQgbmV3IFdBTCBm aWxlIik7CiAJfQogCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXNpbmcgYSBwcmUtYWxsb2NhdGVkIHNl Z21lbnQsIHdlJ3ZlIGJlZW4gaG9sZGluZyBvbnRvIHRoZQorCSAqIFdBTFByZWFsbG9jYXRpb25M b2NrIGFsbCB0aGlzIHRpbWUgc28gdGhhdCB0aGUgV0FMIEFsbG9jYXRvciBwcm9jZXNzCisJICog Y2FuJ3Qgb3ZlcndyaXRlIHRoZSBmaWxlIGJlZm9yZSB3ZSd2ZSBpbnN0YWxsZWQgaXQuCisJICoK KwkgKiBXaGlsZSB3ZSdyZSBhdCBpdCwgYWxzbyB0cnkgdG8gd2FrZSB1cCB0aGUgV0FMIGFsbG9j YXRvciBlYXJseSBzbyB0aGF0IGl0CisJICogY2FuIGdldCBhIGp1bXAgc3RhcnQgb24gYWxsb2Nh dGluZyBuZXcgc2VnbWVudHMgaWYgcG9zc2libGUuCisJICovCisJaWYgKGZvdW5kKQorCQlMV0xv Y2tSZWxlYXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsKKwlSZXF1ZXN0V2FsUHJlYWxsb2NhdGlv bigpOworCiAJcmV0dXJuIC0xOwogfQogCkBAIC00MzA1LDggKzQyNTQsOCBAQCBSZW1vdmVYbG9n RmlsZShjb25zdCBjaGFyICpzZWduYW1lLCBYTG9nU2VnTm8gcmVjeWNsZVNlZ05vLAogfQogCiAv KgotICogVmVyaWZ5IHdoZXRoZXIgcGdfd2FsIGFuZCBwZ193YWwvYXJjaGl2ZV9zdGF0dXMgZXhp c3QuCi0gKiBJZiB0aGUgbGF0dGVyIGRvZXMgbm90IGV4aXN0LCByZWNyZWF0ZSBpdC4KKyAqIFZl cmlmeSB3aGV0aGVyIHBnX3dhbCwgcGdfd2FsL2FyY2hpdmVfc3RhdHVzIGFuZCBwZ193YWwvcHJl YWxsb2NhdGVkX3NlZ21lbnRzCisgKiBleGlzdC4gIElmIGVpdGhlciBvZiB0aGUgbGF0dGVyIHR3 byBkbyBub3QgZXhpc3QsIHJlY3JlYXRlIGl0LgogICoKICAqIEl0IGlzIG5vdCB0aGUgZ29hbCBv ZiB0aGlzIGZ1bmN0aW9uIHRvIHZlcmlmeSB0aGUgY29udGVudHMgb2YgdGhlc2UKICAqIGRpcmVj dG9yaWVzLCBidXQgdG8gaGVscCBpbiBjYXNlcyB3aGVyZSBzb21lb25lIGhhcyBwZXJmb3JtZWQg YSBjbHVzdGVyCkBAIC00MzQ5LDYgKzQyOTgsMjYgQEAgVmFsaWRhdGVYTE9HRGlyZWN0b3J5U3Ry dWN0dXJlKHZvaWQpCiAJCQkJCShlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgbWlzc2luZyBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAl9CisKKwkvKiBDaGVjayBmb3Ig cHJlYWxsb2NhdGVkX3NlZ21lbnRzICovCisJc25wcmludGYocGF0aCwgTUFYUEdQQVRILCBYTE9H RElSICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIik7CisJaWYgKHN0YXQocGF0aCwgJnN0YXRfYnVm KSA9PSAwKQorCXsKKwkJLyogQ2hlY2sgZm9yIHdlaXJkIGNhc2VzIHdoZXJlIGl0IGV4aXN0cyBi dXQgaXNuJ3QgYSBkaXJlY3RvcnkgKi8KKwkJaWYgKCFTX0lTRElSKHN0YXRfYnVmLnN0X21vZGUp KQorCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJKGVycm1zZygicmVxdWlyZWQgV0FMIGRpcmVjdG9y eSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBhdGgpKSk7CisJfQorCWVsc2UKKwl7 CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImNyZWF0aW5nIG1pc3NpbmcgV0FMIGRpcmVj dG9yeSBcIiVzXCIiLCBwYXRoKSkpOworCQlpZiAoTWFrZVBHRGlyZWN0b3J5KHBhdGgpIDwgMCkK KwkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgbWlzc2lu ZyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkJcGF0aCkpKTsKKwl9CiB9CiAKIC8qCkBA IC01MjU2LDYgKzUyMjUsOSBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZY TG9nQ3RsLT51bHNuX2xjayk7CiAJSW5pdFNoYXJlZExhdGNoKCZYTG9nQ3RsLT5yZWNvdmVyeVdh a2V1cExhdGNoKTsKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dDdGwtPnJlY292ZXJ5Tm90 UGF1c2VkQ1YpOworCisJLyogcHJvdGVjdGVkIGJ5IFdBTFByZWFsbG9jYXRpb25Mb2NrICovCisJ WExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MgPSAwOwogfQogCiAvKgpAQCAtMTI5ODksMyArMTI5 NjEsNTUgQEAgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5KHZvaWQpCiB7CiAJZG9SZXF1ZXN0 V2FsUmVjZWl2ZXJSZXBseSA9IHRydWU7CiB9CisKK2ludAorR2V0TnVtUHJlYWxsb2NhdGVkV2Fs U2Vncyh2b2lkKQoreworCWludCByZXQ7CisKKwlMV0xvY2tBY3F1aXJlKFdBTFByZWFsbG9jYXRp b25Mb2NrLCBMV19TSEFSRUQpOworCXJldCA9IFhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzOwor CUxXTG9ja1JlbGVhc2UoV0FMUHJlYWxsb2NhdGlvbkxvY2spOworCisJcmV0dXJuIHJldDsKK30K Kwordm9pZAorU2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncyhpbnQgaSkKK3sKKwlMV0xvY2tBY3F1 aXJlKFdBTFByZWFsbG9jYXRpb25Mb2NrLCBMV19FWENMVVNJVkUpOworCVhMb2dDdGwtPm51bV9w cmVhbGxvY19zZWdzID0gaTsKKwlMV0xvY2tSZWxlYXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsK K30KKworLyoKKyAqIEluc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcKKyAqCisgKiBSZW5hbWVzIHRo ZSBmaWxlIGF0ICJwYXRoIiB0byB0aGUgbmV4dCBvcGVuIHByZS1hbGxvY2F0ZWQgc2VnbWVudCBz bG90IGFuZAorICogYnVtcHMgdXAgWExvZ0N0bC0+bnVtX3ByZWFsbG9jX3NlZ3MuCisgKi8KK3Zv aWQKK0luc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcoY29uc3QgY2hhciAqcGF0aCkKK3sKKwljaGFy CW5ld3BhdGhbTUFYUEdQQVRIXTsKKworCUxXTG9ja0FjcXVpcmUoV0FMUHJlYWxsb2NhdGlvbkxv Y2ssIExXX0VYQ0xVU0lWRSk7CisKKwlzbnByaW50ZihuZXdwYXRoLCBNQVhQR1BBVEgsICIlcy9w cmVhbGxvY2F0ZWRfc2VnbWVudHMveGxvZ3RlbXAuJWQiLAorCQkJIFhMT0dESVIsIFhMb2dDdGwt Pm51bV9wcmVhbGxvY19zZWdzKTsKKwkodm9pZCkgZHVyYWJsZV9yZW5hbWUocGF0aCwgbmV3cGF0 aCwgRVJST1IpOworCVhMb2dDdGwtPm51bV9wcmVhbGxvY19zZWdzKys7CisKKwlMV0xvY2tSZWxl YXNlKFdBTFByZWFsbG9jYXRpb25Mb2NrKTsKK30KKworLyoKKyAqIFJlcXVlc3QgdGhhdCB0aGUg V0FMIGFsbG9jYXRvciB3YWtlIHVwIGVhcmx5LgorICovCit2b2lkCitSZXF1ZXN0V2FsUHJlYWxs b2NhdGlvbih2b2lkKQoreworCWlmIChQcm9jR2xvYmFsLT53YWxBbGxvY2F0b3JMYXRjaCAmJgor CQlXYWxQcmVhbGxvY2F0aW9uRW5hYmxlZCgpKQorCQlTZXRMYXRjaChQcm9jR2xvYmFsLT53YWxB bGxvY2F0b3JMYXRjaCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9v dHN0cmFwLmMgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKaW5kZXggOTRhYjVj YTA5NS4uNTYxMzIzMzdiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3Rz dHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtMzYsNiAr MzYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0 ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKKyNpbmNsdWRlICJwb3N0bWFz dGVyL3dhbF9hbGxvY2F0b3IuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZtZ3IuaCIKQEAgLTMzMyw2ICszMzQsOSBAQCBBdXhpbGlhcnlQcm9jZXNzTWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQljYXNlIFdhbFJlY2VpdmVyUHJvY2VzczoKIAkJCU15QmFja2Vu ZFR5cGUgPSBCX1dBTF9SRUNFSVZFUjsKIAkJCWJyZWFrOworCQljYXNlIFdhbEFsbG9jYXRvclBy b2Nlc3M6CisJCQlNeUJhY2tlbmRUeXBlID0gQl9XQUxfQUxMT0NBVE9SOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQlNeUJhY2tlbmRUeXBlID0gQl9JTlZBTElEOwogCX0KQEAgLTQ2OCw2ICs0 NzIsMTAgQEAgQXV4aWxpYXJ5UHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ CVdhbFJlY2VpdmVyTWFpbigpOwogCQkJcHJvY19leGl0KDEpOwogCisJCWNhc2UgV2FsQWxsb2Nh dG9yUHJvY2VzczoKKwkJCVdhbEFsbG9jYXRvck1haW4oKTsKKwkJCXByb2NfZXhpdCgxKTsKKwog CQlkZWZhdWx0OgogCQkJZWxvZyhQQU5JQywgInVucmVjb2duaXplZCBwcm9jZXNzIHR5cGU6ICVk IiwgKGludCkgTXlBdXhQcm9jVHlwZSk7CiAJCQlwcm9jX2V4aXQoMSk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9N YWtlZmlsZQppbmRleCBiZmRmNmE4MzNkLi40YmFjMWU2NDBmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFr ZWZpbGUKQEAgLTI0LDYgKzI0LDcgQEAgT0JKUyA9IFwKIAlwb3N0bWFzdGVyLm8gXAogCXN0YXJ0 dXAubyBcCiAJc3lzbG9nZ2VyLm8gXAorCXdhbF9hbGxvY2F0b3IubyBcCiAJd2Fsd3JpdGVyLm8K IAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA1YTA1MDg5OGZlLi44MjkzOWE1YjYyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMjUxLDYgKzI1MSw3IEBAIHN0YXRpYyBwaWRf dCBTdGFydHVwUElEID0gMCwKIAkJCUNoZWNrcG9pbnRlclBJRCA9IDAsCiAJCQlXYWxXcml0ZXJQ SUQgPSAwLAogCQkJV2FsUmVjZWl2ZXJQSUQgPSAwLAorCQkJV2FsQWxsb2NhdG9yUElEID0gMCwK IAkJCUF1dG9WYWNQSUQgPSAwLAogCQkJUGdBcmNoUElEID0gMCwKIAkJCVBnU3RhdFBJRCA9IDAs CkBAIC01NTcsNiArNTU4LDcgQEAgc3RhdGljIHZvaWQgU2htZW1CYWNrZW5kQXJyYXlSZW1vdmUo QmFja2VuZCAqYm4pOwogI2RlZmluZSBTdGFydENoZWNrcG9pbnRlcigpCQlTdGFydENoaWxkUHJv Y2VzcyhDaGVja3BvaW50ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFydFdhbFdyaXRlcigpCQlTdGFy dENoaWxkUHJvY2VzcyhXYWxXcml0ZXJQcm9jZXNzKQogI2RlZmluZSBTdGFydFdhbFJlY2VpdmVy KCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKFdhbFJlY2VpdmVyUHJvY2VzcykKKyNkZWZpbmUgU3RhcnRX YWxBbGxvY2F0b3IoKQkJU3RhcnRDaGlsZFByb2Nlc3MoV2FsQWxsb2NhdG9yUHJvY2VzcykKIAog LyogTWFjcm9zIHRvIGNoZWNrIGV4aXQgc3RhdHVzIG9mIGEgY2hpbGQgcHJvY2VzcyAqLwogI2Rl ZmluZSBFWElUX1NUQVRVU18wKHN0KSAgKChzdCkgPT0gMCkKQEAgLTE3ODEsNiArMTc4MywxMyBA QCBTZXJ2ZXJMb29wKHZvaWQpCiAJCWlmIChXYWxXcml0ZXJQSUQgPT0gMCAmJiBwbVN0YXRlID09 IFBNX1JVTikKIAkJCVdhbFdyaXRlclBJRCA9IFN0YXJ0V2FsV3JpdGVyKCk7CiAKKwkJLyoKKwkJ ICogSWYgd2UgaGF2ZSBsb3N0IHRoZSBXQUwgYWxsb2NhdG9yIHByb2Nlc3MsIHRyeSB0byBzdGFy dCBhIG5ldyBvbmUuCisJCSAqLworCQlpZiAoV2FsQWxsb2NhdG9yUElEID09IDAgJiYKKwkJCShw bVN0YXRlID09IFBNX1JVTiB8fCBwbVN0YXRlID09IFBNX0hPVF9TVEFOREJZKSkKKwkJCVdhbEFs bG9jYXRvclBJRCA9IFN0YXJ0V2FsQWxsb2NhdG9yKCk7CisKIAkJLyoKIAkJICogSWYgd2UgaGF2 ZSBsb3N0IHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyLCB0cnkgdG8gc3RhcnQgYSBuZXcgb25lLiBX ZQogCQkgKiBkb24ndCB3YW50IGF1dG92YWN1dW0gdG8gcnVuIGluIGJpbmFyeSB1cGdyYWRlIG1v ZGUgYmVjYXVzZQpAQCAtMjY5Niw2ICsyNzA1LDggQEAgU0lHSFVQX2hhbmRsZXIoU0lHTkFMX0FS R1MpCiAJCQlzaWduYWxfY2hpbGQoV2FsV3JpdGVyUElELCBTSUdIVVApOwogCQlpZiAoV2FsUmVj ZWl2ZXJQSUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChXYWxSZWNlaXZlclBJRCwgU0lHSFVQKTsK KwkJaWYgKFdhbEFsbG9jYXRvclBJRCAhPSAwKQorCQkJc2lnbmFsX2NoaWxkKFdhbEFsbG9jYXRv clBJRCwgU0lHSFVQKTsKIAkJaWYgKEF1dG9WYWNQSUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChB dXRvVmFjUElELCBTSUdIVVApOwogCQlpZiAoUGdBcmNoUElEICE9IDApCkBAIC0zMDIzLDYgKzMw MzQsOCBAQCByZWFwZXIoU0lHTkFMX0FSR1MpCiAJCQkJQmdXcml0ZXJQSUQgPSBTdGFydEJhY2tn cm91bmRXcml0ZXIoKTsKIAkJCWlmIChXYWxXcml0ZXJQSUQgPT0gMCkKIAkJCQlXYWxXcml0ZXJQ SUQgPSBTdGFydFdhbFdyaXRlcigpOworCQkJaWYgKFdhbEFsbG9jYXRvclBJRCA9PSAwKQorCQkJ CVdhbEFsbG9jYXRvclBJRCA9IFN0YXJ0V2FsQWxsb2NhdG9yKCk7CiAKIAkJCS8qCiAJCQkgKiBM aWtld2lzZSwgc3RhcnQgb3RoZXIgc3BlY2lhbCBjaGlsZHJlbiBhcyBuZWVkZWQuICBJbiBhIHJl c3RhcnQKQEAgLTMxNTAsNiArMzE2MywyMCBAQCByZWFwZXIoU0lHTkFMX0FSR1MpCiAJCQljb250 aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIFdhcyBpdCB0aGUgV0FMIGFsbG9jYXRvcj8gIE5vcm1h bCBleGl0IGNhbiBiZSBpZ25vcmVkOyB3ZSdsbCBzdGFydCBhCisJCSAqIG5ldyBvbmUgYXQgdGhl IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBwb3N0bWFzdGVyJ3MgbWFpbiBsb29wLCBpZgorCQkgKiBu ZWNlc3NhcnkuICBBbnkgb3RoZXIgZXhpdCBjb25kaXRpb24gaXMgdHJlYXRlZCBhcyBhIGNyYXNo LgorCQkgKi8KKwkJaWYgKHBpZCA9PSBXYWxBbGxvY2F0b3JQSUQpCisJCXsKKwkJCVdhbEFsbG9j YXRvclBJRCA9IDA7CisJCQlpZiAoIUVYSVRfU1RBVFVTXzAoZXhpdHN0YXR1cykpCisJCQkJSGFu ZGxlQ2hpbGRDcmFzaChwaWQsIGV4aXRzdGF0dXMsCisJCQkJCQkJCSBfKCJXQUwgQWxsb2NhdG9y IHByb2Nlc3MiKSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCS8qCiAJCSAqIFdhcyBpdCB0aGUg YXV0b3ZhY3V1bSBsYXVuY2hlcj8JTm9ybWFsIGV4aXQgY2FuIGJlIGlnbm9yZWQ7IHdlJ2xsCiAJ CSAqIHN0YXJ0IGEgbmV3IG9uZSBhdCB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIHBvc3RtYXN0 ZXIncyBtYWluCkBAIC0zNjIzLDYgKzM2NTAsMTggQEAgSGFuZGxlQ2hpbGRDcmFzaChpbnQgcGlk LCBpbnQgZXhpdHN0YXR1cywgY29uc3QgY2hhciAqcHJvY25hbWUpCiAJCXNpZ25hbF9jaGlsZChX YWxSZWNlaXZlclBJRCwgKFNlbmRTdG9wID8gU0lHU1RPUCA6IFNJR1FVSVQpKTsKIAl9CiAKKwkv KiBUYWtlIGNhcmUgb2YgdGhlIFdBTCBhbGxvY2F0b3IgdG9vICovCisJaWYgKHBpZCA9PSBXYWxB bGxvY2F0b3JQSUQpCisJCVdhbEFsbG9jYXRvclBJRCA9IDA7CisJZWxzZSBpZiAoV2FsQWxsb2Nh dG9yUElEICE9IDAgJiYgdGFrZV9hY3Rpb24pCisJeworCQllcmVwb3J0KERFQlVHMiwKKwkJCQko ZXJybXNnX2ludGVybmFsKCJzZW5kaW5nICVzIHRvIHByb2Nlc3MgJWQiLAorCQkJCQkJCQkgKFNl bmRTdG9wID8gIlNJR1NUT1AiIDogIlNJR1FVSVQiKSwKKwkJCQkJCQkJIChpbnQpIFdhbEFsbG9j YXRvclBJRCkpKTsKKwkJc2lnbmFsX2NoaWxkKFdhbEFsbG9jYXRvclBJRCwgKFNlbmRTdG9wID8g U0lHU1RPUCA6IFNJR1FVSVQpKTsKKwl9CisKIAkvKiBUYWtlIGNhcmUgb2YgdGhlIGF1dG92YWN1 dW0gbGF1bmNoZXIgdG9vICovCiAJaWYgKHBpZCA9PSBBdXRvVmFjUElEKQogCQlBdXRvVmFjUElE ID0gMDsKQEAgLTM4MTAsNiArMzg0OSw4IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkK IAkJCXNpZ25hbF9jaGlsZChTdGFydHVwUElELCBTSUdURVJNKTsKIAkJaWYgKFdhbFJlY2VpdmVy UElEICE9IDApCiAJCQlzaWduYWxfY2hpbGQoV2FsUmVjZWl2ZXJQSUQsIFNJR1RFUk0pOworCQlp ZiAoV2FsQWxsb2NhdG9yUElEICE9IDApCisJCQlzaWduYWxfY2hpbGQoV2FsQWxsb2NhdG9yUElE LCBTSUdURVJNKTsKIAkJLyogY2hlY2twb2ludGVyLCBhcmNoaXZlciwgc3RhdHMsIGFuZCBzeXNs b2dnZXIgbWF5IGNvbnRpbnVlIGZvciBub3cgKi8KIAogCQkvKiBOb3cgdHJhbnNpdGlvbiB0byBQ TV9XQUlUX0JBQ0tFTkRTIHN0YXRlIHRvIHdhaXQgZm9yIHRoZW0gdG8gZGllICovCkBAIC0zODQw LDYgKzM4ODEsNyBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQkoQ2hlY2twb2lu dGVyUElEID09IDAgfHwKIAkJCSAoIUZhdGFsRXJyb3IgJiYgU2h1dGRvd24gPCBJbW1lZGlhdGVT aHV0ZG93bikpICYmCiAJCQlXYWxXcml0ZXJQSUQgPT0gMCAmJgorCQkJV2FsQWxsb2NhdG9yUElE ID09IDAgJiYKIAkJCUF1dG9WYWNQSUQgPT0gMCkKIAkJewogCQkJaWYgKFNodXRkb3duID49IElt bWVkaWF0ZVNodXRkb3duIHx8IEZhdGFsRXJyb3IpCkBAIC0zOTMzLDYgKzM5NzUsNyBAQCBQb3N0 bWFzdGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQlBc3NlcnQoQmdXcml0ZXJQSUQgPT0gMCk7CiAJ CQlBc3NlcnQoQ2hlY2twb2ludGVyUElEID09IDApOwogCQkJQXNzZXJ0KFdhbFdyaXRlclBJRCA9 PSAwKTsKKwkJCUFzc2VydChXYWxBbGxvY2F0b3JQSUQgPT0gMCk7CiAJCQlBc3NlcnQoQXV0b1Zh Y1BJRCA9PSAwKTsKIAkJCUFzc2VydChQZ0FyY2hQSUQgPT0gMCk7CiAJCQkvKiBzeXNsb2dnZXIg aXMgbm90IGNvbnNpZGVyZWQgaGVyZSAqLwpAQCAtNDE0Miw2ICs0MTg1LDggQEAgVGVybWluYXRl Q2hpbGRyZW4oaW50IHNpZ25hbCkKIAkJc2lnbmFsX2NoaWxkKFdhbFdyaXRlclBJRCwgc2lnbmFs KTsKIAlpZiAoV2FsUmVjZWl2ZXJQSUQgIT0gMCkKIAkJc2lnbmFsX2NoaWxkKFdhbFJlY2VpdmVy UElELCBzaWduYWwpOworCWlmIChXYWxBbGxvY2F0b3JQSUQgIT0gMCkKKwkJc2lnbmFsX2NoaWxk KFdhbEFsbG9jYXRvclBJRCwgc2lnbmFsKTsKIAlpZiAoQXV0b1ZhY1BJRCAhPSAwKQogCQlzaWdu YWxfY2hpbGQoQXV0b1ZhY1BJRCwgc2lnbmFsKTsKIAlpZiAoUGdBcmNoUElEICE9IDApCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjM4Y2ViZjc5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3dhbF9hbGxvY2F0b3IuYwpAQCAtMCwwICsxLDMxNSBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogd2FsX2FsbG9jYXRvci5jCisgKgorICogVGhlIFdBTCBhbGxvY2F0b3Ig aXMgbmV3IGFzIG9mIFBvc3RncmVzIDE1LiAgSXQgYXR0ZW1wdHMgdG8ga2VlcCByZWd1bGFyCisg KiBiYWNrZW5kcyBmcm9tIGhhdmluZyB0byBhbGxvY2F0ZSBuZXcgV0FMIHNlZ21lbnRzLiAgRXZl biB3aGVuCisgKiB3YWxfcmVjeWNsZSBpcyBlbmFibGVkLCBwcmUtYWxsb2NhdGluZyBXQUwgc2Vn bWVudHMgY2FuIHlpZWxkCisgKiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMg aW4gY2VydGFpbiBzY2VuYXJpb3MuICBOb3RlIHRoYXQKKyAqIHJlZ3VsYXIgYmFja2VuZHMgYXJl IHN0aWxsIGVtcG93ZXJlZCB0byBjcmVhdGUgbmV3IFdBTCBzZWdtZW50cyBpZiB0aGUKKyAqIFdB TCBhbGxvY2F0b3IgZmFpbHMgdG8gZ2VuZXJhdGUgZW5vdWdoIG5ldyBzZWdtZW50cy4KKyAqCisg KiBUaGUgV0FMIGFsbG9jYXRvciBpcyBjb250cm9sbGVkIGJ5IG9uZSBwYXJhbWV0ZXI6IHdhbF9h bGxvY2F0b3JfbWF4X3NpemUuCisgKiB3YWxfYWxsb2NhdG9yX21heF9zaXplIHNwZWNpZmllcyB0 aGUgbWF4aW11bSBhbW91bnQgb2YgV0FMIHRvIHByZS0KKyAqIGFsbG9jYXRlLiAgSWYgdGhpcyB2 YWx1ZSBpcyBub3QgZGl2aXNpYmxlIGJ5IHRoZSBXQUwgc2VnbWVudCBzaXplLCBmZXdlcgorICog V0FMIHNlZ21lbnRzIHdpbGwgYmUgcHJlLWFsbG9jYXRlZC4KKyAqCisgKiBUaGUgV0FMIGFsbG9j YXRvciBpcyBzdGFydGVkIGJ5IHRoZSBwb3N0bWFzdGVyIGFzIHNvb24gYXMgdGhlIHN0YXJ0dXAK KyAqIHN1YnByb2Nlc3MgZmluaXNoZXMsIG9yIGFzIHNvb24gYXMgcmVjb3ZlcnkgYmVnaW5zIGlm IHdlIGFyZSBkb2luZworICogYXJjaGl2ZSByZWNvdmVyeS4gIEl0IHJlbWFpbnMgYWxpdmUgdW50 aWwgdGhlIHBvc3RtYXN0ZXIgY29tbWFuZHMgaXQgdG8KKyAqIHRlcm1pbmF0ZS4gIE5vcm1hbCB0 ZXJtaW5hdGlvbiBpcyBieSBTSUdURVJNLCB3aGljaCBpbnN0cnVjdHMgdGhlCisgKiBXQUwgYWxs b2NhdG9yIHRvIGV4aXQoMCkuICBFbWVyZ2VuY3kgdGVybWluYXRpb24gaXMgYnkgU0lHUVVJVDsg bGlrZSBhbnkKKyAqIGJhY2tlbmQsIHRoZSBXQUwgYWxsb2NhdG9yIHdpbGwgc2ltcGx5IGFib3J0 IGFuZCBleGl0IG9uIFNJR1FVSVQuCisgKgorICogSWYgdGhlIFdBTCBhbGxvY2F0b3IgZXhpdHMg dW5leHBlY3RlZGx5LCB0aGUgcG9zdG1hc3RlciB0cmVhdHMgdGhhdCB0aGUKKyAqIHNhbWUgYXMg YSBiYWNrZW5kIGNyYXNoOiBzaGFyZWQgbWVtb3J5IG1heSBiZSBjb3JydXB0ZWQsIHNvIHJlbWFp bmluZworICogYmFja2VuZHMgc2hvdWxkIGJlIGtpbGxlZCBieSBTSUdRVUlUIGFuZCB0aGVuIGEg cmVjb3ZlcnkgY3ljbGUgc3RhcnRlZC4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2FsX2FsbG9j YXRvci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKworI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisj aW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJwcS9wcXNpZ25h bC5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0 LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxfYWxsb2NhdG9yLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgor I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisKKyNkZWZpbmUgV0FMX0FMTE9DX1RJTUVPVVRfUyAoNjApCisK Ky8qCisgKiBHVUMgcGFyYW1ldGVycworICovCitpbnQJCQl3YWxfYWxsb2NfbWF4X3NpemVfbWIg PSA2NDsKKworc3RhdGljIHZvaWQgRG9XYWxQcmVBbGxvY2F0aW9uKHZvaWQpOworc3RhdGljIHZv aWQgU2NhbkZvckV4aXN0aW5nUHJlYWxsb2NhdGVkU2VnbWVudHModm9pZCk7CisKKy8qCisgKiBN YWluIGVudHJ5IHBvaW50IGZvciBXQUwgYWxsb2NhdG9yIHByb2Nlc3MKKyAqCisgKiBUaGlzIGlz IGludm9rZWQgZnJvbSBBdXhpbGlhcnlQcm9jZXNzTWFpbiwgd2hpY2ggaGFzIGFscmVhZHkgY3Jl YXRlZCB0aGUKKyAqIGJhc2ljIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCwgYnV0IG5vdCBlbmFibGVk IHNpZ25hbHMgeWV0LgorICovCit2b2lkCitXYWxBbGxvY2F0b3JNYWluKHZvaWQpCit7CisJc2ln am1wX2J1Zglsb2NhbF9zaWdqbXBfYnVmOworCU1lbW9yeUNvbnRleHQgd2FsX2FsbG9jX2NvbnRl eHQ7CisKKwkvKgorCSAqIFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUgc2lnbmFscyB0aGF0IG1p Z2h0IGJlIHNlbnQgdG8gdXMuCisJICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVy Rm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOworCXBxc2lnbmFs KFNJR1RFUk0sIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOworCS8qIFNJR1FVSVQg aGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLworCXBx c2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOworCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwor CXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25h bChTSUdVU1IyLCBTSUdfSUdOKTsKKworCS8qCisJICogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQg YXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlCisJICovCisJcHFzaWduYWwo U0lHQ0hMRCwgU0lHX0RGTCk7CisKKwkvKgorCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRo YXQgd2Ugd2lsbCBkbyBhbGwgb3VyIHdvcmsgaW4uICBXZSBkbyB0aGlzIHNvCisJICogdGhhdCB3 ZSBjYW4gcmVzZXQgdGhlIGNvbnRleHQgZHVyaW5nIGVycm9yIHJlY292ZXJ5IGFuZCB0aGVyZWJ5 IGF2b2lkCisJICogcG9zc2libGUgbWVtb3J5IGxlYWtzLgorCSAqLworCXdhbF9hbGxvY19jb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJ CSAgIldBTCBBbGxvY2F0b3IiLAorCQkJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyh3YWxfYWxsb2NfY29udGV4dCk7CisKKwkvKgorCSAq IElmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCwgcHJvY2Vzc2luZyByZXN1bWVzIGhlcmUu CisJICoKKwkgKiBZb3UgbWlnaHQgd29uZGVyIHdoeSB0aGlzIGlzbid0IGNvZGVkIGFzIGFuIGlu ZmluaXRlIGxvb3AgYXJvdW5kIGEKKwkgKiBQR19UUlkgY29uc3RydWN0LiAgVGhlIHJlYXNvbiBp cyB0aGF0IHRoaXMgaXMgdGhlIGJvdHRvbSBvZiB0aGUKKwkgKiBleGNlcHRpb24gc3RhY2ssIGFu ZCBzbyB3aXRoIFBHX1RSWSB0aGVyZSB3b3VsZCBiZSBubyBleGNlcHRpb24gaGFuZGxlcgorCSAq IGluIGZvcmNlIGF0IGFsbCBkdXJpbmcgdGhlIENBVENIIHBhcnQuICBCeSBsZWF2aW5nIHRoZSBv dXRlcm1vc3Qgc2V0am1wCisJICogYWx3YXlzIGFjdGl2ZSwgd2UgaGF2ZSBhdCBsZWFzdCBzb21l IGNoYW5jZSBvZiByZWNvdmVyaW5nIGZyb20gYW4gZXJyb3IKKwkgKiBkdXJpbmcgZXJyb3IgcmVj b3ZlcnkuICAoSWYgd2UgZ2V0IGludG8gYW4gaW5maW5pdGUgbG9vcCB0aGVyZWJ5LCBpdAorCSAq IHdpbGwgc29vbiBiZSBzdG9wcGVkIGJ5IG92ZXJmbG93IG9mIGVsb2cuYydzIGludGVybmFsIHN0 YXRlIHN0YWNrLikKKwkgKgorCSAqIE5vdGUgdGhhdCB3ZSB1c2Ugc2lnc2V0am1wKC4uLiwgMSks IHNvIHRoYXQgdGhlIHByZXZhaWxpbmcgc2lnbmFsIG1hc2sKKwkgKiAodG8gd2l0LCBCbG9ja1Np Zykgd2lsbCBiZSByZXN0b3JlZCB3aGVuIGxvbmdqbXAnaW5nIHRvIGhlcmUuICBUaHVzLAorCSAq IHNpZ25hbHMgb3RoZXIgdGhhbiBTSUdRVUlUIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB3ZSBjb21w bGV0ZSBlcnJvcgorCSAqIHJlY292ZXJ5LiAgSXQgbWlnaHQgc2VlbSB0aGF0IHRoaXMgcG9saWN5 IG1ha2VzIHRoZSBIT0xEX0lOVEVSUlVQVFMoKQorCSAqIGNhbGwgcmVkdW5kYW50LCBidXQgaXQg aXMgbm90IHNpbmNlIEludGVycnVwdFBlbmRpbmcgbWlnaHQgYmUgc2V0CisJICogYWxyZWFkeS4K KwkgKi8KKwlpZiAoc2lnc2V0am1wKGxvY2FsX3NpZ2ptcF9idWYsIDEpICE9IDApCisJeworCQkv KiBTaW5jZSBub3QgdXNpbmcgUEdfVFJZLCBtdXN0IHJlc2V0IGVycm9yIHN0YWNrIGJ5IGhhbmQg Ki8KKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKKwkJLyogUHJldmVudCBpbnRlcnJ1 cHRzIHdoaWxlIGNsZWFuaW5nIHVwICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCS8qIFJl cG9ydCB0aGUgZXJyb3IgdG8gdGhlIHNlcnZlciBsb2cgKi8KKwkJRW1pdEVycm9yUmVwb3J0KCk7 CisKKwkJLyoKKwkJICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhbGx5IGp1c3QgYSBtaW5pbWFs IHN1YnNldCBvZgorCQkgKiBBYm9ydFRyYW5zYWN0aW9uKCkuICBXZSBkb24ndCBoYXZlIHZlcnkg bWFueSByZXNvdXJjZXMgdG8gd29ycnkKKwkJICogYWJvdXQuCisJCSAqLworCQlMV0xvY2tSZWxl YXNlQWxsKCk7CisJCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKKwkJcGdzdGF0X3Jl cG9ydF93YWl0X2VuZCgpOworCQlBYm9ydEJ1ZmZlcklPKCk7CisJCVVubG9ja0J1ZmZlcnMoKTsK KwkJUmVsZWFzZUF1eFByb2Nlc3NSZXNvdXJjZXMoZmFsc2UpOworCQlBdEVPWGFjdF9CdWZmZXJz KGZhbHNlKTsKKwkJQXRFT1hhY3RfU01ncigpOworCQlBdEVPWGFjdF9GaWxlcyhmYWxzZSk7CisJ CUF0RU9YYWN0X0hhc2hUYWJsZXMoZmFsc2UpOworCisJCS8qCisJCSAqIE5vdyByZXR1cm4gdG8g bm9ybWFsIHRvcC1sZXZlbCBjb250ZXh0IGFuZCBjbGVhciBFcnJvckNvbnRleHQgZm9yCisJCSAq IG5leHQgdGltZS4KKwkJICovCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyh3YWxfYWxsb2NfY29u dGV4dCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCS8qIEZsdXNoIGFueSBsZWFrZWQgZGF0 YSBpbiB0aGUgdG9wLWxldmVsIGNvbnRleHQgKi8KKwkJTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVs ZXRlQ2hpbGRyZW4od2FsX2FsbG9jX2NvbnRleHQpOworCisJCS8qIE5vdyB3ZSBjYW4gYWxsb3cg aW50ZXJydXB0cyBhZ2FpbiAqLworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAq IFNsZWVwIGF0IGxlYXN0IDEgc2Vjb25kIGFmdGVyIGFueSBlcnJvci4gIEEgd3JpdGUgZXJyb3Ig aXMgbGlrZWx5CisJCSAqIHRvIGJlIHJlcGVhdGVkLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBiZSBm aWxsaW5nIHRoZSBlcnJvciBsb2dzIGFzCisJCSAqIGZhc3QgYXMgd2UgY2FuLgorCQkgKi8KKwkJ cGdfdXNsZWVwKDEwMDAwMDBMKTsKKworCQkvKgorCQkgKiBDbG9zZSBhbGwgb3BlbiBmaWxlcyBh ZnRlciBhbnkgZXJyb3IuICBUaGlzIGlzIGhlbHBmdWwgb24gV2luZG93cywKKwkJICogd2hlcmUg aG9sZGluZyBkZWxldGVkIGZpbGVzIG9wZW4gY2F1c2VzIHZhcmlvdXMgc3RyYW5nZSBlcnJvcnMu CisJCSAqIEl0J3Mgbm90IGNsZWFyIHdlIG5lZWQgaXQgZWxzZXdoZXJlLCBidXQgc2hvdWxkbid0 IGh1cnQuCisJCSAqLworCQlzbWdyY2xvc2VhbGwoKTsKKworCQkvKiBSZXBvcnQgd2FpdCBlbmQg aGVyZSwgd2hlbiB0aGVyZSBpcyBubyBmdXJ0aGVyIHBvc3NpYmlsaXR5IG9mIHdhaXQgKi8KKwkJ cGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOworCX0KKworCS8qIFdlIGNhbiBub3cgaGFuZGxlIGVy ZXBvcnQoRVJST1IpICovCisJUEdfZXhjZXB0aW9uX3N0YWNrID0gJmxvY2FsX3NpZ2ptcF9idWY7 CisKKwkvKgorCSAqIFVuYmxvY2sgc2lnbmFscyAodGhleSB3ZXJlIGJsb2NrZWQgd2hlbiB0aGUg cG9zdG1hc3RlciBmb3JrZWQgdXMpCisJICovCisJUEdfU0VUTUFTSygmVW5CbG9ja1NpZyk7CisK KwkvKgorCSAqIEFkdmVydGlzZSBvdXIgbGF0Y2ggdGhhdCBiYWNrZW5kcyBjYW4gdXNlIHRvIHdh a2UgdXMgdXAgd2hpbGUgd2UncmUKKwkgKiBzbGVlcGluZy4KKwkgKi8KKwlQcm9jR2xvYmFsLT53 YWxBbGxvY2F0b3JMYXRjaCA9ICZNeVByb2MtPnByb2NMYXRjaDsKKworCS8qCisJICogQmVmb3Jl IHdlIGdvIGludG8gdGhlIG1haW4gbG9vcCwgc2NhbiB0aGUgcHJlLWFsbG9jYXRlZCBzZWdtZW50 cworCSAqIGRpcmVjdG9yeSBhbmQgbG9vayBmb3IgYW55dGhpbmcgdGhhdCB3YXMgbGVmdCBvdmVy IGZyb20gdGhlIGxhc3QgdGltZS4KKwkgKi8KKwlTY2FuRm9yRXhpc3RpbmdQcmVhbGxvY2F0ZWRT ZWdtZW50cygpOworCisJLyoKKwkgKiBMb29wIGZvcmV2ZXIKKwkgKi8KKwlmb3IgKDs7KQorCXsK KwkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCisJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisKKwkJSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CisKKwkJRG9XYWxQcmVB bGxvY2F0aW9uKCk7CisKKwkJLyogWFhYOiBTZW5kIGFjdGl2aXR5IHN0YXRpc3RpY3MgdG8gdGhl IHN0YXRzIGNvbGxlY3RvciAqLworCisJCS8qIFNsZWVwIHVudGlsIHdlIGFyZSBzaWduYWxlZCBv ciBXQUxfQUxMT0NfVElNRU9VVF9TIGhhcyBlbGFwc2VkLiAqLworCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkgV0FMX0FMTE9DX1RJTUVPVVRfUyAqIDEwMDBMIC8qIGNvbnZlcnQg dG8gbXMgKi8sCisJCQkJCQkgV0FJVF9FVkVOVF9XQUxfQUxMT0NBVE9SX01BSU4pOworCX0KKwor CXBnX3VucmVhY2hhYmxlKCk7Cit9CisKKy8qCisgKiBEb1dhbFByZUFsbG9jYXRpb24KKyAqCisg KiBUcmllcyB0byBhbGxvY2F0ZSB1cCB0byB3YWxfYWxsb2NhdG9yX21heF9zaXplIHdvcnRoIG9m IFdBTC4KKyAqLworc3RhdGljIHZvaWQKK0RvV2FsUHJlQWxsb2NhdGlvbih2b2lkKQoreworCWlu dAkJbWF4X3ByZWFsbG9jX3NlZ3M7CisKKwltYXhfcHJlYWxsb2Nfc2VncyA9IHdhbF9hbGxvY19t YXhfc2l6ZV9tYiAvICh3YWxfc2VnbWVudF9zaXplIC8gKDEwMjQgKiAxMDI0KSk7CisKKwl3aGls ZSAoIVNodXRkb3duUmVxdWVzdFBlbmRpbmcgJiYKKwkJICAgR2V0TnVtUHJlYWxsb2NhdGVkV2Fs U2VncygpIDwgbWF4X3ByZWFsbG9jX3NlZ3MpCisJeworCQljaGFyIHRtcHBhdGhbTUFYUEdQQVRI XTsKKworCQlzbnByaW50Zih0bXBwYXRoLCBNQVhQR1BBVEgsICIlcy9wcmVhbGxvY2F0ZWRfc2Vn bWVudHMveGxvZ3RlbXAiLCBYTE9HRElSKTsKKwkJQ3JlYXRlRW1wdHlXYWxTZWdtZW50KHRtcHBh dGgpOworCQlJbnN0YWxsUHJlYWxsb2NhdGVkV2FsU2VnKHRtcHBhdGgpOworCQllbG9nKERFQlVH MiwgInByZS1hbGxvY2F0ZWQgV0FMIHNlZ21lbnQiKTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVu ZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0Nv bmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisKKwkJCW1heF9wcmVhbGxvY19zZWdzID0gd2FsX2FsbG9j X21heF9zaXplX21iIC8gKHdhbF9zZWdtZW50X3NpemUgLyAoMTAyNCAqIDEwMjQpKTsKKwkJfQor CX0KK30KKworLyoKKyAqIFNjYW5Gb3JFeGlzdGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzCisgKgor ICogVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyB0aHJvdWdoIHBnX3dhbC9wcmVhbGxvY2F0ZWRfc2Vn bWVudHMgZm9yIGFueSBzZWdtZW50cworICogdGhhdCB3ZXJlIGxlZnQgb3ZlciBmcm9tIGEgcHJl dmlvdXMgV0FMIGFsbG9jYXRvciBwcm9jZXNzIGFuZCBzZXRzIHRoZQorICogdHJhY2tpbmcgdmFy aWFibGUgaW4gc2hhcmVkIG1lbW9yeSBhY2NvcmRpbmdseS4KKyAqLworc3RhdGljIHZvaWQKK1Nj YW5Gb3JFeGlzdGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzKHZvaWQpCit7CisJaW50IGkgPSAwOwor CisJLyoKKwkgKiBmc3luYyB0aGUgcHJlYWxsb2NhdGVkX3NlZ21lbnRzIGRpcmVjdG9yeSBpbiBj YXNlIGFueSByZW5hbWVzIGhhdmUgeWV0IHRvCisJICogYmUgZmx1c2hlZCB0byBkaXNrLiAgVGhp cyBpcyBwcm9iYWJseSBub3QgcmVhbGx5IG5lY2Vzc2FyeSwgYnV0IGl0IHNlZW1zCisJICogbmlj ZSB0byBrbm93IHRoYXQgYWxsIHRoZSBzZWdtZW50cyB3ZSBmaW5kIGFyZSByZWFsbHkgd2hlcmUg d2UgdGhpbmsgdGhleQorCSAqIGFyZS4KKwkgKi8KKwlmc3luY19mbmFtZV9leHQoWExPR0RJUiAi L3ByZWFsbG9jYXRlZF9zZWdtZW50cyIsIHRydWUsIGZhbHNlLCBGQVRBTCk7CisKKwkvKgorCSAq IEdhdGhlciBhbGwgdGhlIHByZWFsbG9jYXRlZCBzZWdtZW50cyB3ZSBjYW4gZmluZC4KKwkgKi8K Kwl3aGlsZSAodHJ1ZSkKKwl7CisJCUZJTEUgKmZkOworCQljaGFyIHBhdGhbTUFYUEdQQVRIXTsK KworCQlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy9wcmVhbGxvY2F0ZWRfc2VnbWVudHMv eGxvZ3RlbXAuJWQiLAorCQkJCSBYTE9HRElSLCBpKTsKKworCQlmZCA9IEFsbG9jYXRlRmlsZShw YXRoLCAiciIpOworCQlpZiAoZmQgIT0gTlVMTCkKKwkJeworCQkJRnJlZUZpbGUoZmQpOworCQkJ aSsrOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKKwkJCQllcmVw b3J0KEZBVEFMLAorCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCQkgZXJy bXNnKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwlTZXROdW1QcmVhbGxvY2F0ZWRXYWxTZWdzKGkpOworCWVsb2coREVCVUcy LCAiZm91bmQgJWQgcHJlYWxsb2NhdGVkIHNlZ21lbnRzIGR1cmluZyBzdGFydHVwIiwgaSk7Cit9 CisKK2Jvb2wKK1dhbFByZWFsbG9jYXRpb25FbmFibGVkKHZvaWQpCit7CisJcmV0dXJuIHdhbF9h bGxvY19tYXhfc2l6ZV9tYiA+PSB3YWxfc2VnbWVudF9zaXplIC8gKDEwMjQgKiAxMDI0KTsKK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwppbmRleCBlMDkxMDhkMGVjLi5jOWE5MWRj OTM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCkBAIC0xMzk5LDExICsxMzk5 LDEzIEBAIHNlbmREaXIoY29uc3QgY2hhciAqcGF0aCwgaW50IGJhc2VwYXRobGVuLCBib29sIHNp emVvbmx5LCBMaXN0ICp0YWJsZXNwYWNlcywKIAkJCXNpemUgKz0gX3RhcldyaXRlRGlyKHBhdGhi dWYsIGJhc2VwYXRobGVuLCAmc3RhdGJ1Ziwgc2l6ZW9ubHkpOwogCiAJCQkvKgotCQkJICogQWxz byBzZW5kIGFyY2hpdmVfc3RhdHVzIGRpcmVjdG9yeSAoYnkgaGFja2lzaGx5IHJldXNpbmcKLQkJ CSAqIHN0YXRidWYgZnJvbSBhYm92ZSAuLi4pLgorCQkJICogQWxzbyBzZW5kIGFyY2hpdmVfc3Rh dHVzIGFuZCBwcmVhbGxvY2F0ZWRfc2VnbWVudHMgKGJ5IGhhY2tpc2hseQorCQkJICogcmV1c2lu ZyBzdGF0YnVmIGZyb20gYWJvdmUgLi4uKS4KIAkJCSAqLwogCQkJc2l6ZSArPSBfdGFyV3JpdGVI ZWFkZXIoIi4vcGdfd2FsL2FyY2hpdmVfc3RhdHVzIiwgTlVMTCwgJnN0YXRidWYsCiAJCQkJCQkJ CQlzaXplb25seSk7CisJCQlzaXplICs9IF90YXJXcml0ZUhlYWRlcigiLi9wZ193YWwvcHJlYWxs b2NhdGVkX3NlZ21lbnRzIiwgTlVMTCwKKwkJCQkJCQkJCSZzdGF0YnVmLCBzaXplb25seSk7CiAK IAkJCWNvbnRpbnVlOwkJCS8qIGRvbid0IHJlY3Vyc2UgaW50byBwZ193YWwgKi8KIAkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvZmQuYwppbmRleCBhMzQwYTVmNmFmLi43YTJkZGRiNTlhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Zp bGUvZmQuYwpAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgPHN5cy9maWxlLmg+CiAjaW5jbHVk ZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdGlt ZS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmbmRlZiBXSU4zMgogI2luY2x1ZGUgPHN5 cy9tbWFuLmg+CkBAIC0zNzc5LDMgKzM3ODAsMTE3IEBAIHBnX3B3cml0ZXZfd2l0aF9yZXRyeShp bnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQp CiAKIAlyZXR1cm4gc3VtOwogfQorCisvKgorICogQ3JlYXRlRW1wdHlXYWxTZWdtZW50CisgKgor ICogQ3JlYXRlIGEgbmV3IGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIG5ldyBXQUwgc2VnbWVu dC4gIFRoZSBjYWxsZXIgaXMKKyAqIHJlc3BvbnNpYmxlIGZvciBpbnN0YWxsaW5nIHRoZSBuZXcg ZmlsZSBpbiBwZ193YWwuCisgKi8KK3ZvaWQKK0NyZWF0ZUVtcHR5V2FsU2VnbWVudChjb25zdCBj aGFyICpwYXRoKQoreworCVBHQWxpZ25lZFhMb2dCbG9jayB6YnVmZmVyOworCWludAkJCWZkOwor CWludAkJCXNhdmVfZXJybm87CisKKwl1bmxpbmsocGF0aCk7CisKKwkvKiBkbyBub3QgdXNlIGdl dF9zeW5jX2JpdCgpIGhlcmUgLS0tIHdhbnQgdG8gZnN5bmMgb25seSBhdCBlbmQgb2YgZmlsbCAq LworCWZkID0gQmFzaWNPcGVuRmlsZShwYXRoLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19FWENMIHwg UEdfQklOQVJZKTsKKwlpZiAoZmQgPCAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl X2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBc IiVzXCI6ICVtIiwgcGF0aCkpKTsKKworCW1lbXNldCh6YnVmZmVyLmRhdGEsIDAsIFhMT0dfQkxD S1NaKTsKKworCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1dBTF9JTklUX1dS SVRFKTsKKwlzYXZlX2Vycm5vID0gMDsKKwlpZiAod2FsX2luaXRfemVybykKKwl7CisJCXN0cnVj dCBpb3ZlYyBpb3ZbUEdfSU9WX01BWF07CisJCWludAkJCWJsb2NrczsKKworCQkvKgorCQkgKiBa ZXJvLWZpbGwgdGhlIGZpbGUuICBXaXRoIHRoaXMgc2V0dGluZywgd2UgZG8gdGhpcyB0aGUgaGFy ZCB3YXkgdG8KKwkJICogZW5zdXJlIHRoYXQgYWxsIHRoZSBmaWxlIHNwYWNlIGhhcyByZWFsbHkg YmVlbiBhbGxvY2F0ZWQuICBPbgorCQkgKiBwbGF0Zm9ybXMgdGhhdCBhbGxvdyAiaG9sZXMiIGlu IGZpbGVzLCBqdXN0IHNlZWtpbmcgdG8gdGhlIGVuZAorCQkgKiBkb2Vzbid0IGFsbG9jYXRlIGlu dGVybWVkaWF0ZSBzcGFjZS4gIFRoaXMgd2F5LCB3ZSBrbm93IHRoYXQgd2UKKwkJICogaGF2ZSBh bGwgdGhlIHNwYWNlIGFuZCAoYWZ0ZXIgdGhlIGZzeW5jIGJlbG93KSB0aGF0IGFsbCB0aGUKKwkJ ICogaW5kaXJlY3QgYmxvY2tzIGFyZSBkb3duIG9uIGRpc2suICBUaGVyZWZvcmUsIGZkYXRhc3lu YygyKSBvcgorCQkgKiBPX0RTWU5DIHdpbGwgYmUgc3VmZmljaWVudCB0byBzeW5jIGZ1dHVyZSB3 cml0ZXMgdG8gdGhlIGxvZyBmaWxlLgorCQkgKi8KKworCQkvKiBQcmVwYXJlIHRvIHdyaXRlIG91 dCBhIGxvdCBvZiBjb3BpZXMgb2Ygb3VyIHplcm8gYnVmZmVyIGF0IG9uY2UuICovCisJCWZvciAo aW50IGkgPSAwOyBpIDwgbGVuZ3Rob2YoaW92KTsgKytpKQorCQl7CisJCQlpb3ZbaV0uaW92X2Jh c2UgPSB6YnVmZmVyLmRhdGE7CisJCQlpb3ZbaV0uaW92X2xlbiA9IFhMT0dfQkxDS1NaOworCQl9 CisKKwkJLyogTG9vcCwgd3JpdGluZyBhcyBtYW55IGJsb2NrcyBhcyB3ZSBjYW4gZm9yIGVhY2gg c3lzdGVtIGNhbGwuICovCisJCWJsb2NrcyA9IHdhbF9zZWdtZW50X3NpemUgLyBYTE9HX0JMQ0tT WjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBibG9ja3M7KQorCQl7CisJCQlpbnQJCQlpb3ZjbnQg PSBNaW4oYmxvY2tzIC0gaSwgbGVuZ3Rob2YoaW92KSk7CisJCQlvZmZfdAkJb2Zmc2V0ID0gaSAq IFhMT0dfQkxDS1NaOworCisJCQlpZiAocGdfcHdyaXRldl93aXRoX3JldHJ5KGZkLCBpb3YsIGlv dmNudCwgb2Zmc2V0KSA8IDApCisJCQl7CisJCQkJc2F2ZV9lcnJubyA9IGVycm5vOworCQkJCWJy ZWFrOworCQkJfQorCisJCQlpICs9IGlvdmNudDsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKgor CQkgKiBPdGhlcndpc2UsIHNlZWtpbmcgdG8gdGhlIGVuZCBhbmQgd3JpdGluZyBhIHNvbGl0YXJ5 IGJ5dGUgaXMKKwkJICogZW5vdWdoLgorCQkgKi8KKwkJZXJybm8gPSAwOworCQlpZiAocGdfcHdy aXRlKGZkLCB6YnVmZmVyLmRhdGEsIDEsIHdhbF9zZWdtZW50X3NpemUgLSAxKSAhPSAxKQorCQl7 CisJCQkvKiBpZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgbm8gZGlzayBzcGFjZSAq LworCQkJc2F2ZV9lcnJubyA9IGVycm5vID8gZXJybm8gOiBFTk9TUEM7CisJCX0KKwl9CisJcGdz dGF0X3JlcG9ydF93YWl0X2VuZCgpOworCisJaWYgKHNhdmVfZXJybm8pCisJeworCQkvKgorCQkg KiBJZiB3ZSBmYWlsIHRvIG1ha2UgdGhlIGZpbGUsIGRlbGV0ZSBpdCB0byByZWxlYXNlIGRpc2sg c3BhY2UKKwkJICovCisJCXVubGluayhwYXRoKTsKKworCQljbG9zZShmZCk7CisKKwkJZXJybm8g PSBzYXZlX2Vycm5vOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVf YWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAl bSIsIHBhdGgpKSk7CisJfQorCisJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRf V0FMX0lOSVRfU1lOQyk7CisJaWYgKHBnX2ZzeW5jKGZkKSAhPSAwKQorCXsKKwkJaW50CQkJc2F2 ZV9lcnJubyA9IGVycm5vOworCisJCWNsb3NlKGZkKTsKKwkJZXJybm8gPSBzYXZlX2Vycm5vOwor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCSBl cnJtc2coImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworCX0KKwlw Z3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisKKwlpZiAoY2xvc2UoZmQpICE9IDApCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJIGVycm1zZygi Y291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0IGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dAppbmRleCA2YzdjZjZjMjk1Li4yMTJiZGE4ZTdk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0Cisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQKQEAgLTUzLDMgKzUz LDQgQEAgWGFjdFRydW5jYXRpb25Mb2NrCQkJCQk0NAogIyA0NSB3YXMgWGFjdFRydW5jYXRpb25M b2NrIHVudGlsIHJlbW92YWwgb2YgQmFja2VuZFJhbmRvbUxvY2sKIFdyYXBMaW1pdHNWYWN1dW1M b2NrCQkJCTQ2CiBOb3RpZnlRdWV1ZVRhaWxMb2NrCQkJCQk0NworV0FMUHJlYWxsb2NhdGlvbkxv Y2sJCQkJNDgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDI1NzVlYTFjYTAuLjU1NWY0ZWY1 M2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTgxLDYgKzE4MSw3IEBAIEluaXRQcm9j R2xvYmFsKHZvaWQpCiAJUHJvY0dsb2JhbC0+c3RhcnR1cFByb2NQaWQgPSAwOwogCVByb2NHbG9i YWwtPnN0YXJ0dXBCdWZmZXJQaW5XYWl0QnVmSWQgPSAtMTsKIAlQcm9jR2xvYmFsLT53YWx3cml0 ZXJMYXRjaCA9IE5VTEw7CisJUHJvY0dsb2JhbC0+d2FsQWxsb2NhdG9yTGF0Y2ggPSBOVUxMOwog CVByb2NHbG9iYWwtPmNoZWNrcG9pbnRlckxhdGNoID0gTlVMTDsKIAlwZ19hdG9taWNfaW5pdF91 MzIoJlByb2NHbG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsIElOVkFMSURfUEdQUk9DTk8pOwog CXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+Y2xvZ0dyb3VwRmlyc3QsIElOVkFMSURf UEdQUk9DTk8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGVm N2U2YmZiNzcuLmEzYzQzMjRjOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50LmMKQEAgLTI0OCw2ICsyNDgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfYWN0aXZpdHkoV2FpdEV2 ZW50QWN0aXZpdHkgdykKIAkJY2FzZSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTjoKIAkJCWV2 ZW50X25hbWUgPSAiV2FsV3JpdGVyTWFpbiI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5U X1dBTF9BTExPQ0FUT1JfTUFJTjoKKwkJCWV2ZW50X25hbWUgPSAiV2FsQWxsb2NhdG9yTWFpbiI7 CisJCQlicmVhazsKIAkJCS8qIG5vIGRlZmF1bHQgY2FzZSwgc28gdGhhdCBjb21waWxlciB3aWxs IHdhcm4gKi8KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCA4YjczODUwZDBk Li5iNjcxZGM2ZmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCkBAIC0yNjgsNiArMjY4 LDkgQEAgR2V0QmFja2VuZFR5cGVEZXNjKEJhY2tlbmRUeXBlIGJhY2tlbmRUeXBlKQogCQljYXNl IEJfV0FMX1dSSVRFUjoKIAkJCWJhY2tlbmREZXNjID0gIndhbHdyaXRlciI7CiAJCQlicmVhazsK KwkJY2FzZSBCX1dBTF9BTExPQ0FUT1I6CisJCQliYWNrZW5kRGVzYyA9ICJ3YWwgYWxsb2NhdG9y IjsKKwkJCWJyZWFrOwogCQljYXNlIEJfQVJDSElWRVI6CiAJCQliYWNrZW5kRGVzYyA9ICJhcmNo aXZlciI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDQ4MGU4Y2QxOTkuLjNjYzU4 NDhkOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIv d2FsX2FsbG9jYXRvci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsd3JpdGVyLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vcmVvcmRlcmJ1ZmZlci5oIgpAQCAtMjgxNiw2ICsyODE3LDE3IEBAIHN0YXRpYyBzdHJ1Y3Qg Y29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CiAKKwl7CisJCXsid2FsX2FsbG9jYXRvcl9tYXhfc2l6ZSIsIFBHQ19TSUdIVVAsIFdBTF9TRVRU SU5HUywKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbWF4aW11bSBhbW91bnQgb2YgV0FMIHRv IHByZS1hbGxvY2F0ZS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9NQgorCQl9LAorCQkmd2Fs X2FsbG9jX21heF9zaXplX21iLAorCQk2NCwgMCwgMTAyNDAwLAorCQlOVUxMLCBOVUxMLCBOVUxM CisJfSwKKwogCXsKIAkJeyJ3YWxfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBXQUxfU0VUVElO R1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG51bWJlciBvZiBkaXNrLXBhZ2UgYnVmZmVy cyBpbiBzaGFyZWQgbWVtb3J5IGZvciBXQUwuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYjY5NmFiZmU1NC4uZjEyMmFhY2JjOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMjIy LDYgKzIyMiw3IEBACiAJCQkJCSMgb2ZmLCBwZ2x6LCBsejQsIG9yIG9uCiAjd2FsX2luaXRfemVy byA9IG9uCQkJIyB6ZXJvLWZpbGwgbmV3IFdBTCBmaWxlcwogI3dhbF9yZWN5Y2xlID0gb24JCQkj IHJlY3ljbGUgV0FMIGZpbGVzCisjd2FsX2FsbG9jYXRvcl9tYXhfc2l6ZSA9IDY0TUIJCSMgYW1v dW50IG9mIFdBTCB0byBwcmUtYWxsb2NhdGUKICN3YWxfYnVmZmVycyA9IC0xCQkJIyBtaW4gMzJr QiwgLTEgc2V0cyBiYXNlZCBvbiBzaGFyZWRfYnVmZmVycwogCQkJCQkjIChjaGFuZ2UgcmVxdWly ZXMgcmVzdGFydCkKICN3YWxfd3JpdGVyX2RlbGF5ID0gMjAwbXMJCSMgMS0xMDAwMCBtaWxsaXNl Y29uZHMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMKaW5kZXggMDk0NWQ3MDA2MS4uZDljM2YzMDFmZiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTIw OCw2ICsyMDgsNyBAQCBzdGF0aWMgY2hhciAqZXh0cmFfb3B0aW9ucyA9ICIiOwogc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IHN1YmRpcnNbXSA9IHsKIAkiZ2xvYmFsIiwKIAkicGdfd2FsL2FyY2hp dmVfc3RhdHVzIiwKKwkicGdfd2FsL3ByZWFsbG9jYXRlZF9zZWdtZW50cyIsCiAJInBnX2NvbW1p dF90cyIsCiAJInBnX2R5bnNobWVtIiwKIAkicGdfbm90aWZ5IiwKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAv cGdfYmFzZWJhY2t1cC5jCmluZGV4IDhiYjBhY2Y0OTguLjE0MWRiMjJiZDUgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ19i YXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYwpAQCAtNjc4LDYgKzY3OCwyMiBAQCBTdGFydExvZ1N0 cmVhbWVyKGNoYXIgKnN0YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lkZW50aWZp ZXIpCiAJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjog JW0iLCBzdGF0dXNkaXIpOwogCQkJZXhpdCgxKTsKIAkJfQorCisJCS8qCisJCSAqIEFsc28gY3Jl YXRlIHBnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVudHMgaWYgbmVjZXNzYXJ5LgorCQkgKi8KKwkJ aWYgKFBRc2VydmVyVmVyc2lvbihjb25uKSA+PSAxNTAwMDApCisJCXsKKwkJCWNoYXIgcHJlYWxs b2NfZGlyW01BWFBHUEFUSF07CisKKwkJCXNucHJpbnRmKHByZWFsbG9jX2Rpciwgc2l6ZW9mKHBy ZWFsbG9jX2RpciksICIlcy9wZ193YWwvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIiwKKwkJCQkJIGJh c2VkaXIpOworCQkJaWYgKHBnX21rZGlyX3AocHJlYWxsb2NfZGlyLCBwZ19kaXJfY3JlYXRlX21v ZGUpICE9IDAgJiYgZXJybm8gIT0gRUVYSVNUKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHByZWFsbG9jX2Rpcik7CisJCQkJ ZXhpdCgxKTsKKwkJCX0KKwkJfQogCX0KIAogCS8qCkBAIC0xNjE0LDcgKzE2MzAsOCBAQCBSZWNl aXZlVGFyQW5kVW5wYWNrQ29weUNodW5rKHNpemVfdCByLCBjaGFyICpjb3B5YnVmLCB2b2lkICpj YWxsYmFja19kYXRhKQogCQkJCQkgKi8KIAkJCQkJaWYgKCEoKHBnX3N0cl9lbmRzd2l0aChzdGF0 ZS0+ZmlsZW5hbWUsICIvcGdfd2FsIikgfHwKIAkJCQkJCSAgIHBnX3N0cl9lbmRzd2l0aChzdGF0 ZS0+ZmlsZW5hbWUsICIvcGdfeGxvZyIpIHx8Ci0JCQkJCQkgICBwZ19zdHJfZW5kc3dpdGgoc3Rh dGUtPmZpbGVuYW1lLCAiL2FyY2hpdmVfc3RhdHVzIikpICYmCisJCQkJCQkgICBwZ19zdHJfZW5k c3dpdGgoc3RhdGUtPmZpbGVuYW1lLCAiL2FyY2hpdmVfc3RhdHVzIikgfHwKKwkJCQkJCSAgIHBn X3N0cl9lbmRzd2l0aChzdGF0ZS0+ZmlsZW5hbWUsICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIikp ICYmCiAJCQkJCQkgIGVycm5vID09IEVFWElTVCkpCiAJCQkJCXsKIAkJCQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCBiL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsCmluZGV4IDc0ZjhjMmM3MzkuLjYxY2Vk YTJjNmUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFj a3VwLnBsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBs CkBAIC0xMjAsMTAgKzEyMCwxMCBAQCBTS0lQOgogCQkiY2hlY2sgYmFja3VwIGRpciBwZXJtaXNz aW9ucyIpOwogfQogCi0jIE9ubHkgYXJjaGl2ZV9zdGF0dXMgZGlyZWN0b3J5IHNob3VsZCBiZSBj b3BpZWQgaW4gcGdfd2FsLy4KKyMgT25seSBhcmNoaXZlX3N0YXR1cyBhbmQgcHJlYWxsb2NhdGVk X3NlZ21lbnRzIGRpcmVjdG9yaWVzIHNob3VsZCBiZSBjb3BpZWQgaW4gcGdfd2FsLy4KIGlzX2Rl ZXBseSgKIAlbIHNvcnQoc2x1cnBfZGlyKCIkdGVtcGRpci9iYWNrdXAvcGdfd2FsLyIpKSBdLAot CVsgc29ydCBxdyguIC4uIGFyY2hpdmVfc3RhdHVzKSBdLAorCVsgc29ydCBxdyguIC4uIGFyY2hp dmVfc3RhdHVzIHByZWFsbG9jYXRlZF9zZWdtZW50cykgXSwKIAknbm8gV0FMIGZpbGVzIGNvcGll ZCcpOwogCiAjIENvbnRlbnRzIG9mIHRoZXNlIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgY29w aWVkLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jIGIvc3Jj L2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmluZGV4IDgwNWRhZmVmMDcuLmY1YTRkNzcw NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYworKysgYi9z cmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKQEAgLTg0LDYgKzg0LDcgQEAgc3RhdGlj IHZvaWQgUmV3cml0ZUNvbnRyb2xGaWxlKHZvaWQpOwogc3RhdGljIHZvaWQgRmluZEVuZE9mWExP Ryh2b2lkKTsKIHN0YXRpYyB2b2lkIEtpbGxFeGlzdGluZ1hMT0codm9pZCk7CiBzdGF0aWMgdm9p ZCBLaWxsRXhpc3RpbmdBcmNoaXZlU3RhdHVzKHZvaWQpOworc3RhdGljIHZvaWQgS2lsbEV4aXN0 aW5nUHJlYWxsb2NhdGVkU2VnbWVudHModm9pZCk7CiBzdGF0aWMgdm9pZCBXcml0ZUVtcHR5WExP Ryh2b2lkKTsKIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpOwogCkBAIC01MTMsNiArNTE0LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCVJld3JpdGVDb250cm9sRmlsZSgpOwogCUtp bGxFeGlzdGluZ1hMT0coKTsKIAlLaWxsRXhpc3RpbmdBcmNoaXZlU3RhdHVzKCk7CisJS2lsbEV4 aXN0aW5nUHJlYWxsb2NhdGVkU2VnbWVudHMoKTsKIAlXcml0ZUVtcHR5WExPRygpOwogCiAJcHJp bnRmKF8oIldyaXRlLWFoZWFkIGxvZyByZXNldFxuIikpOwpAQCAtMTA1Myw2ICsxMDU1LDUyIEBA IEtpbGxFeGlzdGluZ1hMT0codm9pZCkKIH0KIAogCisvKgorICogUmVtb3ZlIGV4aXN0aW5nIHBy ZWFsbG9jYXRlZCBzZWdtZW50cworICovCitzdGF0aWMgdm9pZAorS2lsbEV4aXN0aW5nUHJlYWxs b2NhdGVkU2VnbWVudHModm9pZCkKK3sKKyNkZWZpbmUgUFJFQUxMT0NTRUdESVIgWExPR0RJUiAi L3ByZWFsbG9jYXRlZF9zZWdtZW50cyIKKworCURJUgkJICAgKnhsZGlyOworCXN0cnVjdCBkaXJl bnQgKnhsZGU7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEggKyBzaXplb2YoUFJFQUxMT0NTRUdESVIp XTsKKworCXhsZGlyID0gb3BlbmRpcihQUkVBTExPQ1NFR0RJUik7CisJaWYgKHhsZGlyID09IE5V TEwpCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgUFJFQUxMT0NTRUdESVIpOworCQlleGl0KDEpOworCX0KKworCXdoaWxlIChlcnJubyA9 IDAsICh4bGRlID0gcmVhZGRpcih4bGRpcikpICE9IE5VTEwpCisJeworCQlpZiAoc3RybmNtcCh4 bGRlLT5kX25hbWUsICJ4bG9ndGVtcCIsIHN0cmxlbigieGxvZ3RlbXAiKSkgPT0gIDApCisJCXsK KwkJCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVzIiwgUFJFQUxMT0NTRUdESVIs IHhsZGUtPmRfbmFtZSk7CisJCQlpZiAodW5saW5rKHBhdGgpIDwgMCkKKwkJCXsKKwkJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBkZWxldGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CisJCQkJ ZXhpdCgxKTsKKwkJCX0KKwkJfQorCX0KKworCWlmIChlcnJubykKKwl7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBQUkVBTExPQ1NFR0RJUik7 CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGNsb3NlZGlyKHhsZGlyKSkKKwl7CisJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgUFJFQUxMT0NTRUdE SVIpOworCQlleGl0KDEpOworCX0KK30KKworCiAvKgogICogUmVtb3ZlIGV4aXN0aW5nIGFyY2hp dmUgc3RhdHVzIGZpbGVzCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNjZmNmNDNkNjIuLjU5YTE3ODA5 NzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2cuaApAQCAtMzY5LDYgKzM2OSwxMSBAQCBleHRlcm4gdm9pZCBYTG9nUmVx dWVzdFdhbFJlY2VpdmVyUmVwbHkodm9pZCk7CiBleHRlcm4gdm9pZCBhc3NpZ25fbWF4X3dhbF9z aXplKGludCBuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiB2b2lkIGFzc2lnbl9jaGVja3Bv aW50X2NvbXBsZXRpb25fdGFyZ2V0KGRvdWJsZSBuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIAorZXh0 ZXJuIGludCBHZXROdW1QcmVhbGxvY2F0ZWRXYWxTZWdzKHZvaWQpOworZXh0ZXJuIHZvaWQgSW5z dGFsbFByZWFsbG9jYXRlZFdhbFNlZyhjb25zdCBjaGFyICpwYXRoKTsKK2V4dGVybiB2b2lkIFNl dE51bVByZWFsbG9jYXRlZFdhbFNlZ3MoaW50IGkpOworZXh0ZXJuIHZvaWQgUmVxdWVzdFdhbFBy ZWFsbG9jYXRpb24odm9pZCk7CisKIC8qCiAgKiBSb3V0aW5lcyB0byBzdGFydCwgc3RvcCwgYW5k IGdldCBzdGF0dXMgb2YgYSBiYXNlIGJhY2t1cC4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA0ZGMzNDNjYmM1 Li5hNDU5OWRmN2ZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9z cmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMzMzLDYgKzMzMyw3IEBAIHR5cGVkZWYgZW51bSBC YWNrZW5kVHlwZQogCUJfV0FMX1JFQ0VJVkVSLAogCUJfV0FMX1NFTkRFUiwKIAlCX1dBTF9XUklU RVIsCisJQl9XQUxfQUxMT0NBVE9SLAogCUJfQVJDSElWRVIsCiAJQl9TVEFUU19DT0xMRUNUT1Is CiAJQl9MT0dHRVIsCkBAIC00MzUsNiArNDM2LDcgQEAgdHlwZWRlZiBlbnVtCiAJQ2hlY2twb2lu dGVyUHJvY2VzcywKIAlXYWxXcml0ZXJQcm9jZXNzLAogCVdhbFJlY2VpdmVyUHJvY2VzcywKKwlX YWxBbGxvY2F0b3JQcm9jZXNzLAogCiAJTlVNX0FVWFBST0NUWVBFUwkJCS8qIE11c3QgYmUgbGFz dCEgKi8KIH0gQXV4UHJvY1R5cGU7CkBAIC00NDgsNiArNDUwLDcgQEAgZXh0ZXJuIEF1eFByb2NU eXBlIE15QXV4UHJvY1R5cGU7CiAjZGVmaW5lIEFtQ2hlY2twb2ludGVyUHJvY2VzcygpCQkoTXlB dXhQcm9jVHlwZSA9PSBDaGVja3BvaW50ZXJQcm9jZXNzKQogI2RlZmluZSBBbVdhbFdyaXRlclBy b2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsV3JpdGVyUHJvY2VzcykKICNkZWZpbmUgQW1X YWxSZWNlaXZlclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsUmVjZWl2ZXJQcm9jZXNz KQorI2RlZmluZSBBbVdhbEFsbG9jYXRvclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2Fs QWxsb2NhdG9yUHJvY2VzcykKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2FsX2FsbG9jYXRvci5oIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci93YWxfYWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYzdlMTM5MjI2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvd2FsX2FsbG9jYXRvci5oCkBAIC0wLDAgKzEsMjEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHdhbF9hbGxvY2F0b3IuaAorICoJICBFeHBvcnRzIGZyb20gcG9zdG1hc3Rlci93YWxf YWxsb2NhdG9yLmMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci93YWxfYWxsb2NhdG9yLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBfV0FMX0FMTE9DQVRPUl9ICisjZGVmaW5lIF9XQUxfQUxMT0NBVE9SX0gKKworLyogR1VD IG9wdGlvbnMgKi8KK2V4dGVybiBpbnQgIHdhbF9hbGxvY19tYXhfc2l6ZV9tYjsKKworZXh0ZXJu IHZvaWQgV2FsQWxsb2NhdG9yTWFpbih2b2lkKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKK2V4 dGVybiBib29sIFdhbFByZWFsbG9jYXRpb25FbmFibGVkKHZvaWQpOworCisjZW5kaWYJCQkJCQkJ LyogX1dBTF9BTExPQ0FUT1JfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9m ZC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCmluZGV4IDViM2MyODBkZDcuLjAwOGE1NGYy ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL2ZkLmgKQEAgLTE3Myw2ICsxNzMsNyBAQCBleHRlcm4gaW50CWR1cmFibGVfdW5s aW5rKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgbG9nbGV2ZWwpOwogZXh0ZXJuIGludAlkdXJhYmxl X3JlbmFtZV9leGNsKGNvbnN0IGNoYXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUsIGlu dCBsb2dsZXZlbCk7CiBleHRlcm4gdm9pZCBTeW5jRGF0YURpcmVjdG9yeSh2b2lkKTsKIGV4dGVy biBpbnQJZGF0YV9zeW5jX2VsZXZlbChpbnQgZWxldmVsKTsKK2V4dGVybiB2b2lkIENyZWF0ZUVt cHR5V2FsU2VnbWVudChjb25zdCBjaGFyICpwYXRoKTsKIAogLyogRmlsZW5hbWUgY29tcG9uZW50 cyAqLwogI2RlZmluZSBQR19URU1QX0ZJTEVTX0RJUiAicGdzcWxfdG1wIgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApp bmRleCBiZTY3ZDhhODYxLi44ZDBjYWUzN2IyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtMzQ4LDYgKzM0 OCw4IEBAIHR5cGVkZWYgc3RydWN0IFBST0NfSERSCiAJcGdfYXRvbWljX3VpbnQzMiBjbG9nR3Jv dXBGaXJzdDsKIAkvKiBXQUxXcml0ZXIgcHJvY2VzcydzIGxhdGNoICovCiAJTGF0Y2gJICAgKndh bHdyaXRlckxhdGNoOworCS8qIFdBTCBBbGxvY2F0b3IgcHJvY2VzcydzIGxhdGNoICovCisJTGF0 Y2gJICAgKndhbEFsbG9jYXRvckxhdGNoOwogCS8qIENoZWNrcG9pbnRlciBwcm9jZXNzJ3MgbGF0 Y2ggKi8KIAlMYXRjaAkgICAqY2hlY2twb2ludGVyTGF0Y2g7CiAJLyogQ3VycmVudCBzaGFyZWQg ZXN0aW1hdGUgb2YgYXBwcm9wcmlhdGUgc3BpbnNfcGVyX2RlbGF5IHZhbHVlICovCkBAIC0zNzAs MTEgKzM3MiwxMiBAQCBleHRlcm4gUEdQUk9DICpQcmVwYXJlZFhhY3RQcm9jczsKICAqIFdlIHNl dCBhc2lkZSBzb21lIGV4dHJhIFBHUFJPQyBzdHJ1Y3R1cmVzIGZvciBhdXhpbGlhcnkgcHJvY2Vz c2VzLAogICogaWUgdGhpbmdzIHRoYXQgYXJlbid0IGZ1bGwtZmxlZGdlZCBiYWNrZW5kcyBidXQg bmVlZCBzaG1lbSBhY2Nlc3MuCiAgKgotICogQmFja2dyb3VuZCB3cml0ZXIsIGNoZWNrcG9pbnRl ciwgV0FMIHdyaXRlciBhbmQgYXJjaGl2ZXIgcnVuIGR1cmluZyBub3JtYWwKLSAqIG9wZXJhdGlv bi4gIFN0YXJ0dXAgcHJvY2VzcyBhbmQgV0FMIHJlY2VpdmVyIGFsc28gY29uc3VtZSAyIHNsb3Rz LCBidXQgV0FMCi0gKiB3cml0ZXIgaXMgbGF1bmNoZWQgb25seSBhZnRlciBzdGFydHVwIGhhcyBl eGl0ZWQsIHNvIHdlIG9ubHkgbmVlZCA1IHNsb3RzLgorICogQmFja2dyb3VuZCB3cml0ZXIsIGNo ZWNrcG9pbnRlciwgV0FMIHdyaXRlciwgYXJjaGl2ZXIsIGFuZCBXQUwgYWxsb2NhdG9yIHJ1bgor ICogZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uICBTdGFydHVwIHByb2Nlc3MgYW5kIFdBTCByZWNl aXZlciBhbHNvIGNvbnN1bWUgMgorICogc2xvdHMsIGJ1dCBXQUwgd3JpdGVyIGlzIGxhdW5jaGVk IG9ubHkgYWZ0ZXIgc3RhcnR1cCBoYXMgZXhpdGVkLCBzbyB3ZSBvbmx5CisgKiBuZWVkIDYgc2xv dHMuCiAgKi8KLSNkZWZpbmUgTlVNX0FVWElMSUFSWV9QUk9DUwkJNQorI2RlZmluZSBOVU1fQVVY SUxJQVJZX1BST0NTCQk2CiAKIC8qIGNvbmZpZ3VyYWJsZSBvcHRpb25zICovCiBleHRlcm4gUEdE TExJTVBPUlQgaW50IERlYWRsb2NrVGltZW91dDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2 MDA3ODI3YjQ0Li4xOGEwNWY4ZDU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0 X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Nyw3ICs0 Nyw4IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJV0FJVF9F VkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKIAlXQUlUX0VWRU5UX1dBTF9TRU5ERVJfTUFJTiwKLQlX QUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTgorCVdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOLAor CVdBSVRfRVZFTlRfV0FMX0FMTE9DQVRPUl9NQUlOCiB9IFdhaXRFdmVudEFjdGl2aXR5OwogCiAv KiAtLS0tLS0tLS0tCi0tIAoyLjE2LjYKCg== --_002_5A67D2E7AA1B4020AB08CD7C763DAA6Aamazoncom_--